Skip to content

Commit 13b6435

Browse files
authored
Rework ansible (#4)
* relocate params * reformat * Update documenation --------- Signed-off-by: Marc Schöchlin <[email protected]>
1 parent 91cccd9 commit 13b6435

File tree

8 files changed

+157
-71
lines changed

8 files changed

+157
-71
lines changed

README.md

Lines changed: 120 additions & 58 deletions
Large diffs are not rendered by default.

profiles/default.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
---
22
admin_domain_password: "yolobanana"
33
admin_vm_ssh_keypair_name: "my_ssh_public_key"
4-
admin_vm_ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k [email protected]"
4+
admin_vm_ssh_key: |
5+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k [email protected]
6+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyw2z/C+5YugYNXQXbeop0AcOjmWZCvcmci/vOAboO8 [email protected]
7+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsMKOr3TEolg4+4hny/zBe4kLcjzkm+vkc932498fVD [email protected]
8+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILa+/eL5ZM3AWKgm1h4/EFU9hOaSKqaoldHmNeg0qG46 [email protected]
9+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC2wE2xiuO+i3qmDvu8kCCKX7U7H1diOICbWmR2UrKIxqWgcfWMQsT3WclotJKuVJuKIWyFD6ZNwwLuvC3RxVSqhCiWjqxg3jzJBj7/C1O3IYyLGTUl/x7Cky530lf/aj4wrwt3Ketk/4QNwgget2nCvOy0S2NDCJ3rL6oIUjdJekvRrFf9IbWeX8fqYYCoh1cYJWto1XYPnhMDAB/lqtjN1ssurLSKoJg/bUT7q/KkIvvA/BOR2NMqS0aGx+bKhdkeB22V/t75Ct8ymoCYk9+MTC9i/QX20Fi7835/W7Gl18J8NiO9ebaWyYbsxZ5klWXQa5EiLLBDZ82OR88G+0FjXp1Z3VG6FcpdYpW7sxrT21HEvWOnQACZCdlzwyBJ31id/LjDRhJU6BmZm0Sa9EOJNL8XVOUUzuoa0XL1mIVTsmLpUwqLSfw6Ditb+q4afFi0iYMe3JKOt+JmftvBgeQCjNUsCzk+Ny2j6dZKv2aeF5LOQZGRM3HzG39Gkir3q1zdWmCl4lc3QQBfr5ZcdAp+wQMFSgJAudKffO9kdDVNoyjgih7rD3E+JjJdhY9//WQEEBm2vfEqm7qqEQUAELd0JBCivJmOhUVH0rGbTrnkTBtLR4Au40W5aYaNQJ7+U3hTRrvpycSC1pUU3Wq3OXJd2FRDgKQJljQcpBw4V9j8GQ== Operator
510
admin_vm_password: "yolobanana"
611
vm_flavor: "SCS-1L-1"
712
vm_image: "Ubuntu 24.04"

profiles/smoketest.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
admin_domain_password: "yolobanana"
33
admin_vm_ssh_key: |
44
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k [email protected]
5+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyw2z/C+5YugYNXQXbeop0AcOjmWZCvcmci/vOAboO8 [email protected]
6+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsMKOr3TEolg4+4hny/zBe4kLcjzkm+vkc932498fVD [email protected]
7+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILa+/eL5ZM3AWKgm1h4/EFU9hOaSKqaoldHmNeg0qG46 [email protected]
8+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC2wE2xiuO+i3qmDvu8kCCKX7U7H1diOICbWmR2UrKIxqWgcfWMQsT3WclotJKuVJuKIWyFD6ZNwwLuvC3RxVSqhCiWjqxg3jzJBj7/C1O3IYyLGTUl/x7Cky530lf/aj4wrwt3Ketk/4QNwgget2nCvOy0S2NDCJ3rL6oIUjdJekvRrFf9IbWeX8fqYYCoh1cYJWto1XYPnhMDAB/lqtjN1ssurLSKoJg/bUT7q/KkIvvA/BOR2NMqS0aGx+bKhdkeB22V/t75Ct8ymoCYk9+MTC9i/QX20Fi7835/W7Gl18J8NiO9ebaWyYbsxZ5klWXQa5EiLLBDZ82OR88G+0FjXp1Z3VG6FcpdYpW7sxrT21HEvWOnQACZCdlzwyBJ31id/LjDRhJU6BmZm0Sa9EOJNL8XVOUUzuoa0XL1mIVTsmLpUwqLSfw6Ditb+q4afFi0iYMe3JKOt+JmftvBgeQCjNUsCzk+Ny2j6dZKv2aeF5LOQZGRM3HzG39Gkir3q1zdWmCl4lc3QQBfr5ZcdAp+wQMFSgJAudKffO9kdDVNoyjgih7rD3E+JjJdhY9//WQEEBm2vfEqm7qqEQUAELd0JBCivJmOhUVH0rGbTrnkTBtLR4Au40W5aYaNQJ7+U3hTRrvpycSC1pUU3Wq3OXJd2FRDgKQJljQcpBw4V9j8GQ== Operator
59
admin_vm_password: "yolobanana"
610
vm_flavor: "SCS-2V-4"
711
vm_image: "Ubuntu 24.04"

profiles/stresstest.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
admin_domain_password: "yolobanana"
33
admin_vm_ssh_key: |
44
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k [email protected]
5+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyw2z/C+5YugYNXQXbeop0AcOjmWZCvcmci/vOAboO8 [email protected]
6+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsMKOr3TEolg4+4hny/zBe4kLcjzkm+vkc932498fVD [email protected]
7+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILa+/eL5ZM3AWKgm1h4/EFU9hOaSKqaoldHmNeg0qG46 [email protected]
8+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC2wE2xiuO+i3qmDvu8kCCKX7U7H1diOICbWmR2UrKIxqWgcfWMQsT3WclotJKuVJuKIWyFD6ZNwwLuvC3RxVSqhCiWjqxg3jzJBj7/C1O3IYyLGTUl/x7Cky530lf/aj4wrwt3Ketk/4QNwgget2nCvOy0S2NDCJ3rL6oIUjdJekvRrFf9IbWeX8fqYYCoh1cYJWto1XYPnhMDAB/lqtjN1ssurLSKoJg/bUT7q/KkIvvA/BOR2NMqS0aGx+bKhdkeB22V/t75Ct8ymoCYk9+MTC9i/QX20Fi7835/W7Gl18J8NiO9ebaWyYbsxZ5klWXQa5EiLLBDZ82OR88G+0FjXp1Z3VG6FcpdYpW7sxrT21HEvWOnQACZCdlzwyBJ31id/LjDRhJU6BmZm0Sa9EOJNL8XVOUUzuoa0XL1mIVTsmLpUwqLSfw6Ditb+q4afFi0iYMe3JKOt+JmftvBgeQCjNUsCzk+Ny2j6dZKv2aeF5LOQZGRM3HzG39Gkir3q1zdWmCl4lc3QQBfr5ZcdAp+wQMFSgJAudKffO9kdDVNoyjgih7rD3E+JjJdhY9//WQEEBm2vfEqm7qqEQUAELd0JBCivJmOhUVH0rGbTrnkTBtLR4Au40W5aYaNQJ7+U3hTRrvpycSC1pUU3Wq3OXJd2FRDgKQJljQcpBw4V9j8GQ== Operator
59
admin_vm_password: "yolobanana"
610
vm_flavor: "SCS-2V-4"
711
vm_image: "Ubuntu 24.04"

src/openstack_workload_generator/__main__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@
4444
help="Dump the created servers as an ansible inventory to the specified directory, "
4545
"adds a ssh proxy jump for the hosts without a floating ip")
4646

