From 1fa033c32d4c94ea9456a2a728893e206957930e Mon Sep 17 00:00:00 2001 From: Stanislav Levin Date: Thu, 20 Feb 2020 11:42:43 +0300 Subject: [PATCH] Azure: Preliminary check for provided limits Reviewed-By: Alexander Bokovoy --- ipatests/azure/scripts/generate-matrix.py | 12 ++++++++++-- ipatests/azure/templates/generate-job-variables.yml | 2 -- ipatests/azure/templates/generate-matrix.yml | 2 +- ipatests/azure/templates/variables-common.yml | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ipatests/azure/scripts/generate-matrix.py b/ipatests/azure/scripts/generate-matrix.py index 864e746d1..1bbe64566 100644 --- a/ipatests/azure/scripts/generate-matrix.py +++ b/ipatests/azure/scripts/generate-matrix.py @@ -6,15 +6,19 @@ import yaml parser = argparse.ArgumentParser(description='Generate Azure jobs matrix.') parser.add_argument('azure_template', help='path to Azure template') +parser.add_argument('max_azure_env_jobs', type=int, + help='maximum number of Docker envs within VM') + args = parser.parse_args() with open(args.azure_template) as f: data = yaml.safe_load(f) matrix_jobs = {} for vm in data['vms']: + vm_jobs = vm['vm_jobs'] jobs = {} job_name = '' - for job_id, vm_job in enumerate(vm['vm_jobs'], 1): + for job_id, vm_job in enumerate(vm_jobs, 1): if not job_name: job_name = f'{vm_job["container_job"]}_{job_id}' jobs[f'ipa_tests_env_name_{job_id}'] = vm_job['container_job'] @@ -33,7 +37,11 @@ with open(args.azure_template) as f: jobs[f'ipa_tests_replicas_{job_id}'] = replicas jobs[f'ipa_tests_clients_{job_id}'] = clients - job_name = f'{job_name}_to_{len(vm["vm_jobs"])}' + if len(vm_jobs) > args.max_azure_env_jobs: + raise ValueError( + f"Number of defined jobs:{len(vm_jobs)} within VM:'{job_name}'" + f" is greater than limit:{args.max_azure_env_jobs}") + job_name = f'{job_name}_to_{len(vm_jobs)}' if job_name in matrix_jobs: raise ValueError(f"Environment names should be unique:{job_name}") matrix_jobs[job_name] = jobs diff --git a/ipatests/azure/templates/generate-job-variables.yml b/ipatests/azure/templates/generate-job-variables.yml index b3579a2d8..55d4e1deb 100644 --- a/ipatests/azure/templates/generate-job-variables.yml +++ b/ipatests/azure/templates/generate-job-variables.yml @@ -15,7 +15,5 @@ steps: { echo "ipa_tests_env_name_${project} is mandatory."; exit 1; } done [ "$total_envs" -eq 0 ] && { echo 'Nothing to test'; env | sort ; exit 1; } - [ "$total_envs" -gt $(MAX_CONTAINER_ENVS) ] && \ - { echo "The number of defined jobs:${total_envs} cannot be greater than $(MAX_CONTAINER_ENVS)"; exit 1; } echo "##vso[task.setvariable variable=ipa_tests_total_envs]$total_envs" displayName: Generate environment variables diff --git a/ipatests/azure/templates/generate-matrix.yml b/ipatests/azure/templates/generate-matrix.yml index 7087078ae..ad35eb25b 100644 --- a/ipatests/azure/templates/generate-matrix.yml +++ b/ipatests/azure/templates/generate-matrix.yml @@ -4,6 +4,6 @@ parameters: name: '' steps: - - script: python3 $(IPA_TESTS_SCRIPTS)/generate-matrix.py ${{ parameters.definition }} + - script: python3 $(IPA_TESTS_SCRIPTS)/generate-matrix.py ${{ parameters.definition }} $(MAX_CONTAINER_ENVS) name: ${{ parameters.name }} displayName: ${{ parameters.displayName }} diff --git a/ipatests/azure/templates/variables-common.yml b/ipatests/azure/templates/variables-common.yml index e0cbdca60..36594064a 100644 --- a/ipatests/azure/templates/variables-common.yml +++ b/ipatests/azure/templates/variables-common.yml @@ -7,7 +7,7 @@ variables: # Ubuntu-18.04 - 3.6.9 # https://github.com/actions/virtual-environments/blob/master/images/linux/Ubuntu1804-REA DME.md VM_IMAGE: 'Ubuntu-18.04' - MAX_CONTAINER_ENVS: 3 + MAX_CONTAINER_ENVS: 5 IPA_TESTS_ENV_WORKING_DIR: $(Build.Repository.LocalPath)/ipa_envs IPA_TESTS_SCRIPTS: 'ipatests/azure/scripts' IPA_TESTS_DOCKERFILES: $(Build.Repository.LocalPath)/ipatests/azure/Dockerfiles