Fix HASH for periodic jobs(use tripleo-ci-testing)
Periodic jobs should use 'tripleo-ci-testing' hash as a target hash, currently 'current-tripleo' was used, this patch fixes it. Also added unit tests for the same. Also allow using promotion-testing-hash-$release in upgrade job in promotion pipeline. Closes-Bug: #1787817 Change-Id: I8893c7406fcf1bb3936f5ba2d9dca7d4a3e9e82a
This commit is contained in:
parent
f4078bffb9
commit
6bc9d7ef97
|
@ -22,10 +22,10 @@ function previous_release_mixed_upgrade_case {
|
||||||
# NOTE: we need to update this when we cut a stable branch
|
# NOTE: we need to update this when we cut a stable branch
|
||||||
echo "queens"
|
echo "queens"
|
||||||
;;
|
;;
|
||||||
stein)
|
stein|promotion-testing-hash-stein)
|
||||||
echo "rocky"
|
echo "rocky"
|
||||||
;;
|
;;
|
||||||
rocky)
|
rocky|promotion-testing-hash-rocky)
|
||||||
echo "queens"
|
echo "queens"
|
||||||
;;
|
;;
|
||||||
queens)
|
queens)
|
||||||
|
|
|
@ -14,6 +14,7 @@ LONG_TERM_SUPPORT_RELEASES = ['queens']
|
||||||
# NAMED DLRN HASHES
|
# NAMED DLRN HASHES
|
||||||
NEWTON_HASH_NAME = 'current-passed-ci'
|
NEWTON_HASH_NAME = 'current-passed-ci'
|
||||||
CURRENT_HASH_NAME = 'current-tripleo'
|
CURRENT_HASH_NAME = 'current-tripleo'
|
||||||
|
PROMOTION_HASH_NAME = 'tripleo-ci-testing'
|
||||||
PREVIOUS_HASH_NAME = 'previous-current-tripleo'
|
PREVIOUS_HASH_NAME = 'previous-current-tripleo'
|
||||||
|
|
||||||
|
|
||||||
|
@ -83,7 +84,8 @@ def get_dlrn_hash(release, hash_name, retries=10, timeout=4):
|
||||||
return full_hash[0]
|
return full_hash[0]
|
||||||
|
|
||||||
|
|
||||||
def compose_releases_dictionary(stable_release, featureset, upgrade_from):
|
def compose_releases_dictionary(stable_release, featureset, upgrade_from,
|
||||||
|
is_periodic=False):
|
||||||
logger = logging.getLogger('emit-releases')
|
logger = logging.getLogger('emit-releases')
|
||||||
if stable_release not in RELEASES:
|
if stable_release not in RELEASES:
|
||||||
raise RuntimeError("The {} release is not supported by this tool"
|
raise RuntimeError("The {} release is not supported by this tool"
|
||||||
|
@ -118,6 +120,8 @@ def compose_releases_dictionary(stable_release, featureset, upgrade_from):
|
||||||
|
|
||||||
if stable_release == 'newton':
|
if stable_release == 'newton':
|
||||||
current_hash = get_dlrn_hash(stable_release, NEWTON_HASH_NAME)
|
current_hash = get_dlrn_hash(stable_release, NEWTON_HASH_NAME)
|
||||||
|
elif is_periodic:
|
||||||
|
current_hash = get_dlrn_hash(stable_release, PROMOTION_HASH_NAME)
|
||||||
else:
|
else:
|
||||||
current_hash = get_dlrn_hash(stable_release, CURRENT_HASH_NAME)
|
current_hash = get_dlrn_hash(stable_release, CURRENT_HASH_NAME)
|
||||||
|
|
||||||
|
@ -273,7 +277,8 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
releases_dictionary = compose_releases_dictionary(args.stable_release,
|
releases_dictionary = compose_releases_dictionary(args.stable_release,
|
||||||
featureset,
|
featureset,
|
||||||
args.upgrade_from)
|
args.upgrade_from,
|
||||||
|
args.is_periodic)
|
||||||
|
|
||||||
releases_dictionary = shim_convert_old_release_names(releases_dictionary,
|
releases_dictionary = shim_convert_old_release_names(releases_dictionary,
|
||||||
args.is_periodic)
|
args.is_periodic)
|
||||||
|
|
|
@ -61,6 +61,64 @@ def test_overcloud_upgrade_is_n_minus_one_to_n(mock_get_hash,
|
||||||
'current-tripleo')])
|
'current-tripleo')])
|
||||||
|
|
||||||
|
|
||||||
|
@mock.patch('emit_releases_file.get_dlrn_hash')
|
||||||
|
@pytest.mark.parametrize('stable_release,expected_releases',
|
||||||
|
[('master', {
|
||||||
|
'undercloud_install_release': 'master',
|
||||||
|
'undercloud_install_hash': 'current-tripleo',
|
||||||
|
'undercloud_target_release': 'master',
|
||||||
|
'undercloud_target_hash': 'current-tripleo',
|
||||||
|
'overcloud_deploy_release': 'queens',
|
||||||
|
'overcloud_deploy_hash': 'old-current-tripleo',
|
||||||
|
'overcloud_target_release': 'master',
|
||||||
|
'overcloud_target_hash': 'current-tripleo',
|
||||||
|
}), ('rocky', {
|
||||||
|
'undercloud_install_release': 'rocky',
|
||||||
|
'undercloud_install_hash': 'current-tripleo',
|
||||||
|
'undercloud_target_release': 'rocky',
|
||||||
|
'undercloud_target_hash': 'current-tripleo',
|
||||||
|
'overcloud_deploy_release': 'queens',
|
||||||
|
'overcloud_deploy_hash': 'old-current-tripleo',
|
||||||
|
'overcloud_target_release': 'rocky',
|
||||||
|
'overcloud_target_hash': 'current-tripleo',
|
||||||
|
}), ('queens', {
|
||||||
|
'undercloud_install_release': 'queens',
|
||||||
|
'undercloud_install_hash': 'current-tripleo',
|
||||||
|
'undercloud_target_release': 'queens',
|
||||||
|
'undercloud_target_hash': 'current-tripleo',
|
||||||
|
'overcloud_deploy_release': 'pike',
|
||||||
|
'overcloud_deploy_hash': 'old-current-tripleo',
|
||||||
|
'overcloud_target_release': 'queens',
|
||||||
|
'overcloud_target_hash': 'current-tripleo',
|
||||||
|
}), ('pike', {
|
||||||
|
'undercloud_install_release': 'pike',
|
||||||
|
'undercloud_install_hash': 'current-tripleo',
|
||||||
|
'undercloud_target_release': 'pike',
|
||||||
|
'undercloud_target_hash': 'current-tripleo',
|
||||||
|
'overcloud_deploy_release': 'ocata',
|
||||||
|
'overcloud_deploy_hash': 'old-current-tripleo',
|
||||||
|
'overcloud_target_release': 'pike',
|
||||||
|
'overcloud_target_hash': 'current-tripleo',
|
||||||
|
})])
|
||||||
|
def test_period_overcloud_upgrade_is_n_minus_one_to_n(mock_get_hash,
|
||||||
|
stable_release,
|
||||||
|
expected_releases):
|
||||||
|
mock_get_hash.side_effect = ['current-tripleo', 'old-current-tripleo']
|
||||||
|
featureset = {
|
||||||
|
'mixed_upgrade': True,
|
||||||
|
'overcloud_upgrade': True,
|
||||||
|
}
|
||||||
|
upgrade_from = False
|
||||||
|
assert (compose_releases_dictionary(stable_release,
|
||||||
|
featureset,
|
||||||
|
upgrade_from,
|
||||||
|
is_periodic=True) == expected_releases)
|
||||||
|
mock_get_hash.assert_has_calls(
|
||||||
|
[mock.call(stable_release, 'tripleo-ci-testing'),
|
||||||
|
mock.call(expected_releases['overcloud_deploy_release'],
|
||||||
|
'current-tripleo')])
|
||||||
|
|
||||||
|
|
||||||
@mock.patch('emit_releases_file.get_dlrn_hash')
|
@mock.patch('emit_releases_file.get_dlrn_hash')
|
||||||
@pytest.mark.parametrize('stable_release,expected_releases', [
|
@pytest.mark.parametrize('stable_release,expected_releases', [
|
||||||
('queens', {
|
('queens', {
|
||||||
|
@ -92,6 +150,38 @@ def test_ffu_overcloud_upgrade_is_n_minus_three_to_n(mock_get_hash,
|
||||||
'current-passed-ci')])
|
'current-passed-ci')])
|
||||||
|
|
||||||
|
|
||||||
|
@mock.patch('emit_releases_file.get_dlrn_hash')
|
||||||
|
@pytest.mark.parametrize('stable_release,expected_releases', [
|
||||||
|
('queens', {
|
||||||
|
'undercloud_install_release': 'queens',
|
||||||
|
'undercloud_install_hash': 'current-tripleo',
|
||||||
|
'undercloud_target_release': 'queens',
|
||||||
|
'undercloud_target_hash': 'current-tripleo',
|
||||||
|
'overcloud_deploy_release': 'newton',
|
||||||
|
'overcloud_deploy_hash': 'old-current-tripleo',
|
||||||
|
'overcloud_target_release': 'queens',
|
||||||
|
'overcloud_target_hash': 'current-tripleo',
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
def test_period_ffu_overcloud_upgrade_is_n_minus_three_to_n(mock_get_hash,
|
||||||
|
stable_release,
|
||||||
|
expected_releases):
|
||||||
|
mock_get_hash.side_effect = ['current-tripleo', 'old-current-tripleo']
|
||||||
|
featureset = {
|
||||||
|
'mixed_upgrade': True,
|
||||||
|
'ffu_overcloud_upgrade': True,
|
||||||
|
}
|
||||||
|
upgrade_from = False
|
||||||
|
assert (compose_releases_dictionary(stable_release,
|
||||||
|
featureset,
|
||||||
|
upgrade_from,
|
||||||
|
is_periodic=True) == expected_releases)
|
||||||
|
mock_get_hash.assert_has_calls(
|
||||||
|
[mock.call(stable_release, 'tripleo-ci-testing'),
|
||||||
|
mock.call(expected_releases['overcloud_deploy_release'],
|
||||||
|
'current-passed-ci')])
|
||||||
|
|
||||||
|
|
||||||
@mock.patch('emit_releases_file.get_dlrn_hash')
|
@mock.patch('emit_releases_file.get_dlrn_hash')
|
||||||
@pytest.mark.parametrize('stable_release,expected_releases', [
|
@pytest.mark.parametrize('stable_release,expected_releases', [
|
||||||
('master', {
|
('master', {
|
||||||
|
@ -122,6 +212,37 @@ def test_undercloud_upgrade_is_n_minus_one_to_n(mock_get_hash,
|
||||||
'current-tripleo')])
|
'current-tripleo')])
|
||||||
|
|
||||||
|
|
||||||
|
@mock.patch('emit_releases_file.get_dlrn_hash')
|
||||||
|
@pytest.mark.parametrize('stable_release,expected_releases', [
|
||||||
|
('master', {
|
||||||
|
'undercloud_install_release': 'queens',
|
||||||
|
'undercloud_install_hash': 'old-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',
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
def test_period_undercloud_upgrade_is_n_minus_one_to_n(mock_get_hash,
|
||||||
|
stable_release,
|
||||||
|
expected_releases):
|
||||||
|
mock_get_hash.side_effect = ['current-tripleo', 'old-current-tripleo']
|
||||||
|
featureset = {
|
||||||
|
'undercloud_upgrade': True,
|
||||||
|
}
|
||||||
|
upgrade_from = False
|
||||||
|
assert (compose_releases_dictionary(stable_release,
|
||||||
|
featureset,
|
||||||
|
upgrade_from,
|
||||||
|
is_periodic=True) == expected_releases)
|
||||||
|
mock_get_hash.assert_has_calls(
|
||||||
|
[mock.call(stable_release, 'tripleo-ci-testing'),
|
||||||
|
mock.call(expected_releases['undercloud_install_release'],
|
||||||
|
'current-tripleo')])
|
||||||
|
|
||||||
|
|
||||||
@mock.patch('emit_releases_file.get_dlrn_hash')
|
@mock.patch('emit_releases_file.get_dlrn_hash')
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
'stable_release,expected_releases',
|
'stable_release,expected_releases',
|
||||||
|
@ -134,6 +255,15 @@ def test_undercloud_upgrade_is_n_minus_one_to_n(mock_get_hash,
|
||||||
'overcloud_deploy_hash': 'previous-current-tripleo',
|
'overcloud_deploy_hash': 'previous-current-tripleo',
|
||||||
'overcloud_target_release': 'master',
|
'overcloud_target_release': 'master',
|
||||||
'overcloud_target_hash': 'current-tripleo',
|
'overcloud_target_hash': 'current-tripleo',
|
||||||
|
}), ('rocky', {
|
||||||
|
'undercloud_install_release': 'rocky',
|
||||||
|
'undercloud_install_hash': 'current-tripleo',
|
||||||
|
'undercloud_target_release': 'rocky',
|
||||||
|
'undercloud_target_hash': 'current-tripleo',
|
||||||
|
'overcloud_deploy_release': 'rocky',
|
||||||
|
'overcloud_deploy_hash': 'previous-current-tripleo',
|
||||||
|
'overcloud_target_release': 'rocky',
|
||||||
|
'overcloud_target_hash': 'current-tripleo',
|
||||||
}), ('queens', {
|
}), ('queens', {
|
||||||
'undercloud_install_release': 'queens',
|
'undercloud_install_release': 'queens',
|
||||||
'undercloud_install_hash': 'current-tripleo',
|
'undercloud_install_hash': 'current-tripleo',
|
||||||
|
@ -161,6 +291,56 @@ def test_overcloud_update_target_is_hash(mock_get_hash,
|
||||||
'previous-current-tripleo')])
|
'previous-current-tripleo')])
|
||||||
|
|
||||||
|
|
||||||
|
@mock.patch('emit_releases_file.get_dlrn_hash')
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
'stable_release,expected_releases',
|
||||||
|
[('master', {
|
||||||
|
'undercloud_install_release': 'master',
|
||||||
|
'undercloud_install_hash': 'tripleo-ci-testing',
|
||||||
|
'undercloud_target_release': 'master',
|
||||||
|
'undercloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_deploy_release': 'master',
|
||||||
|
'overcloud_deploy_hash': 'previous-current-tripleo',
|
||||||
|
'overcloud_target_release': 'master',
|
||||||
|
'overcloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
}), ('rocky', {
|
||||||
|
'undercloud_install_release': 'rocky',
|
||||||
|
'undercloud_install_hash': 'tripleo-ci-testing',
|
||||||
|
'undercloud_target_release': 'rocky',
|
||||||
|
'undercloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_deploy_release': 'rocky',
|
||||||
|
'overcloud_deploy_hash': 'previous-current-tripleo',
|
||||||
|
'overcloud_target_release': 'rocky',
|
||||||
|
'overcloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
}), ('queens', {
|
||||||
|
'undercloud_install_release': 'queens',
|
||||||
|
'undercloud_install_hash': 'tripleo-ci-testing',
|
||||||
|
'undercloud_target_release': 'queens',
|
||||||
|
'undercloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_deploy_release': 'queens',
|
||||||
|
'overcloud_deploy_hash': 'previous-current-tripleo',
|
||||||
|
'overcloud_target_release': 'queens',
|
||||||
|
'overcloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
})])
|
||||||
|
def test_period_overcloud_update_target_is_hash(mock_get_hash,
|
||||||
|
stable_release,
|
||||||
|
expected_releases):
|
||||||
|
mock_get_hash.side_effect = ['tripleo-ci-testing',
|
||||||
|
'previous-current-tripleo']
|
||||||
|
featureset = {
|
||||||
|
'overcloud_update': True,
|
||||||
|
}
|
||||||
|
upgrade_from = False
|
||||||
|
assert (compose_releases_dictionary(stable_release,
|
||||||
|
featureset,
|
||||||
|
upgrade_from,
|
||||||
|
is_periodic=True) == expected_releases)
|
||||||
|
mock_get_hash.assert_has_calls(
|
||||||
|
[mock.call(stable_release, 'tripleo-ci-testing'),
|
||||||
|
mock.call(expected_releases['overcloud_deploy_release'],
|
||||||
|
'previous-current-tripleo')])
|
||||||
|
|
||||||
|
|
||||||
@mock.patch('emit_releases_file.get_dlrn_hash')
|
@mock.patch('emit_releases_file.get_dlrn_hash')
|
||||||
@pytest.mark.parametrize('stable_release,expected_releases',
|
@pytest.mark.parametrize('stable_release,expected_releases',
|
||||||
[('master', {
|
[('master', {
|
||||||
|
@ -172,6 +352,15 @@ def test_overcloud_update_target_is_hash(mock_get_hash,
|
||||||
'overcloud_deploy_hash': 'current-tripleo',
|
'overcloud_deploy_hash': 'current-tripleo',
|
||||||
'overcloud_target_release': 'master',
|
'overcloud_target_release': 'master',
|
||||||
'overcloud_target_hash': 'current-tripleo',
|
'overcloud_target_hash': 'current-tripleo',
|
||||||
|
}), ('rocky', {
|
||||||
|
'undercloud_install_release': 'rocky',
|
||||||
|
'undercloud_install_hash': 'current-tripleo',
|
||||||
|
'undercloud_target_release': 'rocky',
|
||||||
|
'undercloud_target_hash': 'current-tripleo',
|
||||||
|
'overcloud_deploy_release': 'rocky',
|
||||||
|
'overcloud_deploy_hash': 'current-tripleo',
|
||||||
|
'overcloud_target_release': 'rocky',
|
||||||
|
'overcloud_target_hash': 'current-tripleo',
|
||||||
}), ('queens', {
|
}), ('queens', {
|
||||||
'undercloud_install_release': 'queens',
|
'undercloud_install_release': 'queens',
|
||||||
'undercloud_install_hash': 'current-tripleo',
|
'undercloud_install_hash': 'current-tripleo',
|
||||||
|
@ -210,3 +399,64 @@ def test_noop_target_is_the_same(mock_get_hash,
|
||||||
featureset,
|
featureset,
|
||||||
upgrade_from) == expected_releases)
|
upgrade_from) == expected_releases)
|
||||||
mock_get_hash.assert_called_once_with(stable_release, 'current-tripleo')
|
mock_get_hash.assert_called_once_with(stable_release, 'current-tripleo')
|
||||||
|
|
||||||
|
|
||||||
|
@mock.patch('emit_releases_file.get_dlrn_hash')
|
||||||
|
@pytest.mark.parametrize('stable_release,expected_releases',
|
||||||
|
[('master', {
|
||||||
|
'undercloud_install_release': 'master',
|
||||||
|
'undercloud_install_hash': 'tripleo-ci-testing',
|
||||||
|
'undercloud_target_release': 'master',
|
||||||
|
'undercloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_deploy_release': 'master',
|
||||||
|
'overcloud_deploy_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_target_release': 'master',
|
||||||
|
'overcloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
}), ('rocky', {
|
||||||
|
'undercloud_install_release': 'rocky',
|
||||||
|
'undercloud_install_hash': 'tripleo-ci-testing',
|
||||||
|
'undercloud_target_release': 'rocky',
|
||||||
|
'undercloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_deploy_release': 'rocky',
|
||||||
|
'overcloud_deploy_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_target_release': 'rocky',
|
||||||
|
'overcloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
}), ('queens', {
|
||||||
|
'undercloud_install_release': 'queens',
|
||||||
|
'undercloud_install_hash': 'tripleo-ci-testing',
|
||||||
|
'undercloud_target_release': 'queens',
|
||||||
|
'undercloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_deploy_release': 'queens',
|
||||||
|
'overcloud_deploy_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_target_release': 'queens',
|
||||||
|
'overcloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
}), ('pike', {
|
||||||
|
'undercloud_install_release': 'pike',
|
||||||
|
'undercloud_install_hash': 'tripleo-ci-testing',
|
||||||
|
'undercloud_target_release': 'pike',
|
||||||
|
'undercloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_deploy_release': 'pike',
|
||||||
|
'overcloud_deploy_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_target_release': 'pike',
|
||||||
|
'overcloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
}), ('ocata', {
|
||||||
|
'undercloud_install_release': 'ocata',
|
||||||
|
'undercloud_install_hash': 'tripleo-ci-testing',
|
||||||
|
'undercloud_target_release': 'ocata',
|
||||||
|
'undercloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_deploy_release': 'ocata',
|
||||||
|
'overcloud_deploy_hash': 'tripleo-ci-testing',
|
||||||
|
'overcloud_target_release': 'ocata',
|
||||||
|
'overcloud_target_hash': 'tripleo-ci-testing',
|
||||||
|
})])
|
||||||
|
def test_periodic_noop_target_is_the_same(mock_get_hash,
|
||||||
|
stable_release,
|
||||||
|
expected_releases):
|
||||||
|
mock_get_hash.return_value = 'tripleo-ci-testing'
|
||||||
|
featureset = {}
|
||||||
|
upgrade_from = False
|
||||||
|
assert (compose_releases_dictionary(stable_release,
|
||||||
|
featureset,
|
||||||
|
upgrade_from,
|
||||||
|
is_periodic=True) == expected_releases)
|
||||||
|
mock_get_hash.assert_called_once_with(stable_release, 'tripleo-ci-testing')
|
||||||
|
|
|
@ -22,10 +22,10 @@ function previous_release_mixed_upgrade_case {
|
||||||
# NOTE: we need to update this when we cut a stable branch
|
# NOTE: we need to update this when we cut a stable branch
|
||||||
echo "queens"
|
echo "queens"
|
||||||
;;
|
;;
|
||||||
stein)
|
stein|promotion-testing-hash-stein)
|
||||||
echo "rocky"
|
echo "rocky"
|
||||||
;;
|
;;
|
||||||
rocky)
|
rocky|promotion-testing-hash-rocky)
|
||||||
echo "queens"
|
echo "queens"
|
||||||
;;
|
;;
|
||||||
queens)
|
queens)
|
||||||
|
|
Loading…
Reference in New Issue