Skip to content

Commit df82639

Browse files
scoopexMarc Schöchlindependabot[bot]garloffharmathy
authored
Bugfixes and clouds.yaml handling (#17)
* Health mon profile (#11) * add a health mon profile --- Signed-off-by: Marc Schöchlin <[email protected]> Signed-off-by: Marc Schöchlin <[email protected]> Co-authored-by: Marc Schöchlin <[email protected]> Signed-off-by: Marc Schöchlin <[email protected]> * Bump jinja2 from 3.1.4 to 3.1.6 in the pip group across 1 directory (#12) Bumps the pip group with 1 update in the / directory: [jinja2](https://github.com/pallets/jinja). Updates `jinja2` from 3.1.4 to 3.1.6 - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](pallets/jinja@3.1.4...3.1.6) --- updated-dependencies: - dependency-name: jinja2 dependency-type: direct:production dependency-group: pip ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: Marc Schöchlin <[email protected]> * improvements (#13) * improvements - be more tolerant references to cloud.yaml entries - set mtu automatically if set to 0 - use directly the specified path if a file is specified Signed-off-by: Marc Schöchlin <[email protected]> * satisfy mypy and linting Signed-off-by: Marc Schöchlin <[email protected]> --------- Signed-off-by: Marc Schöchlin <[email protected]> Co-authored-by: Marc Schöchlin <[email protected]> Co-authored-by: Kurt Garloff <[email protected]> Signed-off-by: Marc Schöchlin <[email protected]> * minor-improvement (#14) Signed-off-by: Marc Schöchlin <[email protected]> Co-authored-by: Marc Schöchlin <[email protected]> Signed-off-by: Marc Schöchlin <[email protected]> * Update help output (#15) Signed-off-by: Marc Schöchlin <[email protected]> Co-authored-by: Marc Schöchlin <[email protected]> Signed-off-by: Marc Schöchlin <[email protected]> * remove outdated example ssh keys Signed-off-by: Marc Schöchlin <[email protected]> * check if flavor or images exsists Signed-off-by: Marc Schöchlin <[email protected]> * feature: handle existing clouds.yaml merge the configuration of generated projects to a existing clouds.yaml and make a backup Signed-off-by: Marc Schöchlin <[email protected]> * Fix imports in module entry point (#16) Signed-off-by: Max Harmathy <[email protected]> Signed-off-by: Marc Schöchlin <[email protected]> * fix typing Signed-off-by: Marc Schöchlin <[email protected]> --------- Signed-off-by: Marc Schöchlin <[email protected]> Signed-off-by: Marc Schöchlin <[email protected]> Signed-off-by: dependabot[bot] <[email protected]> Signed-off-by: Max Harmathy <[email protected]> Signed-off-by: Marc Schöchlin <[email protected]> Co-authored-by: Marc Schöchlin <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Kurt Garloff <[email protected]> Co-authored-by: Max Harmathy <[email protected]>
1 parent e77025a commit df82639

File tree

7 files changed

+46
-23
lines changed

7 files changed

+46
-23
lines changed

profiles/default.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@ admin_domain_password: "yolobanana"
33
admin_vm_ssh_keypair_name: "my_ssh_public_key"
44
admin_vm_ssh_key: |
55
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]
96
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
107
admin_vm_password: "yolobanana"
118
vm_flavor: "SCS-1L-1"
12-
vm_image: "Ubuntu 24.04"
9+
vm_image: "Ubuntu 24.04 Minimal"
1310
vm_volume_size_gb: 10
1411
project_ipv4_subnet: "192.168.200.0/24"

profiles/health-mon.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@ admin_domain_password: "yolobanana"
33
admin_vm_ssh_keypair_name: "my_ssh_public_key"
44
admin_vm_ssh_key: |
55
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]
96
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
107
admin_vm_password: "yolobanana"
118
vm_flavor: "SCS-1L-1"
12-
vm_image: "Ubuntu 24.04"
9+
vm_image: "Ubuntu 24.04 Minimal"
1310
vm_volume_size_gb: 10
1411
project_ipv4_subnet: "192.168.200.0/24"
1512
compute_quotas:

