diff --git a/scripts/emit_releases_file/emit_releases_file.py b/scripts/emit_releases_file/emit_releases_file.py index 81705c911..64783bd7d 100644 --- a/scripts/emit_releases_file/emit_releases_file.py +++ b/scripts/emit_releases_file/emit_releases_file.py @@ -173,10 +173,13 @@ def compose_releases_dictionary(stable_release, featureset, upgrade_from): return releases_dictionary -def shim_convert_old_release_names(releases_names): +def shim_convert_old_release_names(releases_names, is_periodic): # TODO(trown): Remove this shim when we no longer need to use the # old style double release files. + # Remove unspected side-effects + modified_releases_name = releases_names.copy() + oc_deploy_release = releases_names['overcloud_deploy_release'] oc_target_release = releases_names['overcloud_target_release'] uc_install_release = releases_names['undercloud_install_release'] @@ -184,12 +187,19 @@ def shim_convert_old_release_names(releases_names): if oc_deploy_release != oc_target_release: release_file = "{}-undercloud-{}-overcloud".format( uc_install_release, oc_deploy_release) - releases_names['undercloud_install_release'] = release_file - releases_names['undercloud_target_release'] = release_file - releases_names['overcloud_deploy_release'] = release_file - releases_names['overcloud_target_release'] = release_file + modified_releases_name['undercloud_install_release'] = release_file + modified_releases_name['undercloud_target_release'] = release_file + modified_releases_name['overcloud_deploy_release'] = release_file + modified_releases_name['overcloud_target_release'] = release_file + elif is_periodic: + for key in [ + 'undercloud_install_release', 'undercloud_target_release', + 'overcloud_deploy_release', 'overcloud_target_release' + ]: + modified_releases_name[ + key] = "promotion-testing-hash-" + releases_names[key] - return releases_names + return modified_releases_name def write_releases_dictionary_to_bash(releases_dictionary, bash_file_name): @@ -246,6 +256,10 @@ if __name__ == '__main__': help='Upgrade FROM the change under test instead\n' 'of the default of upgrading TO the change\n' 'under test.') + + parser.add_argument('--is-periodic', action='store_true', + help='Specify if the current running job is periodic') + args = parser.parse_args() setup_logging(args.log_file) @@ -257,7 +271,8 @@ if __name__ == '__main__': featureset, args.upgrade_from) - releases_dictionary = shim_convert_old_release_names(releases_dictionary) + releases_dictionary = shim_convert_old_release_names(releases_dictionary, + args.is_periodic) if not write_releases_dictionary_to_bash( releases_dictionary, args.output_file): diff --git a/scripts/emit_releases_file/test_release_file.py b/scripts/emit_releases_file/test_release_file.py index ead42c46d..98c089b80 100644 --- a/scripts/emit_releases_file/test_release_file.py +++ b/scripts/emit_releases_file/test_release_file.py @@ -22,7 +22,12 @@ def test_converting_from_oc_upgrade_has_double_release(): 'overcloud_target_release': 'master-undercloud-queens-overcloud', 'overcloud_target_hash': 'current-tripleo', } - assert (shim_convert_old_release_names(releases_name) == + + assert (shim_convert_old_release_names(releases_name, is_periodic=False) == + expected_releases_file) + + # Also periodic jobs use the same release files + assert (shim_convert_old_release_names(releases_name, is_periodic=True) == expected_releases_file) @@ -47,7 +52,32 @@ def test_converting_from_uc_upgrade_has_single_release(): 'overcloud_target_release': 'master', 'overcloud_target_hash': 'current-tripleo', } - assert (shim_convert_old_release_names(releases_name) == + assert (shim_convert_old_release_names(releases_name, is_periodic=False) == + expected_releases_file) + + +def test_converting_from_periodic_uc_upgrade_has_single_release_with_sufix(): + releases_name = { + 'undercloud_install_release': 'queens', + 'undercloud_install_hash': 'current-tripleo', + 'undercloud_target_release': 'master', + 'undercloud_target_hash': 'current-tripleo', + 'overcloud_deploy_release': 'master', + 'overcloud_deploy_hash': 'current-tripleo', + 'overcloud_target_release': 'master', + 'overcloud_target_hash': 'current-tripleo', + } + expected_releases_file = { + 'undercloud_install_release': 'promotion-testing-hash-queens', + 'undercloud_install_hash': 'current-tripleo', + 'undercloud_target_release': 'promotion-testing-hash-master', + 'undercloud_target_hash': 'current-tripleo', + 'overcloud_deploy_release': 'promotion-testing-hash-master', + 'overcloud_deploy_hash': 'current-tripleo', + 'overcloud_target_release': 'promotion-testing-hash-master', + 'overcloud_target_hash': 'current-tripleo', + } + assert (shim_convert_old_release_names(releases_name, is_periodic=True) == expected_releases_file) @@ -72,5 +102,30 @@ def test_converting_from_noop_has_single_release(): 'overcloud_target_release': 'master', 'overcloud_target_hash': 'current-tripleo', } - assert (shim_convert_old_release_names(releases_name) == + assert (shim_convert_old_release_names(releases_name, is_periodic=False) == + expected_releases_file) + + +def test_converting_from_periodic_noop_has_single_release_with_sufix(): + releases_name = { + 'undercloud_install_release': 'master', + 'undercloud_install_hash': 'current-tripleo', + 'undercloud_target_release': 'master', + 'undercloud_target_hash': 'current-tripleo', + 'overcloud_deploy_release': 'master', + 'overcloud_deploy_hash': 'current-tripleo', + 'overcloud_target_release': 'master', + 'overcloud_target_hash': 'current-tripleo', + } + expected_releases_file = { + 'undercloud_install_release': 'promotion-testing-hash-master', + 'undercloud_install_hash': 'current-tripleo', + 'undercloud_target_release': 'promotion-testing-hash-master', + 'undercloud_target_hash': 'current-tripleo', + 'overcloud_deploy_release': 'promotion-testing-hash-master', + 'overcloud_deploy_hash': 'current-tripleo', + 'overcloud_target_release': 'promotion-testing-hash-master', + 'overcloud_target_hash': 'current-tripleo', + } + assert (shim_convert_old_release_names(releases_name, is_periodic=True) == expected_releases_file) diff --git a/toci_gate_test.sh b/toci_gate_test.sh index 73370f908..46d1f2a7d 100755 --- a/toci_gate_test.sh +++ b/toci_gate_test.sh @@ -82,6 +82,7 @@ TIMEOUT_SECS=$((DEVSTACK_GATE_TIMEOUT*60)) export EXTRA_VARS=${EXTRA_VARS:-""} export NODES_ARGS="" export EXTRANODE="" +export EMIT_RELEASES_EXTRA_ARGS="" # Set playbook execution status export PLAYBOOK_DRY_RUN=${PLAYBOOK_DRY_RUN:=0} export COLLECT_CONF="$TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/collect-logs.yml" @@ -182,6 +183,7 @@ for JOB_TYPE_PART in $(sed 's/-/ /g' <<< "${TOCI_JOBTYPE:-}") ; do periodic) PERIODIC=1 QUICKSTART_RELEASE="promotion-testing-hash-${QUICKSTART_RELEASE}" + EMIT_RELEASES_EXTRA_ARGS="$EMIT_RELEASES_EXTRA_ARGS --is-periodic" ;; gate) ;; @@ -197,11 +199,13 @@ done if [[ -f "$RELEASES_SCRIPT" ]] && [[ $FEATURESET_FILE =~ '037' || $FEATURESET_FILE =~ '050' || $FEATURESET_FILE =~ '010' || $FEATURESET_FILE =~ '011' ]]; then + python $RELEASES_SCRIPT \ --stable-release ${STABLE_RELEASE:-"master"} \ --featureset-file $TRIPLEO_ROOT/tripleo-quickstart/config/general_config/$(basename $FEATURESET_FILE) \ --output-file $RELEASES_FILE_OUTPUT \ - --log-file $RELEASES_SCRIPT_LOGFILE + --log-file $RELEASES_SCRIPT_LOGFILE \ + $EMIT_RELEASES_EXTRA_ARGS fi