Skip to content

Commit f358141

Browse files
author
Marc Schöchlin
committed
Improve startup script
1 parent df82639 commit f358141

File tree

3 files changed

+54
-14
lines changed

3 files changed

+54
-14
lines changed

openstack_workload_generator

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,29 @@ modification_time(){
77
python3 -c "import os; print(int(os.path.getmtime('$1')))"
88
}
99

10+
export VIRTUAL_ENV="${VIRTUAL_ENV:-${rundir}/venv}"
11+
1012
create_env(){
1113
set -e
12-
rm -rf "${rundir}/venv"
13-
python3 -m venv "${rundir}/venv"
14-
source "${rundir}/venv/bin/activate"
14+
rm -rf "${VIRTUAL_ENV}"
15+
python3 -m venv "${VIRTUAL_ENV}"
16+
source "${VIRTUAL_ENV}/bin/activate"
1517
pip install -r "${rundir}/requirements.txt"
16-
touch -r "${rundir}/requirements.txt" "${rundir}/venv/bin/activate"
18+
touch -r "${rundir}/requirements.txt" "${VIRTUAL_ENV}/bin/activate"
1719
set +e
1820
}
1921

2022

21-
if ! [ -d "${rundir}/venv" ] ;then
22-
echo "Creating venv: ${rundir}/venv" >&2
23+
if ! [ -d "${VIRTUAL_ENV}" ] ;then
24+
echo "Creating venv: ${VIRTUAL_ENV}" >&2
2325
echo
2426
create_env
25-
elif [[ "$(modification_time "${rundir}/requirements.txt")" -gt "$(modification_time "${rundir}/venv/bin/activate")" ]];then
26-
echo "Recreating venv: ${rundir}/venv" >&2
27+
elif [[ "$(modification_time "${rundir}/requirements.txt")" -gt "$(modification_time "${VIRTUAL_ENV}/bin/activate")" ]];then
28+
echo "Recreating venv: ${VIRTUAL_ENV}" >&2
2729
echo
2830
create_env
2931
else
30-
source "${rundir}/venv/bin/activate"
32+
source "${VIRTUAL_ENV}/bin/activate"
3133
fi
3234

3335

@@ -36,4 +38,4 @@ if [ "$1" = "deps" ];then
3638
fi
3739

3840
export PYTHONPATH="$rundir/src/"
39-
exec "${rundir}/venv/bin/python" -m openstack_workload_generator "$@"
41+
exec "${VIRTUAL_ENV}/bin/python" -m openstack_workload_generator "$@"

profiles/loadbalancertest.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
admin_domain_password: "yolobanana"
3+
admin_vm_ssh_key: |
4+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACLmNpHitBkZGVbWAFxZjUATNvLjSktAKwokFIQ9Z1k [email protected]
5+
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
6+
admin_vm_password: "yolobanana"
7+
vm_flavor: "SCS-2V-4"
8+
vm_image: "Ubuntu 24.04 Minimal"
9+
vm_volume_size_gb: 10
10+
project_ipv4_subnet: "192.168.200.0/24"
11+
compute_quotas:
12+
cores: 1000
13+
instances: 200
14+
ram: 512000
15+
block_storage_quotas:
16+
volumes: 100
17+
gigabytes: 5000
18+
network_quotas:
19+
security_groups: 50
20+
cloud_init_extra_script: |
21+
#!/bin/bash
22+
set -x
23+
apt-get update
24+
apt-get install apache2 -y
25+
sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
26+
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
27+
echo "yolobanana"|passwd root --stdin
28+
systemctl restart ssh

src/openstack_workload_generator/entities/project.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,17 +123,27 @@ def get_machines(self, machines: list[str]) -> list[WorkloadGeneratorMachine]:
123123
result.append(self.workload_machines[machine])
124124
return result
125125

126-
def get_role_id_by_name(self, role_name) -> str:
126+
def get_role_id_by_name(self, role_name: str, required: bool = True) -> str | None:
127127
for role in self._admin_conn.identity.roles():
128128
if role.name == role_name:
129129
return role.id
130-
raise RuntimeError(f"No such role {role_name}")
130+
if required:
131+
raise RuntimeError(f"No such role {role_name}")
132+
else:
133+
return None
134+
135+
def assign_role_to_user_for_project(self, role_name: str, required=True):
136+
role_id = self.get_role_id_by_name(role_name, required=required)
137+
if role_id is None and not required:
138+
LOGGER.info(
139+
f"No such role {role_name} not assigning it to {ProjectCache.ident_by_id(self.obj.id)}"
140+
)
141+
return
131142

132-
def assign_role_to_user_for_project(self, role_name: str):
133143
self._admin_conn.identity.assign_project_role_to_user(
134144
user=self.user.obj.id,
135145
project=self.obj.id,
136-
role=self.get_role_id_by_name(role_name),
146+
role=role_id
137147
)
138148
LOGGER.info(
139149
f"Assigned {role_name} to {self.user.obj.id} for {ProjectCache.ident_by_id(self.obj.id)}"

0 commit comments

Comments
 (0)