Skip to content
5 changes: 1 addition & 4 deletions profiles/default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,9 @@ admin_domain_password: "yolobanana"
admin_vm_ssh_keypair_name: "my_ssh_public_key"
admin_vm_ssh_key: |
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyw2z/C+5YugYNXQXbeop0AcOjmWZCvcmci/vOAboO8 [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsMKOr3TEolg4+4hny/zBe4kLcjzkm+vkc932498fVD [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILa+/eL5ZM3AWKgm1h4/EFU9hOaSKqaoldHmNeg0qG46 [email protected]
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
admin_vm_password: "yolobanana"
vm_flavor: "SCS-1L-1"
vm_image: "Ubuntu 24.04"
vm_image: "Ubuntu 24.04 Minimal"
vm_volume_size_gb: 10
project_ipv4_subnet: "192.168.200.0/24"
5 changes: 1 addition & 4 deletions profiles/health-mon.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,10 @@ admin_domain_password: "yolobanana"
admin_vm_ssh_keypair_name: "my_ssh_public_key"
admin_vm_ssh_key: |
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyw2z/C+5YugYNXQXbeop0AcOjmWZCvcmci/vOAboO8 [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsMKOr3TEolg4+4hny/zBe4kLcjzkm+vkc932498fVD [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILa+/eL5ZM3AWKgm1h4/EFU9hOaSKqaoldHmNeg0qG46 [email protected]
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
admin_vm_password: "yolobanana"
vm_flavor: "SCS-1L-1"
vm_image: "Ubuntu 24.04"
vm_image: "Ubuntu 24.04 Minimal"
vm_volume_size_gb: 10
project_ipv4_subnet: "192.168.200.0/24"
compute_quotas:
Expand Down
5 changes: 1 addition & 4 deletions profiles/smoketest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
admin_domain_password: "yolobanana"
admin_vm_ssh_key: |
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyw2z/C+5YugYNXQXbeop0AcOjmWZCvcmci/vOAboO8 [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsMKOr3TEolg4+4hny/zBe4kLcjzkm+vkc932498fVD [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILa+/eL5ZM3AWKgm1h4/EFU9hOaSKqaoldHmNeg0qG46 [email protected]
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
admin_vm_password: "yolobanana"
vm_flavor: "SCS-2V-4"
vm_image: "Ubuntu 24.04"
vm_image: "Ubuntu 24.04 Minimal"
vm_volume_size_gb: 10
project_ipv4_subnet: "192.168.200.0/24"
compute_quotas:
Expand Down
5 changes: 1 addition & 4 deletions profiles/stresstest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
admin_domain_password: "yolobanana"
admin_vm_ssh_key: |
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyw2z/C+5YugYNXQXbeop0AcOjmWZCvcmci/vOAboO8 [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsMKOr3TEolg4+4hny/zBe4kLcjzkm+vkc932498fVD [email protected]
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILa+/eL5ZM3AWKgm1h4/EFU9hOaSKqaoldHmNeg0qG46 [email protected]
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
admin_vm_password: "yolobanana"
vm_flavor: "SCS-2V-4"
vm_image: "Ubuntu 24.04"
vm_image: "Ubuntu 24.04 Minimal"
vm_volume_size_gb: 10
project_ipv4_subnet: "192.168.200.0/24"
compute_quotas:
Expand Down
25 changes: 21 additions & 4 deletions src/openstack_workload_generator/__main__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env python3

import shutil
import sys
import os
import argparse
Expand All @@ -12,7 +12,8 @@
from openstack.config import loader

from .entities import WorkloadGeneratorDomain
from .entities.helpers import setup_logging, cloud_checker, item_checker, Config
from .entities.helpers import setup_logging, cloud_checker, item_checker, Config, iso_timestamp, deep_merge_dict


LOGGER = logging.getLogger()

Expand Down Expand Up @@ -180,10 +181,26 @@ def establish_connection():
machine_obj.delete_machine()
if args.generate_clouds_yaml:
LOGGER.info(f"Creating a a clouds yaml : {args.generate_clouds_yaml}")
clouds_yaml_data = {"clouds": clouds_yaml_data}

clouds_yaml_data_new = {"clouds": clouds_yaml_data}
if os.path.exists(args.generate_clouds_yaml):
with open(args.generate_clouds_yaml, "r") as file:
existing_data = yaml.safe_load(file)
backup_file = f"{args.generate_clouds_yaml}_{iso_timestamp()}"
logging.warning(
f"File {args.generate_clouds_yaml}, making an backup to {backup_file} and adding the new values"
)
shutil.copy2(
args.generate_clouds_yaml,
f"{args.generate_clouds_yaml}_{iso_timestamp()}",
)
clouds_yaml_data_new = deep_merge_dict(
existing_data, clouds_yaml_data_new
)

with open(args.generate_clouds_yaml, "w") as file:
yaml.dump(
clouds_yaml_data,
clouds_yaml_data_new,
file,
default_flow_style=False,
explicit_start=True,
Expand Down
17 changes: 16 additions & 1 deletion src/openstack_workload_generator/entities/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
import logging
import os
import sys
from typing import Tuple
from datetime import datetime
from typing import Tuple, Any
import coloredlogs

import re
Expand Down Expand Up @@ -250,3 +251,17 @@ def item_checker(value: str) -> str:
if not re.fullmatch(r"[a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+", value):
raise argparse.ArgumentTypeError("specify a valid name for an item")
return value


def iso_timestamp() -> str:
return datetime.now().strftime("%Y-%m-%d_%H-%M-%S")


def deep_merge_dict(d1: dict, d2: dict) -> dict[str, Any]:
result = d1.copy()
for key, value in d2.items():
if key in result and isinstance(result[key], dict) and isinstance(value, dict):
result[key] = deep_merge_dict(result[key], value)
else:
result[key] = value
return result
7 changes: 5 additions & 2 deletions src/openstack_workload_generator/entities/machine.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import base64
import logging
import sys

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

def get_flavor_id_by_name(self, flavor_name):
for flavor in self.conn.compute.flavors():
if flavor.name == flavor_name:
return flavor.id
return None
logging.fatal(f"Flavor {flavor_name} not found")
sys.exit(2)

def delete_machine(self):
LOGGER.warning(
Expand Down