profiles/smoketest.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +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]
85
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
96
admin_vm_password: "yolobanana"
107
vm_flavor: "SCS-2V-4"
11-
vm_image: "Ubuntu 24.04"
8+
vm_image: "Ubuntu 24.04 Minimal"
129
vm_volume_size_gb: 10
1310
project_ipv4_subnet: "192.168.200.0/24"
1411
compute_quotas:

profiles/stresstest.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +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]
85
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
96
admin_vm_password: "yolobanana"
107
vm_flavor: "SCS-2V-4"
11-
vm_image: "Ubuntu 24.04"
8+
vm_image: "Ubuntu 24.04 Minimal"
129
vm_volume_size_gb: 10
1310
project_ipv4_subnet: "192.168.200.0/24"
1411
compute_quotas:

src/openstack_workload_generator/__main__.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env python3
2-
2+
import shutil
33
import sys
44
import os
55
import argparse
@@ -12,7 +12,8 @@
1212
from openstack.config import loader
1313

1414
from .entities import WorkloadGeneratorDomain
15-
from .entities.helpers import setup_logging, cloud_checker, item_checker, Config
15+
from .entities.helpers import setup_logging, cloud_checker, item_checker, Config, iso_timestamp, deep_merge_dict
16+
1617

1718
LOGGER = logging.getLogger()
1819

@@ -180,10 +181,26 @@ def establish_connection():
180181
machine_obj.delete_machine()
181182
if args.generate_clouds_yaml:
182183
LOGGER.info(f"Creating a a clouds yaml : {args.generate_clouds_yaml}")
183-
clouds_yaml_data = {"clouds": clouds_yaml_data}
184+
185+
clouds_yaml_data_new = {"clouds": clouds_yaml_data}
186+
if os.path.exists(args.generate_clouds_yaml):
187+
with open(args.generate_clouds_yaml, "r") as file:
188+
existing_data = yaml.safe_load(file)
189+
backup_file = f"{args.generate_clouds_yaml}_{iso_timestamp()}"
190+
logging.warning(
191+
f"File {args.generate_clouds_yaml}, making an backup to {backup_file} and adding the new values"
192+
)
193+
shutil.copy2(
194+
args.generate_clouds_yaml,
195+
f"{args.generate_clouds_yaml}_{iso_timestamp()}",
196+
)
197+
clouds_yaml_data_new = deep_merge_dict(
198+
existing_data, clouds_yaml_data_new
199+
)
200+
184201
with open(args.generate_clouds_yaml, "w") as file:
185202
yaml.dump(
186-
clouds_yaml_data,
203+
clouds_yaml_data_new,
187204
file,
188205
default_flow_style=False,
189206
explicit_start=True,

src/openstack_workload_generator/entities/helpers.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
import logging
33
import os
44
import sys
5-
from typing import Tuple
5+
from datetime import datetime
6+
from typing import Tuple, Any
67
import coloredlogs
78

89
import re
@@ -250,3 +251,17 @@ def item_checker(value: str) -> str:
250251
if not re.fullmatch(r"[a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+", value):
251252
raise argparse.ArgumentTypeError("specify a valid name for an item")
252253
return value
254+
255+
256+
def iso_timestamp() -> str:
257+
return datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
258+
259+
260+
def deep_merge_dict(d1: dict, d2: dict) -> dict[str, Any]:
261+
result = d1.copy()
262+
for key, value in d2.items():
263+
if key in result and isinstance(result[key], dict) and isinstance(value, dict):
264+
result[key] = deep_merge_dict(result[key], value)
265+
else:
266+
result[key] = value
267+
return result

src/openstack_workload_generator/entities/machine.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import base64
22
import logging
3+
import sys
34

45
from openstack.compute.v2.server import Server
56
from openstack.connection import Connection
@@ -41,13 +42,15 @@ def get_image_id_by_name(self, image_name):
4142
for image in self.conn.image.images():
4243
if image.name == image_name:
4344
return image.id
44-
return None
45+
logging.fatal(f"Image {image_name} not found")
46+
sys.exit(2)
4547

4648
def get_flavor_id_by_name(self, flavor_name):
4749
for flavor in self.conn.compute.flavors():
4850
if flavor.name == flavor_name:
4951
return flavor.id
50-
return None
52+
logging.fatal(f"Flavor {flavor_name} not found")
53+
sys.exit(2)
5154

5255
def delete_machine(self):
5356
LOGGER.warning(

0 commit comments

Comments
 (0)