47+
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+
51+
4752
parser.add_argument('--config', type=str,
4853
default="default.yaml",
4954
help='The config file for environment creation, define a path to the'
@@ -113,7 +118,7 @@ def establish_connection():
113118
for workload_domain in workload_domains.values():
114119
for workload_project in workload_domain.get_projects(args.create_projects):
115120
if args.create_machines:
116-
workload_project.get_and_create_machines(args.create_machines)
121+
workload_project.get_and_create_machines(args.create_machines, args.wait_for_machines)
117122
if args.ansible_inventory:
118123
workload_project.dump_inventory_hosts(args.ansible_inventory)
119124
elif args.delete_machines:

src/openstack_workload_generator/entities/helpers.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,10 @@ def check_config(cls):
9797
def show_effective_config():
9898
Config.check_config(Config)
9999
LOGGER.info(
100-
"The effective configuration from %s : \n>>>\n%s\n<<<" % (
101-
Config._file, pformat(Config._config, indent=2, compact=False))
100+
"The effective configuration from %s : \n>>>\n---\n%s\n<<<" % (
101+
Config._file,
102+
yaml.dump(Config._config, default_flow_style=False, width=10000),
103+
)
102104
)
103105

104106
@staticmethod

src/openstack_workload_generator/entities/machine.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def wait_for_delete(self):
5353
self.conn.compute.wait_for_delete(self.obj)
5454
LOGGER.warning(f"Machine {self.machine_name} in {self.obj.project_id} is deleted now")
5555

56-
def create_or_get_server(self, network: Network):
56+
def create_or_get_server(self, network: Network, wait_for_machine: bool):
5757

5858
if self.obj:
5959
LOGGER.info(
@@ -82,6 +82,8 @@ def create_or_get_server(self, network: Network):
8282
],
8383
key_name=Config.get_admin_vm_ssh_keypair_name(),
8484
)
85+
if wait_for_machine:
86+
self.wait_for_server()
8587
if self.obj:
8688
LOGGER.info(f"Created server {self.obj.name}/{self.obj.id} in {ProjectCache.ident_by_id(network.project_id)}")
8789
else:

