mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
azure: Make it possible to adjust Docker resources per test env
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
This commit is contained in:
committed by
Alexander Bokovoy
parent
6c2db326f8
commit
10461b7091
@@ -8,7 +8,8 @@ services:
|
||||
security_opt:
|
||||
- apparmor:unconfined
|
||||
- seccomp:./seccomp.json
|
||||
mem_limit: "1900m"
|
||||
mem_limit: "${IPA_TESTS_SERVER_MEM_LIMIT}"
|
||||
memswap_limit: "${IPA_TESTS_SERVER_MEMSWAP_LIMIT}"
|
||||
volumes:
|
||||
- /sys/fs/cgroup/systemd:/sys/fs/cgroup/systemd
|
||||
- ./ipa-test-config.yaml:/root/.ipa/ipa-test-config.yaml:ro
|
||||
@@ -25,7 +26,8 @@ services:
|
||||
security_opt:
|
||||
- apparmor:unconfined
|
||||
- seccomp:./seccomp.json
|
||||
mem_limit: "1900m"
|
||||
mem_limit: "${IPA_TESTS_REPLICA_MEM_LIMIT}"
|
||||
memswap_limit: "${IPA_TESTS_REPLICA_MEMSWAP_LIMIT}"
|
||||
volumes:
|
||||
- /sys/fs/cgroup/systemd:/sys/fs/cgroup/systemd
|
||||
- ${BUILD_REPOSITORY_LOCALPATH}:${IPA_TESTS_REPO_PATH}:ro
|
||||
@@ -40,7 +42,8 @@ services:
|
||||
security_opt:
|
||||
- apparmor:unconfined
|
||||
- seccomp:./seccomp.json
|
||||
mem_limit: "536870912"
|
||||
mem_limit: "${IPA_TESTS_CLIENT_MEM_LIMIT}"
|
||||
memswap_limit: "${IPA_TESTS_CLIENT_MEMSWAP_LIMIT}"
|
||||
volumes:
|
||||
- /sys/fs/cgroup/systemd:/sys/fs/cgroup/systemd
|
||||
- ${BUILD_REPOSITORY_LOCALPATH}:${IPA_TESTS_REPO_PATH}:ro
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
default_resources:
|
||||
server:
|
||||
mem_limit: "1800m"
|
||||
memswap_limit: "2500m"
|
||||
replica:
|
||||
mem_limit: "1800m"
|
||||
memswap_limit: "2500m"
|
||||
client:
|
||||
mem_limit: "512m"
|
||||
memswap_limit: "1000m"
|
||||
|
||||
vms:
|
||||
- vm_jobs:
|
||||
- container_job: base
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
default_resources:
|
||||
server:
|
||||
mem_limit: "2200m"
|
||||
memswap_limit: "3000m"
|
||||
replica:
|
||||
mem_limit: "2200m"
|
||||
memswap_limit: "3000m"
|
||||
client:
|
||||
mem_limit: "512m"
|
||||
memswap_limit: "1000m"
|
||||
|
||||
vms:
|
||||
- vm_jobs:
|
||||
- container_job: InstallMaster
|
||||
containers:
|
||||
resources:
|
||||
server:
|
||||
mem_limit: "3200m"
|
||||
memswap_limit: "4800m"
|
||||
tests:
|
||||
- test_integration/test_installation.py::TestInstallMaster
|
||||
|
||||
@@ -14,6 +30,13 @@ vms:
|
||||
containers:
|
||||
replicas: 1
|
||||
clients: 1
|
||||
resources:
|
||||
replica:
|
||||
mem_limit: "2200m"
|
||||
memswap_limit: "3300m"
|
||||
client:
|
||||
mem_limit: "768m"
|
||||
memswap_limit: "1024m"
|
||||
tests:
|
||||
- test_integration/test_forced_client_reenrollment.py
|
||||
|
||||
@@ -25,12 +48,20 @@ vms:
|
||||
- container_job: InstallDNSSECFirst
|
||||
containers:
|
||||
replicas: 1
|
||||
resources:
|
||||
replica:
|
||||
mem_limit: "2400m"
|
||||
memswap_limit: "3500m"
|
||||
tests:
|
||||
- test_integration/test_dnssec.py::TestInstallDNSSECFirst
|
||||
|
||||
- container_job: simple_replication
|
||||
containers:
|
||||
replicas: 1
|
||||
resources:
|
||||
replica:
|
||||
mem_limit: "2400m"
|
||||
memswap_limit: "3500m"
|
||||
tests:
|
||||
- test_integration/test_simple_replication.py
|
||||
|
||||
@@ -50,6 +81,10 @@ vms:
|
||||
- container_job: sudo
|
||||
containers:
|
||||
clients: 1
|
||||
resources:
|
||||
server:
|
||||
mem_limit: "2600m"
|
||||
memswap_limit: "3900m"
|
||||
tests:
|
||||
- test_integration/test_sudo.py
|
||||
|
||||
@@ -57,6 +92,13 @@ vms:
|
||||
containers:
|
||||
replicas: 1
|
||||
clients: 1
|
||||
resources:
|
||||
replica:
|
||||
mem_limit: "2200m"
|
||||
memswap_limit: "3300m"
|
||||
client:
|
||||
mem_limit: "768m"
|
||||
memswap_limit: "1024m"
|
||||
tests:
|
||||
- test_integration/test_external_ca.py::TestExternalCA
|
||||
|
||||
@@ -69,6 +111,10 @@ vms:
|
||||
- container_job: external_ca_ExternalCAConstraints
|
||||
containers:
|
||||
clients: 1
|
||||
resources:
|
||||
client:
|
||||
mem_limit: "768m"
|
||||
memswap_limit: "1024m"
|
||||
tests:
|
||||
- test_integration/test_external_ca.py::TestExternalCAConstraints
|
||||
|
||||
@@ -77,13 +123,16 @@ vms:
|
||||
containers:
|
||||
replicas: 1
|
||||
clients: 1
|
||||
resources:
|
||||
server:
|
||||
mem_limit: "3500m"
|
||||
memswap_limit: "4000m"
|
||||
client:
|
||||
mem_limit: "768m"
|
||||
memswap_limit: "1024m"
|
||||
tests:
|
||||
- test_integration/test_commands.py
|
||||
|
||||
- container_job: upgrade
|
||||
tests:
|
||||
- test_integration/test_upgrade.py
|
||||
|
||||
- container_job: membermanager
|
||||
tests:
|
||||
- test_integration/test_membermanager.py
|
||||
@@ -111,6 +160,10 @@ vms:
|
||||
- container_job: advise
|
||||
containers:
|
||||
clients: 1
|
||||
resources:
|
||||
client:
|
||||
mem_limit: "768m"
|
||||
memswap_limit: "1024m"
|
||||
tests:
|
||||
- test_integration/test_advise.py
|
||||
|
||||
@@ -120,11 +173,26 @@ vms:
|
||||
containers:
|
||||
replicas: 1
|
||||
clients: 1
|
||||
resources:
|
||||
replica:
|
||||
mem_limit: "2300m"
|
||||
memswap_limit: "3300m"
|
||||
|
||||
- container_job: external_ca_SelfExternalSelf
|
||||
tests:
|
||||
- test_integration/test_external_ca.py::TestSelfExternalSelf
|
||||
|
||||
- vm_jobs:
|
||||
- container_job: upgrade
|
||||
containers:
|
||||
resources:
|
||||
server:
|
||||
mem_limit: "2200m"
|
||||
memswap_limit: "3300m"
|
||||
tests:
|
||||
- test_integration/test_upgrade.py
|
||||
|
||||
|
||||
# requires external DNS configuration, this is not set up yet
|
||||
# - container_job: authselect
|
||||
# containers:
|
||||
|
||||
@@ -52,6 +52,28 @@ IPA_TESTS_SCRIPTS_OUT="${BUILD_REPOSITORY_LOCALPATH}/${IPA_TESTS_SCRIPTS}"
|
||||
IPA_TESTS_NETWORK_INTERNAL_VARNAME="IPA_TESTS_NETWORK_INTERNAL_${PROJECT_ID}"
|
||||
IPA_NETWORK_INTERNAL="${!IPA_TESTS_NETWORK_INTERNAL_VARNAME:-false}"
|
||||
|
||||
# Docker resources
|
||||
# mem_limit
|
||||
IPA_TESTS_SERVER_MEM_LIMIT_VARNAME="IPA_TESTS_SERVER_MEM_LIMIT_${PROJECT_ID}"
|
||||
IPA_TESTS_SERVER_MEM_LIMIT="${!IPA_TESTS_SERVER_MEM_LIMIT_VARNAME:-2000m}"
|
||||
|
||||
IPA_TESTS_REPLICA_MEM_LIMIT_VARNAME="IPA_TESTS_REPLICA_MEM_LIMIT_${PROJECT_ID}"
|
||||
IPA_TESTS_REPLICA_MEM_LIMIT="${!IPA_TESTS_REPLICA_MEM_LIMIT_VARNAME:-2000m}"
|
||||
|
||||
IPA_TESTS_CLIENT_MEM_LIMIT_VARNAME="IPA_TESTS_CLIENT_MEM_LIMIT_${PROJECT_ID}"
|
||||
IPA_TESTS_CLIENT_MEM_LIMIT="${!IPA_TESTS_CLIENT_MEM_LIMIT_VARNAME:-512m}"
|
||||
|
||||
# memswap_limit
|
||||
IPA_TESTS_SERVER_MEMSWAP_LIMIT_VARNAME="IPA_TESTS_SERVER_MEMSWAP_LIMIT_${PROJECT_ID}"
|
||||
IPA_TESTS_SERVER_MEMSWAP_LIMIT="${!IPA_TESTS_SERVER_MEMSWAP_LIMIT_VARNAME:-2500m}"
|
||||
|
||||
IPA_TESTS_REPLICA_MEMSWAP_LIMIT_VARNAME="IPA_TESTS_REPLICA_MEMSWAP_LIMIT_${PROJECT_ID}"
|
||||
IPA_TESTS_REPLICA_MEMSWAP_LIMIT="${!IPA_TESTS_REPLICA_MEMSWAP_LIMIT_VARNAME:-2500m}"
|
||||
|
||||
IPA_TESTS_CLIENT_MEMSWAP_LIMIT_VARNAME="IPA_TESTS_CLIENT_MEMSWAP_LIMIT_${PROJECT_ID}"
|
||||
IPA_TESTS_CLIENT_MEMSWAP_LIMIT="${!IPA_TESTS_CLIENT_MEMSWAP_LIMIT_VARNAME:-768m}"
|
||||
#
|
||||
|
||||
IPA_TESTS_DOMAIN="${IPA_TESTS_DOMAIN:-ipa.test}"
|
||||
# bash4
|
||||
IPA_TESTS_REALM="${IPA_TESTS_DOMAIN^^}"
|
||||
@@ -116,6 +138,12 @@ IPA_DOCKER_IMAGE="${IPA_DOCKER_IMAGE:-freeipa-azure-builder}" \
|
||||
IPA_NETWORK="${IPA_NETWORK:-ipanet}" \
|
||||
IPA_NETWORK_INTERNAL="$IPA_NETWORK_INTERNAL" \
|
||||
IPA_IPV6_SUBNET="2001:db8:1:${PROJECT_ID}::/64" \
|
||||
IPA_TESTS_SERVER_MEM_LIMIT="$IPA_TESTS_SERVER_MEM_LIMIT" \
|
||||
IPA_TESTS_REPLICA_MEM_LIMIT="$IPA_TESTS_REPLICA_MEM_LIMIT" \
|
||||
IPA_TESTS_CLIENT_MEM_LIMIT="$IPA_TESTS_CLIENT_MEM_LIMIT" \
|
||||
IPA_TESTS_SERVER_MEMSWAP_LIMIT="$IPA_TESTS_SERVER_MEMSWAP_LIMIT" \
|
||||
IPA_TESTS_REPLICA_MEMSWAP_LIMIT="$IPA_TESTS_REPLICA_MEMSWAP_LIMIT" \
|
||||
IPA_TESTS_CLIENT_MEMSWAP_LIMIT="$IPA_TESTS_CLIENT_MEMSWAP_LIMIT" \
|
||||
docker-compose -p "$PROJECT_ID" up \
|
||||
--scale replica="$IPA_TESTS_REPLICAS" \
|
||||
--scale client="$IPA_TESTS_CLIENTS" \
|
||||
@@ -223,6 +251,12 @@ IPA_DOCKER_IMAGE="${IPA_DOCKER_IMAGE:-freeipa-azure-builder}" \
|
||||
IPA_NETWORK="${IPA_NETWORK:-ipanet}" \
|
||||
IPA_NETWORK_INTERNAL="$IPA_NETWORK_INTERNAL" \
|
||||
IPA_IPV6_SUBNET="2001:db8:1:${PROJECT_ID}::/64" \
|
||||
IPA_TESTS_SERVER_MEM_LIMIT="$IPA_TESTS_SERVER_MEM_LIMIT" \
|
||||
IPA_TESTS_REPLICA_MEM_LIMIT="$IPA_TESTS_REPLICA_MEM_LIMIT" \
|
||||
IPA_TESTS_CLIENT_MEM_LIMIT="$IPA_TESTS_CLIENT_MEM_LIMIT" \
|
||||
IPA_TESTS_SERVER_MEMSWAP_LIMIT="$IPA_TESTS_SERVER_MEMSWAP_LIMIT" \
|
||||
IPA_TESTS_REPLICA_MEMSWAP_LIMIT="$IPA_TESTS_REPLICA_MEMSWAP_LIMIT" \
|
||||
IPA_TESTS_CLIENT_MEMSWAP_LIMIT="$IPA_TESTS_CLIENT_MEMSWAP_LIMIT" \
|
||||
docker-compose -p "$PROJECT_ID" down
|
||||
popd
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import argparse
|
||||
import copy
|
||||
import pprint
|
||||
import json
|
||||
|
||||
import yaml
|
||||
@@ -13,6 +15,7 @@ args = parser.parse_args()
|
||||
|
||||
with open(args.azure_template) as f:
|
||||
data = yaml.safe_load(f)
|
||||
default_resources = data["default_resources"]
|
||||
matrix_jobs = {}
|
||||
for vm in data['vms']:
|
||||
vm_jobs = vm['vm_jobs']
|
||||
@@ -33,14 +36,28 @@ with open(args.azure_template) as f:
|
||||
)
|
||||
|
||||
containers = vm_job.get('containers')
|
||||
cont_resources = copy.deepcopy(default_resources)
|
||||
replicas = 0
|
||||
clients = 0
|
||||
if containers:
|
||||
replicas = containers.get('replicas', 0)
|
||||
clients = containers.get('clients', 0)
|
||||
|
||||
resources = containers.get("resources")
|
||||
if resources:
|
||||
for cont in ["server", "replica", "client"]:
|
||||
cont_resources[cont].update(
|
||||
resources.get(cont, {})
|
||||
)
|
||||
|
||||
jobs[f'ipa_tests_replicas_{job_id}'] = replicas
|
||||
jobs[f'ipa_tests_clients_{job_id}'] = clients
|
||||
|
||||
for cont in ["server", "replica", "client"]:
|
||||
for res in ["mem_limit", "memswap_limit"]:
|
||||
key = f"ipa_tests_{cont}_{res}_{job_id}"
|
||||
jobs[key] = cont_resources[cont][res]
|
||||
|
||||
if len(vm_jobs) > args.max_azure_env_jobs:
|
||||
raise ValueError(
|
||||
f"Number of defined jobs:{len(vm_jobs)} within VM:'{job_name}'"
|
||||
@@ -49,5 +66,7 @@ with open(args.azure_template) as f:
|
||||
if job_name in matrix_jobs:
|
||||
raise ValueError(f"Environment names should be unique:{job_name}")
|
||||
matrix_jobs[job_name] = jobs
|
||||
|
||||
pprint.pprint(matrix_jobs)
|
||||
print("##vso[task.setVariable variable=matrix;isOutput=true]" +
|
||||
json.dumps(matrix_jobs))
|
||||
|
||||
Reference in New Issue
Block a user