Limit stream validation for CentOS 8 only

When preparing repos it doesn't make sense to validate 'stream'
for any distro except centos 8. Centos 9 is stream only and all
before 8 don't have a stream.

Change-Id: If6911737bf423806d1ec84ee4a5d147e74521719
This commit is contained in:
Sagi Shnaidman 2021-12-15 14:14:26 +02:00
parent 2abb8bd32e
commit 5ee86bdd9a
2 changed files with 23 additions and 18 deletions

View File

@ -303,11 +303,15 @@ def _validate_tripleo_ci_testing(repos):
return True return True
def _validate_distro_stream(args, distro_name): def _validate_distro_stream(args, distro_name, distro_major_version_id):
"""Validate stream related args vs host """Validate stream related args vs host
Fails if stream is to be used but the host isn't a stream OS or vice versa Fails if stream is to be used but the host isn't a stream OS or vice versa
""" """
if 'centos' not in distro_name.lower():
return True
if distro_name.lower() == 'centos' and distro_major_version_id != '8':
return True
is_stream = args.stream and not args.no_stream is_stream = args.stream and not args.no_stream
if is_stream and 'stream' not in distro_name.lower(): if is_stream and 'stream' not in distro_name.lower():
raise InvalidArguments('--stream provided, but OS is not the Stream ' raise InvalidArguments('--stream provided, but OS is not the Stream '
@ -319,11 +323,11 @@ def _validate_distro_stream(args, distro_name):
return True return True
def _validate_args(args, distro_name): def _validate_args(args, distro_name, distro_major_version_id):
_validate_current_tripleo(args.repos) _validate_current_tripleo(args.repos)
_validate_distro_repos(args) _validate_distro_repos(args)
_validate_tripleo_ci_testing(args.repos) _validate_tripleo_ci_testing(args.repos)
_validate_distro_stream(args, distro_name) _validate_distro_stream(args, distro_name, distro_major_version_id)
def _remove_existing(args): def _remove_existing(args):
@ -541,7 +545,7 @@ def _run_pkg_clean(distro):
def main(): def main():
distro_id, distro_major_version_id, distro_name = _get_distro() distro_id, distro_major_version_id, distro_name = _get_distro()
args = _parse_args(distro_id, distro_major_version_id) args = _parse_args(distro_id, distro_major_version_id)
_validate_args(args, distro_name) _validate_args(args, distro_name, distro_major_version_id)
base_path = _get_base_path(args) base_path = _get_base_path(args)
if args.distro in ['centos7']: if args.distro in ['centos7']:
_install_priorities() _install_priorities()

View File

@ -39,7 +39,7 @@ class TestTripleORepos(testtools.TestCase):
mock_path = mock.Mock() mock_path = mock.Mock()
mock_gbp.return_value = mock_path mock_gbp.return_value = mock_path
main.main() main.main()
mock_validate.assert_called_once_with(args, 'CentOS 8') mock_validate.assert_called_once_with(args, 'CentOS 8', '8')
mock_gbp.assert_called_once_with(args) mock_gbp.assert_called_once_with(args)
mock_ip.assert_called_once_with() mock_ip.assert_called_once_with()
mock_remove.assert_called_once_with(args) mock_remove.assert_called_once_with(args)
@ -61,7 +61,7 @@ class TestTripleORepos(testtools.TestCase):
mock_path = mock.Mock() mock_path = mock.Mock()
mock_gbp.return_value = mock_path mock_gbp.return_value = mock_path
main.main() main.main()
mock_validate.assert_called_once_with(args, 'CentOS 8') mock_validate.assert_called_once_with(args, 'CentOS 8', '8')
mock_gbp.assert_called_once_with(args) mock_gbp.assert_called_once_with(args)
assert not mock_ip.called, '_install_priorities should no tbe called' assert not mock_ip.called, '_install_priorities should no tbe called'
mock_remove.assert_called_once_with(args) mock_remove.assert_called_once_with(args)
@ -637,64 +637,65 @@ class TestValidate(testtools.TestCase):
self.args.repos = ['current'] self.args.repos = ['current']
self.args.branch = 'master' self.args.branch = 'master'
self.args.distro = 'centos7' self.args.distro = 'centos7'
self.distro_major_version_id = "7"
self.args.stream = False self.args.stream = False
self.args.no_stream = False self.args.no_stream = False
def test_good(self): def test_good(self):
main._validate_args(self.args, '') main._validate_args(self.args, '', '')
def test_current_and_tripleo_dev(self): def test_current_and_tripleo_dev(self):
self.args.repos = ['current', 'current-tripleo-dev'] self.args.repos = ['current', 'current-tripleo-dev']
self.assertRaises(main.InvalidArguments, main._validate_args, self.assertRaises(main.InvalidArguments, main._validate_args,
self.args, '') self.args, '', '')
def test_tripleo_ci_testing_and_current_tripleo(self): def test_tripleo_ci_testing_and_current_tripleo(self):
self.args.repos = ['current-tripleo', 'tripleo-ci-testing'] self.args.repos = ['current-tripleo', 'tripleo-ci-testing']
self.assertRaises(main.InvalidArguments, main._validate_args, self.assertRaises(main.InvalidArguments, main._validate_args,
self.args, '') self.args, '', '')
def test_tripleo_ci_testing_and_ceph_opstools_allowed(self): def test_tripleo_ci_testing_and_ceph_opstools_allowed(self):
self.args.repos = ['ceph', 'opstools', 'tripleo-ci-testing'] self.args.repos = ['ceph', 'opstools', 'tripleo-ci-testing']
main._validate_args(self.args, '') main._validate_args(self.args, '', '')
def test_tripleo_ci_testing_and_deps_allowed(self): def test_tripleo_ci_testing_and_deps_allowed(self):
self.args.repos = ['deps', 'tripleo-ci-testing'] self.args.repos = ['deps', 'tripleo-ci-testing']
main._validate_args(self.args, '') main._validate_args(self.args, '', '')
def test_ceph_and_tripleo_dev(self): def test_ceph_and_tripleo_dev(self):
self.args.repos = ['current-tripleo-dev', 'ceph'] self.args.repos = ['current-tripleo-dev', 'ceph']
self.args.output_path = main.DEFAULT_OUTPUT_PATH self.args.output_path = main.DEFAULT_OUTPUT_PATH
main._validate_args(self.args, '') main._validate_args(self.args, '', '')
def test_deps_and_tripleo_dev(self): def test_deps_and_tripleo_dev(self):
self.args.repos = ['deps', 'current-tripleo-dev'] self.args.repos = ['deps', 'current-tripleo-dev']
self.assertRaises(main.InvalidArguments, main._validate_args, self.assertRaises(main.InvalidArguments, main._validate_args,
self.args, '') self.args, '', '')
def test_current_and_tripleo(self): def test_current_and_tripleo(self):
self.args.repos = ['current', 'current-tripleo'] self.args.repos = ['current', 'current-tripleo']
self.assertRaises(main.InvalidArguments, main._validate_args, self.assertRaises(main.InvalidArguments, main._validate_args,
self.args, '') self.args, '', '')
def test_deps_and_tripleo_allowed(self): def test_deps_and_tripleo_allowed(self):
self.args.repos = ['deps', 'current-tripleo'] self.args.repos = ['deps', 'current-tripleo']
main._validate_args(self.args, '') main._validate_args(self.args, '', '')
def test_invalid_distro(self): def test_invalid_distro(self):
self.args.distro = 'Jigawatts 1.21' self.args.distro = 'Jigawatts 1.21'
self.assertRaises(main.InvalidArguments, main._validate_args, self.assertRaises(main.InvalidArguments, main._validate_args,
self.args, '') self.args, '', '')
def test_invalid_stream(self): def test_invalid_stream(self):
self.args.stream = True self.args.stream = True
self.assertRaises(main.InvalidArguments, main._validate_args, self.assertRaises(main.InvalidArguments, main._validate_args,
self.args, 'CentOS 8') self.args, 'CentOS 8', '8')
def test_invalid_no_stream(self): def test_invalid_no_stream(self):
self.args.stream = False self.args.stream = False
self.args.no_stream = True self.args.no_stream = True
self.assertRaises(main.InvalidArguments, main._validate_args, self.assertRaises(main.InvalidArguments, main._validate_args,
self.args, 'CentOS 8 Stream') self.args, 'CentOS 8 Stream', '8')
def test_validate_distro_repos(self): def test_validate_distro_repos(self):
self.assertTrue(main._validate_distro_repos(self.args)) self.assertTrue(main._validate_distro_repos(self.args))