src/openstack_workload_generator/entities/project.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ def delete_project(self):
215215
self._admin_conn.network.delete_security_group(sg.id)
216216
##########################################################################################
217217

218-
def get_and_create_machines(self, machines: list[str]):
218+
def get_and_create_machines(self, machines: list[str], wait_for_machines: bool):
219219
if "none" in machines:
220220
LOGGER.warning("Not creating a virtual machine, because 'none' was in the list")
221221
self.close_connection()
@@ -231,7 +231,7 @@ def get_and_create_machines(self, machines: list[str]):
231231
if self.workload_network is None or self.workload_network.obj_network is None:
232232
raise RuntimeError("No Workload network object")
233233

234-
machine.create_or_get_server(self.workload_network.obj_network)
234+
machine.create_or_get_server(self.workload_network.obj_network, wait_for_machines)
235235

236236
if machine.floating_ip:
237237
self.ssh_proxy_jump = machine.floating_ip
@@ -252,20 +252,22 @@ def dump_inventory_hosts(self, directory_location: str):
252252

253253
workload_machine.update_assigned_ips()
254254
data = {
255-
"id": workload_machine.obj.id,
256-
"status": workload_machine.obj.status,
257-
"hypervisor": workload_machine.obj['OS-EXT-SRV-ATTR:hypervisor_hostname'],
255+
"openstack": {
256+
"machine_id": workload_machine.obj.id,
257+
"machine_status": workload_machine.obj.status,
258+
"hypervisor": workload_machine.obj['OS-EXT-SRV-ATTR:hypervisor_hostname'],
259+
"domain": self.domain.name,
260+
"project": workload_machine.project.name,
261+
},
258262
"hostname": workload_machine.machine_name,
259-
"project": workload_machine.project.name,
260-
"domain": self.domain.name,
261263
"ansible_host": workload_machine.floating_ip or workload_machine.internal_ip,
262264
"internal_ip": workload_machine.internal_ip,
263265
}
264266

265267
if self.ssh_proxy_jump and not workload_machine.floating_ip:
266268
data["ansible_ssh_common_args"] = f"-o ProxyJump={self.ssh_proxy_jump} "
267269

268-
base_dir = f"{directory_location}/{data['domain']}-{data['project']}-{data['hostname']}"
270+
base_dir = f"{directory_location}/{data['openstack']['domain']}-{data['openstack']['project']}-{data['hostname']}"
269271
filename = f'{base_dir}/data.yml'
270272
os.makedirs(base_dir, exist_ok=True)
271273
with open(filename, 'w') as file:

0 commit comments

Comments
 (0)