{"id":21992467,"url":"https://github.com/sovereigncloudstack/openstack-workload-generator","last_synced_at":"2025-03-23T03:32:02.178Z","repository":{"id":264004079,"uuid":"890392229","full_name":"SovereignCloudStack/openstack-workload-generator","owner":"SovereignCloudStack","description":"A tool to generate domain and project structures in openstack for testing purposes","archived":false,"fork":false,"pushed_at":"2025-01-27T11:31:22.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-27T12:36:14.396Z","etag":null,"topics":["openstack","testing"],"latest_commit_sha":null,"homepage":"https://scs.community/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SovereignCloudStack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-18T13:45:52.000Z","updated_at":"2025-01-27T11:31:24.000Z","dependencies_parsed_at":"2024-11-21T17:15:28.455Z","dependency_job_id":"2572c5c2-b06a-4205-a17c-e36769a69001","html_url":"https://github.com/SovereignCloudStack/openstack-workload-generator","commit_stats":null,"previous_names":["sovereigncloudstack/openstack-workload-generator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SovereignCloudStack%2Fopenstack-workload-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SovereignCloudStack%2Fopenstack-workload-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SovereignCloudStack%2Fopenstack-workload-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SovereignCloudStack%2Fopenstack-workload-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SovereignCloudStack","download_url":"https://codeload.github.com/SovereignCloudStack/openstack-workload-generator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245052619,"owners_count":20553161,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openstack","testing"],"created_at":"2024-11-29T20:13:51.392Z","updated_at":"2025-03-23T03:32:02.106Z","avatar_url":"https://github.com/SovereignCloudStack.png","language":"Python","readme":"# openstack-workload-generator\n\nThe openstack-workload-generator is a tool to generate test workloads on openstack clusters\nfor the following purposes:\n\n- test new clusters to ensure that basic functionalities are working\n- launch a certain workload for performance and reliability tests\n- create test setups for openstack tools to test with larger amounts of domains, projects and servers\n\n# General Behavior\n\nThe tool uses the Openstack API or the Python Openstack SDK to automatically create and destroy resources in Openstack. \n\nWhen creating, the specified resources (e.g. domains, projects, servers, ...) are created if they have not already \nbeen created. In this way, several creation processes can also be executed in a sequence to create a specific setup \nwith certain variants of server properties. If provider network is defined the first host in the project gets a floati\n\nThe parameters that are used during an execution can be defined \nvia a YAML file.\n\nWhen deleting, the tool proceeds recursively, automatically identifying and deleting all contained resources.\n\nIn addition to the servers created, an Ansible inventory directory can also be created, which can be used as the \nbasis for later automation.\n\n# Usage\n\n```\n$ ./openstack_workload_generator --help\nusage: Create workloads on openstack installations [-h] [--log_level loglevel] [--os_cloud OS_CLOUD] [--ansible_inventory [ANSIBLE_INVENTORY]] [--config CONFIG]\n                                                   (--create_domains DOMAINNAME [DOMAINNAME ...] | --delete_domains DOMAINNAME [DOMAINNAME ...])\n                                                   (--create_projects PROJECTNAME [PROJECTNAME ...] | --delete_projects PROJECTNAME [PROJECTNAME ...])\n                                                   (--create_machines SERVERNAME [SERVERNAME ...] | --delete_machines SERVERNAME [SERVERNAME ...])\n\noptions:\n  -h, --help            show this help message and exit\n  --log_level loglevel  The loglevel\n  --os_cloud OS_CLOUD   The openstack config to use, defaults to the value of the OS_CLOUD environment variable or \"admin\" if the variable is not set\n  --ansible_inventory [ANSIBLE_INVENTORY]\n                        Dump the created servers as an ansible inventory to the specified directory, adds a ssh proxy jump for the hosts without a floating ip\n  --wait_for_machines   Wait for every machine to be created (normally the provisioning only waits for machines which use floating ips)\n  --config CONFIG       The config file for environment creation, define a path to the yaml file or a subpath in the profiles folder\n  --create_domains DOMAINNAME [DOMAINNAME ...]\n                        A list of domains to be created\n  --delete_domains DOMAINNAME [DOMAINNAME ...]\n                        A list of domains to be deleted, all child elements are recursively deleted\n  --create_projects PROJECTNAME [PROJECTNAME ...]\n                        A list of projects to be created in the created domains\n  --delete_projects PROJECTNAME [PROJECTNAME ...]\n                        A list of projects to be deleted in the created domains, all child elements are recursively deleted\n  --create_machines SERVERNAME [SERVERNAME ...]\n                        A list of vms to be created in the created domains\n  --delete_machines SERVERNAME [SERVERNAME ...]\n                        A list of vms to be deleted in the created projects\n\n```\n\n# Testing Scenarios\n\n## Example usage: A minimal scenario\n\n* 1 domain with\n  * one admin user\n    * with 1 project\n    * assigned roles\n    * which then each contain 1 server\n       * block storage volume\n       * first server has a floating ip\n    * one public SSH key\n    * a network\n    * a subnet\n    * a router\n    * a security group for ssh ingress access\n    * a security group for egress access\n\n### Example output of the creation process\n\n```bash\n$ ./openstack_workload_generator\\\n    --create_domains smoketest1\\\n    --create_projects smoketest-project1\\\n    --create_machines smoketest-testvm1\\\n    --ansible_inventory /tmp/stresstest-inventory\n2024-11-28 15:51:15 - INFO - helpers.py:76 - Reading /home/marc/src/github/osba/scs/openstack-workload-generator/profiles/default.yaml\n2024-11-28 15:51:15 - INFO - helpers.py:99 - The effective configuration from /home/marc/src/github/osba/scs/openstack-workload-generator/profiles/default.yaml : \n\u003e\u003e\u003e\n---\nadmin_domain_password: yolobanana\nadmin_vm_password: yolobanana\nadmin_vm_ssh_key: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k schoechlin@osb-alliance.com\n\n  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyw2z/C+5YugYNXQXbeop0AcOjmWZCvcmci/vOAboO8 schoone@osb-alliance.com\n\n  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsMKOr3TEolg4+4hny/zBe4kLcjzkm+vkc932498fVD kipke@osb-alliance.com\n\n  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILa+/eL5ZM3AWKgm1h4/EFU9hOaSKqaoldHmNeg0qG46 kipke@osb-alliance.com\n\n  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\n\n  '\nadmin_vm_ssh_keypair_name: my_ssh_public_key\ncloud_init_extra_script: '#!/bin/bash\n\n  echo \"HELLO WORLD\"; date \u003e READY; whoami \u003e\u003e READY'\nnumber_of_floating_ips_per_project: '1'\nproject_ipv4_subnet: 192.168.200.0/24\npublic_network: public\nvm_flavor: SCS-1L-1\nvm_image: Ubuntu 24.04\nvm_volume_size_gb: 10\nwait_for_server_timeout: '300'\n\n\u003c\u003c\u003c\n2024-11-28 15:51:15 - INFO - domain.py:52 - Created domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:16 - INFO - user.py:23 - Assigned role 'manager' to user 'smoketest1-admin' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:16 - INFO - user.py:39 - Created user smoketest1-admin / 35caa86cc7ed467380e9755f12fd9115 with password yolobanana in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:17 - INFO - project.py:172 - Created project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:17 - INFO - project.py:149 - Compute quotas for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e' not changed\n2024-11-28 15:51:18 - INFO - project.py:149 - Volume quotas for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e' not changed\n2024-11-28 15:51:18 - INFO - project.py:149 - Network quotas for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e' not changed\n2024-11-28 15:51:18 - INFO - project.py:105 - Assigned manager to 35caa86cc7ed467380e9755f12fd9115 for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:18 - INFO - project.py:105 - Assigned load-balancer_member to 35caa86cc7ed467380e9755f12fd9115 for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:18 - INFO - project.py:105 - Assigned member to 35caa86cc7ed467380e9755f12fd9115 for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:18 - INFO - project.py:51 - Establishing a connection for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:21 - INFO - network.py:123 - Created network localnet-smoketest-project1/0676385f-bafd-48b5-bc33-e1162db46601 in smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff\n2024-11-28 15:51:23 - INFO - network.py:147 - Created subnet localnet-smoketest-project1/72ffa9ac-2110-4d13-97dc-d80cb0a4cb4c in smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff\n2024-11-28 15:51:24 - INFO - network.py:101 - Router 'localrouter-smoketest-project1' created with ID: f5394861-277b-4670-a93f-a8fc11bdd9bc\n2024-11-28 15:51:27 - INFO - network.py:105 - Router 'localrouter-smoketest-project1' gateway set to external network: public\n2024-11-28 15:51:31 - INFO - network.py:107 - Subnet 'localnet-smoketest-project1' added to router 'localrouter-smoketest-project1' as an interface\n2024-11-28 15:51:31 - INFO - network.py:194 - Creating ingress security group ingress-ssh-smoketest-project1 for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:32 - INFO - network.py:227 - Creating egress security group egress-any-smoketest-project1 for project smoketest-project1/c863af289ea04c35b9dabdd2f94d424e\n2024-11-28 15:51:34 - INFO - project.py:280 - Create SSH keypair 'my_ssh_public_key in project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:34 - INFO - project.py:288 - Closing connection for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:34 - INFO - project.py:51 - Establishing a connection for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:39 - INFO - machine.py:88 - Created server smoketest-testvm1/0d688d7a-79b0-4206-9d99-fc191b425110 in project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:51:39 - INFO - machine.py:125 - Add floating ip smoketest-testvm1/0d688d7a-79b0-4206-9d99-fc191b425110 in project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:53:06 - INFO - project.py:288 - Closing connection for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:53:06 - INFO - project.py:274 - Creating ansible_inventory_file /tmp/stresstest-inventory/smoketest1-smoketest-project1-smoketest-testvm1/data.yml for host smoketest-testvm1\n\n$ cat /tmp/stresstest-inventory/smoketest1-smoketest-project1-smoketest-testvm1/data.yml\n---\nansible_host: 10.80.2.35\nhostname: smoketest-testvm1\ninternal_ip: 192.168.200.222\nopenstack:\n  domain: smoketest1\n  hypervisor: null\n  machine_id: 0d688d7a-79b0-4206-9d99-fc191b425110\n  machine_status: ACTIVE\n  project: smoketest-project1\n\n```\n\n### Example of the cleanup process\n\n```bash\n$ ./openstack_workload_generator --delete_domains smoketest1  \n2024-11-28 15:55:46 - INFO - helpers.py:76 - Reading /home/marc/src/github/osba/scs/openstack-workload-generator/profiles/default.yaml\n2024-11-28 15:55:46 - INFO - helpers.py:99 - The effective configuration from /home/marc/src/github/osba/scs/openstack-workload-generator/profiles/default.yaml : \n\u003e\u003e\u003e\n---\nadmin_domain_password: yolobanana\nadmin_vm_password: yolobanana\nadmin_vm_ssh_key: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k schoechlin@osb-alliance.com\n\n  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyw2z/C+5YugYNXQXbeop0AcOjmWZCvcmci/vOAboO8 schoone@osb-alliance.com\n\n  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHsMKOr3TEolg4+4hny/zBe4kLcjzkm+vkc932498fVD kipke@osb-alliance.com\n\n  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILa+/eL5ZM3AWKgm1h4/EFU9hOaSKqaoldHmNeg0qG46 kipke@osb-alliance.com\n\n  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\n\n  '\nadmin_vm_ssh_keypair_name: my_ssh_public_key\ncloud_init_extra_script: '#!/bin/bash\n\n  echo \"HELLO WORLD\"; date \u003e READY; whoami \u003e\u003e READY'\nnumber_of_floating_ips_per_project: '1'\nproject_ipv4_subnet: 192.168.200.0/24\npublic_network: public\nvm_flavor: SCS-1L-1\nvm_image: Ubuntu 24.04\nvm_volume_size_gb: 10\nwait_for_server_timeout: '300'\n\n\u003c\u003c\u003c\n2024-11-28 15:55:49 - WARNING - machine.py:49 - Deleting machine smoketest-testvm1 in project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:55:53 - WARNING - machine.py:54 - Machine smoketest-testvm1 in 7581b3ee38474353a9bcf09a2e2d6cff is deleted now\n2024-11-28 15:55:58 - WARNING - network.py:160 - Removed interface from subnet: 72ffa9ac-2110-4d13-97dc-d80cb0a4cb4c\n2024-11-28 15:56:00 - WARNING - network.py:162 - Removed gateway from router f5394861-277b-4670-a93f-a8fc11bdd9bc\n2024-11-28 15:56:00 - WARNING - network.py:164 - Deleted router f5394861-277b-4670-a93f-a8fc11bdd9bc/localrouter-smoketest-project1\n2024-11-28 15:56:01 - WARNING - network.py:175 - Delete port 501ec7d8-63c5-4f60-9eac-bfe0ea844b36\n2024-11-28 15:56:01 - WARNING - network.py:181 - Delete subnet localnet-smoketest-project1 of project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:56:02 - WARNING - network.py:188 - Deleted network localnet-smoketest-project1 / 0676385f-bafd-48b5-bc33-e1162db46601\n2024-11-28 15:56:02 - WARNING - project.py:197 - Cleanup of project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:56:02 - INFO - project.py:51 - Establishing a connection for project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:56:08 - WARNING - project.py:204 - Deleting project 'smoketest-project1/7581b3ee38474353a9bcf09a2e2d6cff' in domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n2024-11-28 15:56:08 - WARNING - project.py:214 - Deleting security group: default (06bda9d7-a678-475f-bc30-bf005c53b437)\n2024-11-28 15:56:10 - WARNING - user.py:47 - Deleted user: smoketest1-admin / 35caa86cc7ed467380e9755f12fd9115\n2024-11-28 15:56:10 - WARNING - domain.py:82 - Deleted domain 'smoketest1/c863af289ea04c35b9dabdd2f94d424e'\n\n```\n\n## Example usage: A tiny scenario\n\n* 2 domains with\n  * one admin user\n    * each with 2 projects\n    * assigned roles\n    * which then each contain 2 servers\n      * block storage volume\n      * first server has a floating ip\n    * public SSH key\n    * a network\n    * a subnet\n    * a router\n    * a security group for ssh ingress access\n    * a security group for egress access\n\n```\n./openstack_workload_generator \\\n    --create_domains smoketest{1..2} \\\n    --create_projects smoketest-project{1..2} \\\n    --create_machines smoketest-testvm{1..2}\n```\n\n\n## Example usage: A huge stresstest scenario\n\n### Scenario Details\n\n* 10 domains, with 6 projects each , with 9 machines each.\n  * 9 domains\n  * 45 projects\n  * 540 virtual machines\n* 4GB RAM per machine, 2.1TB RAM in total\n* 10GB Disk per machine, 5.5TB DISK in total\n* [The configuration profile](profiles/stresstest.yaml)\n  * Downloads a [shellscript](http://10.10.23.254:28080/stresstest.sh) from a server which is reachable by all virtual machines\n  * Executes the script in a screen session\n  * Prevents to execute multiple scripts in parallel by checking if there is already a screen named \"execute\"\n\n### Testing procedure\n\n1. Move stresstestfile out of the way at the central server\n  ```\n  ssh scs-manager1\n  mv /srv/www/stresstest.sh /srv/www/stresstest.sh.disabled\n  ```\n2. Test the scenario creation\n  ```\n  ./openstack_workload_generator \\\n    --config stresstest.yaml \\\n    --create_domains stresstest1 \\\n    --create_projects stresstest-project1 \\\n    --create_machines stresstestvm1\n  ```\n3. Create the full scenario\n  ```\n  ./openstack_workload_generator \\\n    --config stresstest.yaml \\\n    --create_domains stresstest{1..10} \\\n    --create_projects stresstest-project{1..6} \\\n    --create_machines stresstestvm{1..9} \\\n    --ansible_inventory /tmp/stresstest-inventory\n  ```\n4. Check the created scenario\n  ```\n  openstack domain list\n  openstack project list --long\n  openstack server list --all-projects --long\n  ```\n5. Activate the stresstestfile\n  ```\n  ssh scs-manager1\n  cat \u003c\u003cEOF\n  #!/bin/bash\n  stress-ng --vm 8 --vm-bytes 80% -t 1h\n  EOF\n  mv /srv/www/stresstest.sh.disabled /srv/www/stresstest.sh\n  ```\n6. Purge the scenario\n  ```\n  ./openstack_workload_generator --delete_domains stresstest{1..10}\n  ```\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsovereigncloudstack%2Fopenstack-workload-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsovereigncloudstack%2Fopenstack-workload-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsovereigncloudstack%2Fopenstack-workload-generator/lists"}