From 3c58b24cab988273d328a438bd5b93ebd63d9d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Sch=C3=B6chlin?= Date: Mon, 2 Dec 2024 10:46:45 +0100 Subject: [PATCH 1/3] fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc Schöchlin --- src/openstack_workload_generator/entities/network.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openstack_workload_generator/entities/network.py b/src/openstack_workload_generator/entities/network.py index 9abd801..cf0727a 100644 --- a/src/openstack_workload_generator/entities/network.py +++ b/src/openstack_workload_generator/entities/network.py @@ -83,9 +83,9 @@ def create_and_get_network_setup(self) -> Network: return network def create_and_get_router(self, subnet: Subnet) -> Router | None: - public_network = self.conn.network.find_network('public') + public_network = self.conn.network.find_network(Config.get_public_network()) if not public_network: - LOGGER.error("There is no 'public' network") + LOGGER.error(f"There is no '{Config.get_public_network()}' network, not adding floating ips") return None if self.obj_router: From ef9dc1e7be3c5063da621e483ed3901898b99d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Sch=C3=B6chlin?= Date: Mon, 2 Dec 2024 11:11:27 +0100 Subject: [PATCH 2/3] change default mtu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc Schöchlin --- src/openstack_workload_generator/entities/network.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openstack_workload_generator/entities/network.py b/src/openstack_workload_generator/entities/network.py index cf0727a..75e2470 100644 --- a/src/openstack_workload_generator/entities/network.py +++ b/src/openstack_workload_generator/entities/network.py @@ -115,7 +115,7 @@ def create_and_get_network(self) -> Network: self.obj_network = self.conn.network.create_network( name=self.network_name, project_id=self.project.id, - mtu=1342 + mtu=1500, ) if not self.obj_network: raise RuntimeError(f"Unable to create network {self.network_name}") From 5ecd99182e6e5f8420073c6181385224c11c4d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Sch=C3=B6chlin?= Date: Mon, 2 Dec 2024 13:35:50 +0100 Subject: [PATCH 3/3] add MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc Schöchlin --- src/openstack_workload_generator/__main__.py | 5 ++--- src/openstack_workload_generator/entities/domain.py | 4 ++-- src/openstack_workload_generator/entities/helpers.py | 6 +++++- src/openstack_workload_generator/entities/network.py | 2 +- src/openstack_workload_generator/entities/project.py | 9 +++++++-- 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/openstack_workload_generator/__main__.py b/src/openstack_workload_generator/__main__.py index 7d50d26..81b97c6 100644 --- a/src/openstack_workload_generator/__main__.py +++ b/src/openstack_workload_generator/__main__.py @@ -45,9 +45,8 @@ "adds a ssh proxy jump for the hosts without a floating ip") parser.add_argument('--wait_for_machines', action="store_true", - help="Wait for every machine to be created " - "(normally the provisioning only waits for machines which use floating ips)") - + help="Wait for every machine to be created " + "(normally the provisioning only waits for machines which use floating ips)") parser.add_argument('--config', type=str, default="default.yaml", diff --git a/src/openstack_workload_generator/entities/domain.py b/src/openstack_workload_generator/entities/domain.py index addb4a2..641e1ef 100644 --- a/src/openstack_workload_generator/entities/domain.py +++ b/src/openstack_workload_generator/entities/domain.py @@ -98,6 +98,6 @@ def create_and_get_projects(self, create_projects: list[str]): self.workload_projects[project_name] = project project.close_connection() - def create_and_get_machines(self, machines: list[str]): + def create_and_get_machines(self, machines: list[str], wait_for_machines: bool): for project in self.workload_projects.values(): - project.get_and_create_machines(machines) + project.get_and_create_machines(machines, wait_for_machines) diff --git a/src/openstack_workload_generator/entities/helpers.py b/src/openstack_workload_generator/entities/helpers.py index e373a15..05f690a 100644 --- a/src/openstack_workload_generator/entities/helpers.py +++ b/src/openstack_workload_generator/entities/helpers.py @@ -2,7 +2,6 @@ import logging import os import sys -from pprint import pformat from typing import Tuple import coloredlogs @@ -23,6 +22,7 @@ class Config: 'admin_vm_ssh_keypair_name': 'my_ssh_public_key', 'project_ipv4_subnet': '192.168.200.0/24', 'public_network': "public", + 'network_mtu': '1500', 'number_of_floating_ips_per_project': "1", 'vm_flavor': 'SCS-1L-1', 'vm_image': 'Ubuntu 24.04', @@ -171,6 +171,10 @@ def quota(quota_name: str, quota_category: str, default_value: int) -> int: else: return default_value + @staticmethod + def get_network_mtu(): + return int(Config.get("network_mtu", regex=r"\d+")) + class DomainCache: _domains: dict[str, str] = dict() diff --git a/src/openstack_workload_generator/entities/network.py b/src/openstack_workload_generator/entities/network.py index 75e2470..5dabc34 100644 --- a/src/openstack_workload_generator/entities/network.py +++ b/src/openstack_workload_generator/entities/network.py @@ -115,7 +115,7 @@ def create_and_get_network(self) -> Network: self.obj_network = self.conn.network.create_network( name=self.network_name, project_id=self.project.id, - mtu=1500, + mtu=Config.get_network_mtu(), ) if not self.obj_network: raise RuntimeError(f"Unable to create network {self.network_name}") diff --git a/src/openstack_workload_generator/entities/project.py b/src/openstack_workload_generator/entities/project.py index 73b7da5..84165ba 100644 --- a/src/openstack_workload_generator/entities/project.py +++ b/src/openstack_workload_generator/entities/project.py @@ -251,7 +251,11 @@ def dump_inventory_hosts(self, directory_location: str): raise RuntimeError(f"Invalid reference to server for {workload_machine.machine_name}") workload_machine.update_assigned_ips() - data = { + + if not workload_machine.internal_ip: + raise RuntimeError(f"Unable to get associated ip address for {workload_machine.machine_name}") + + data: dict[str, str | dict[str, str]] = { "openstack": { "machine_id": workload_machine.obj.id, "machine_status": workload_machine.obj.status, @@ -267,7 +271,8 @@ def dump_inventory_hosts(self, directory_location: str): if self.ssh_proxy_jump and not workload_machine.floating_ip: data["ansible_ssh_common_args"] = f"-o ProxyJump={self.ssh_proxy_jump} " - base_dir = f"{directory_location}/{data['openstack']['domain']}-{data['openstack']['project']}-{data['hostname']}" + base_dir = f"{directory_location}/{self.domain.name}-{workload_machine.project.name}-{workload_machine.machine_name}" + filename = f'{base_dir}/data.yml' os.makedirs(base_dir, exist_ok=True) with open(filename, 'w') as file: