Skip to content

Commit e413b27

Browse files
authored
Dynamic public network (#5)
*make mtu configurable * make provider network configurable --------- Signed-off-by: Marc Schöchlin <[email protected]>
1 parent 13b6435 commit e413b27

File tree

5 files changed

+19
-11
lines changed

5 files changed

+19
-11
lines changed

src/openstack_workload_generator/__main__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,8 @@
4545
"adds a ssh proxy jump for the hosts without a floating ip")
4646

4747
parser.add_argument('--wait_for_machines', action="store_true",
48-
help="Wait for every machine to be created "
49-
"(normally the provisioning only waits for machines which use floating ips)")
50-
48+
help="Wait for every machine to be created "
49+
"(normally the provisioning only waits for machines which use floating ips)")
5150

5251
parser.add_argument('--config', type=str,
5352
default="default.yaml",

src/openstack_workload_generator/entities/domain.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,6 @@ def create_and_get_projects(self, create_projects: list[str]):
9898
self.workload_projects[project_name] = project
9999
project.close_connection()
100100

101-
def create_and_get_machines(self, machines: list[str]):
101+
def create_and_get_machines(self, machines: list[str], wait_for_machines: bool):
102102
for project in self.workload_projects.values():
103-
project.get_and_create_machines(machines)
103+
project.get_and_create_machines(machines, wait_for_machines)

src/openstack_workload_generator/entities/helpers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import logging
33
import os
44
import sys
5-
from pprint import pformat
65
from typing import Tuple
76
import coloredlogs
87

@@ -23,6 +22,7 @@ class Config:
2322
'admin_vm_ssh_keypair_name': 'my_ssh_public_key',
2423
'project_ipv4_subnet': '192.168.200.0/24',
2524
'public_network': "public",
25+
'network_mtu': '1500',
2626
'number_of_floating_ips_per_project': "1",
2727
'vm_flavor': 'SCS-1L-1',
2828
'vm_image': 'Ubuntu 24.04',
@@ -171,6 +171,10 @@ def quota(quota_name: str, quota_category: str, default_value: int) -> int:
171171
else:
172172
return default_value
173173

174+
@staticmethod
175+
def get_network_mtu():
176+
return int(Config.get("network_mtu", regex=r"\d+"))
177+
174178

175179
class DomainCache:
176180
_domains: dict[str, str] = dict()

src/openstack_workload_generator/entities/network.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ def create_and_get_network_setup(self) -> Network:
8383
return network
8484

8585
def create_and_get_router(self, subnet: Subnet) -> Router | None:
86-
public_network = self.conn.network.find_network('public')
86+
public_network = self.conn.network.find_network(Config.get_public_network())
8787
if not public_network:
88-
LOGGER.error("There is no 'public' network")
88+
LOGGER.error(f"There is no '{Config.get_public_network()}' network, not adding floating ips")
8989
return None
9090

9191
if self.obj_router:
@@ -115,7 +115,7 @@ def create_and_get_network(self) -> Network:
115115
self.obj_network = self.conn.network.create_network(
116116
name=self.network_name,
117117
project_id=self.project.id,
118-
mtu=1342
118+
mtu=Config.get_network_mtu(),
119119
)
120120
if not self.obj_network:
121121
raise RuntimeError(f"Unable to create network {self.network_name}")

src/openstack_workload_generator/entities/project.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,11 @@ def dump_inventory_hosts(self, directory_location: str):
251251
raise RuntimeError(f"Invalid reference to server for {workload_machine.machine_name}")
252252

253253
workload_machine.update_assigned_ips()
254-
data = {
254+
255+
if not workload_machine.internal_ip:
256+
raise RuntimeError(f"Unable to get associated ip address for {workload_machine.machine_name}")
257+
258+
data: dict[str, str | dict[str, str]] = {
255259
"openstack": {
256260
"machine_id": workload_machine.obj.id,
257261
"machine_status": workload_machine.obj.status,
@@ -267,7 +271,8 @@ def dump_inventory_hosts(self, directory_location: str):
267271
if self.ssh_proxy_jump and not workload_machine.floating_ip:
268272
data["ansible_ssh_common_args"] = f"-o ProxyJump={self.ssh_proxy_jump} "
269273

270-
base_dir = f"{directory_location}/{data['openstack']['domain']}-{data['openstack']['project']}-{data['hostname']}"
274+
base_dir = f"{directory_location}/{self.domain.name}-{workload_machine.project.name}-{workload_machine.machine_name}"
275+
271276
filename = f'{base_dir}/data.yml'
272277
os.makedirs(base_dir, exist_ok=True)
273278
with open(filename, 'w') as file:

0 commit comments

Comments
 (0)