Add 8-stream repo support

If you switch to 8-stream, we need those version for the HA and
powertools repo.

Change-Id: I12a79a6d57b9dd590f478a392b5a292eb0c00c60
This commit is contained in:
Alex Schultz 2020-10-30 09:38:02 -06:00
parent 1c4a717be3
commit 3820739738
2 changed files with 83 additions and 6 deletions

View File

@ -53,7 +53,7 @@ enabled=1
OPSTOOLS_REPO_TEMPLATE = '''
[tripleo-centos-opstools]
name=tripleo-centos-opstools
baseurl=%s/centos/7/opstools/$basearch/
baseurl=%(mirror)s/centos/7/opstools/$basearch/
gpgcheck=0
enabled=1
'''
@ -61,7 +61,7 @@ enabled=1
HIGHAVAILABILITY_REPO_TEMPLATE = '''
[tripleo-centos-highavailability]
name=tripleo-centos-highavailability
baseurl=%s/centos/8/HighAvailability/$basearch/os/
baseurl=%(mirror)s/centos/%(stream)s/HighAvailability/$basearch/os/
gpgcheck=0
enabled=1
'''
@ -69,7 +69,7 @@ enabled=1
POWERTOOLS_REPO_TEMPLATE = '''
[tripleo-centos-powertools]
name=tripleo-centos-powertools
baseurl=%s/centos/8/PowerTools/$basearch/os/
baseurl=%(mirror)s/centos/%(stream)s/PowerTools/$basearch/os/
gpgcheck=0
enabled=1
'''
@ -170,6 +170,10 @@ def _parse_args():
parser.add_argument('--rdo-mirror',
default=DEFAULT_RDO_MIRROR,
help='Server from which to install RDO packages.')
parser.add_argument('--stream',
action='store_true',
default=False,
help='Enable stream support for CentOS repos')
args = parser.parse_args()
args.old_mirror = default_mirror
@ -404,15 +408,20 @@ def _install_repos(args, base_path):
content = _create_ceph(args, 'nautilus')
_write_repo(content, args.output_path)
elif repo == 'opstools':
content = OPSTOOLS_REPO_TEMPLATE % args.mirror
content = OPSTOOLS_REPO_TEMPLATE % {'mirror': args.mirror}
_write_repo(content, args.output_path)
else:
raise InvalidArguments('Invalid repo "%s" specified' % repo)
# HA, Powertools are required for CentOS-8
if args.distro == 'centos8':
content = HIGHAVAILABILITY_REPO_TEMPLATE % args.mirror
stream = '8'
if args.stream:
stream = stream + '-stream'
content = HIGHAVAILABILITY_REPO_TEMPLATE % {'mirror': args.mirror,
'stream': stream}
_write_repo(content, args.output_path)
content = POWERTOOLS_REPO_TEMPLATE % args.mirror
content = POWERTOOLS_REPO_TEMPLATE % {'mirror': args.mirror,
'stream': stream}
_write_repo(content, args.output_path)

View File

@ -379,6 +379,74 @@ enabled=1
self.assertRaises(main.InvalidArguments, main._install_repos, args,
'roads/')
@mock.patch('tripleo_repos.main._get_repo')
@mock.patch('tripleo_repos.main._write_repo')
def test_install_repos_centos8(self, mock_write, mock_get):
args = mock.Mock()
args.repos = ['current']
args.branch = 'master'
args.output_path = 'test'
args.distro = 'centos8'
args.stream = False
args.mirror = 'mirror'
mock_get.return_value = '[delorean]\nMr. Fusion'
main._install_repos(args, 'roads/')
self.assertEqual([mock.call('roads/current/delorean.repo', args),
mock.call('roads/delorean-deps.repo', args),
],
mock_get.mock_calls)
self.assertEqual([mock.call('[delorean]\nMr. Fusion', 'test',
name='delorean'),
mock.call('[delorean]\nMr. Fusion', 'test'),
mock.call((
'\n[tripleo-centos-highavailability]\n'
'name=tripleo-centos-highavailability\n'
'baseurl=mirror/centos/8/HighAvailability'
'/$basearch/os/\ngpgcheck=0\nenabled=1\n'),
'test'),
mock.call((
'\n[tripleo-centos-powertools]\n'
'name=tripleo-centos-powertools\n'
'baseurl=mirror/centos/8/PowerTools'
'/$basearch/os/\ngpgcheck=0\nenabled=1\n'),
'test')
],
mock_write.mock_calls)
@mock.patch('tripleo_repos.main._get_repo')
@mock.patch('tripleo_repos.main._write_repo')
def test_install_repos_centos8_stream(self, mock_write, mock_get):
args = mock.Mock()
args.repos = ['current']
args.branch = 'master'
args.output_path = 'test'
args.distro = 'centos8'
args.stream = True
args.mirror = 'mirror'
mock_get.return_value = '[delorean]\nMr. Fusion'
main._install_repos(args, 'roads/')
self.assertEqual([mock.call('roads/current/delorean.repo', args),
mock.call('roads/delorean-deps.repo', args),
],
mock_get.mock_calls)
self.assertEqual([mock.call('[delorean]\nMr. Fusion', 'test',
name='delorean'),
mock.call('[delorean]\nMr. Fusion', 'test'),
mock.call((
'\n[tripleo-centos-highavailability]\n'
'name=tripleo-centos-highavailability\n'
'baseurl=mirror/centos/8-stream/HighAvailability'
'/$basearch/os/\ngpgcheck=0\nenabled=1\n'),
'test'),
mock.call((
'\n[tripleo-centos-powertools]\n'
'name=tripleo-centos-powertools\n'
'baseurl=mirror/centos/8-stream/PowerTools'
'/$basearch/os/\ngpgcheck=0\nenabled=1\n'),
'test')
],
mock_write.mock_calls)
def test_write_repo(self):
m = mock.mock_open()
with mock.patch('tripleo_repos.main.open', m, create=True):