buildinstall: Add extra repos
A new configuration option is added that allows users to point lorax to extra repositories. This can be handy if some tools to create the bootable image are not part of the product itself. Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com> JIRA: COMPOSE-2253
This commit is contained in:
parent
1436ea2b03
commit
d9e2101b08
@ -493,6 +493,9 @@ Options
|
|||||||
* ``add_arch_template`` -- *[str]* (default empty)
|
* ``add_arch_template`` -- *[str]* (default empty)
|
||||||
* ``add_template_var`` -- *[str]* (default empty)
|
* ``add_template_var`` -- *[str]* (default empty)
|
||||||
* ``add_arch_template_var`` -- *[str]* (default empty)
|
* ``add_arch_template_var`` -- *[str]* (default empty)
|
||||||
|
**lorax_extra_sources**
|
||||||
|
(*list*) -- a variant/arch mapping with urls for extra source repositories
|
||||||
|
added to Lorax command line. Either one repo or a list can be specified.
|
||||||
**buildinstall_kickstart**
|
**buildinstall_kickstart**
|
||||||
(:ref:`scm_dict <scm_support>`) -- If specified, this kickstart file will
|
(:ref:`scm_dict <scm_support>`) -- If specified, this kickstart file will
|
||||||
be copied into each file and pointed to in boot configuration.
|
be copied into each file and pointed to in boot configuration.
|
||||||
@ -537,6 +540,13 @@ Example
|
|||||||
})
|
})
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Add another repository for lorax to install packages from
|
||||||
|
lorax_extra_sources = [
|
||||||
|
('^Simple$', {
|
||||||
|
'*': 'https://example.com/repo/$basearch/',
|
||||||
|
})
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
@ -1027,6 +1027,10 @@ def make_schema():
|
|||||||
"additionalProperties": False,
|
"additionalProperties": False,
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
"lorax_extra_sources": _variant_arch_mapping({
|
||||||
|
"$ref": "#/definitions/strings",
|
||||||
|
}),
|
||||||
|
|
||||||
"signing_key_id": {"type": "string"},
|
"signing_key_id": {"type": "string"},
|
||||||
"signing_key_password_file": {"type": "string"},
|
"signing_key_password_file": {"type": "string"},
|
||||||
"signing_command": {"type": "string"},
|
"signing_command": {"type": "string"},
|
||||||
|
@ -95,11 +95,14 @@ class BuildinstallPhase(PhaseBase):
|
|||||||
log_dir = os.path.join(log_dir, "logs")
|
log_dir = os.path.join(log_dir, "logs")
|
||||||
output_dir = os.path.join(output_dir, "results")
|
output_dir = os.path.join(output_dir, "results")
|
||||||
|
|
||||||
|
repos = [repo_baseurl] + get_arch_variant_data(self.compose.conf,
|
||||||
|
'lorax_extra_sources', arch, variant)
|
||||||
|
|
||||||
lorax = LoraxWrapper()
|
lorax = LoraxWrapper()
|
||||||
lorax_cmd = lorax.get_lorax_cmd(self.compose.conf["release_name"],
|
lorax_cmd = lorax.get_lorax_cmd(self.compose.conf["release_name"],
|
||||||
self.compose.conf["release_version"],
|
self.compose.conf["release_version"],
|
||||||
self.compose.conf["release_version"],
|
self.compose.conf["release_version"],
|
||||||
repo_baseurl,
|
repos,
|
||||||
output_dir,
|
output_dir,
|
||||||
variant=variant.uid,
|
variant=variant.uid,
|
||||||
buildinstallpackages=variant.buildinstallpackages,
|
buildinstallpackages=variant.buildinstallpackages,
|
||||||
|
@ -113,7 +113,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
# Obtained correct lorax commands.
|
# Obtained correct lorax commands.
|
||||||
self.assertItemsEqual(
|
self.assertItemsEqual(
|
||||||
loraxCls.return_value.get_lorax_cmd.mock_calls,
|
loraxCls.return_value.get_lorax_cmd.mock_calls,
|
||||||
[mock.call('Test', '1', '1', self.topdir + '/work/x86_64/repo',
|
[mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/x86_64/repo'],
|
||||||
self.topdir + '/work/x86_64/buildinstall/Server',
|
self.topdir + '/work/x86_64/buildinstall/Server',
|
||||||
buildarch='x86_64', is_final=True, nomacboot=True, noupgrade=True,
|
buildarch='x86_64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
||||||
@ -121,7 +122,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
add_template=[], add_arch_template=[],
|
add_template=[], add_arch_template=[],
|
||||||
add_template_var=[], add_arch_template_var=[],
|
add_template_var=[], add_arch_template_var=[],
|
||||||
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
||||||
mock.call('Test', '1', '1', self.topdir + '/work/amd64/repo',
|
mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/amd64/repo'],
|
||||||
self.topdir + '/work/amd64/buildinstall/Server',
|
self.topdir + '/work/amd64/buildinstall/Server',
|
||||||
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
||||||
@ -129,7 +131,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
add_template=[], add_arch_template=[],
|
add_template=[], add_arch_template=[],
|
||||||
add_template_var=[], add_arch_template_var=[],
|
add_template_var=[], add_arch_template_var=[],
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
||||||
mock.call('Test', '1', '1', self.topdir + '/work/amd64/repo',
|
mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/amd64/repo'],
|
||||||
self.topdir + '/work/amd64/buildinstall/Client',
|
self.topdir + '/work/amd64/buildinstall/Client',
|
||||||
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
volid='vol_id', variant='Client', buildinstallpackages=[],
|
volid='vol_id', variant='Client', buildinstallpackages=[],
|
||||||
@ -173,7 +176,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
# Obtained correct lorax command.
|
# Obtained correct lorax command.
|
||||||
lorax = loraxCls.return_value
|
lorax = loraxCls.return_value
|
||||||
lorax.get_lorax_cmd.assert_has_calls(
|
lorax.get_lorax_cmd.assert_has_calls(
|
||||||
[mock.call('Test', '1', '1', self.topdir + '/work/amd64/repo',
|
[mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/amd64/repo'],
|
||||||
self.topdir + '/work/amd64/buildinstall/Client',
|
self.topdir + '/work/amd64/buildinstall/Client',
|
||||||
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
volid='vol_id', variant='Client', buildinstallpackages=[],
|
volid='vol_id', variant='Client', buildinstallpackages=[],
|
||||||
@ -272,7 +276,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
# Obtained correct lorax commands.
|
# Obtained correct lorax commands.
|
||||||
self.assertItemsEqual(
|
self.assertItemsEqual(
|
||||||
loraxCls.return_value.get_lorax_cmd.mock_calls,
|
loraxCls.return_value.get_lorax_cmd.mock_calls,
|
||||||
[mock.call('Test', '1', '1', self.topdir + '/work/x86_64/repo',
|
[mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/x86_64/repo'],
|
||||||
self.topdir + '/work/x86_64/buildinstall/Server',
|
self.topdir + '/work/x86_64/buildinstall/Server',
|
||||||
buildarch='x86_64', is_final=True, nomacboot=True, noupgrade=True,
|
buildarch='x86_64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
||||||
@ -280,7 +285,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
add_template_var=['baz=1'], add_arch_template_var=['quux=2'],
|
add_template_var=['baz=1'], add_arch_template_var=['quux=2'],
|
||||||
bugurl='http://example.com',
|
bugurl='http://example.com',
|
||||||
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
||||||
mock.call('Test', '1', '1', self.topdir + '/work/amd64/repo',
|
mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/amd64/repo'],
|
||||||
self.topdir + '/work/amd64/buildinstall/Server',
|
self.topdir + '/work/amd64/buildinstall/Server',
|
||||||
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=False,
|
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=False,
|
||||||
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
||||||
@ -288,7 +294,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
add_template=[], add_arch_template=[],
|
add_template=[], add_arch_template=[],
|
||||||
add_template_var=[], add_arch_template_var=[],
|
add_template_var=[], add_arch_template_var=[],
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
||||||
mock.call('Test', '1', '1', self.topdir + '/work/amd64/repo',
|
mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/amd64/repo'],
|
||||||
self.topdir + '/work/amd64/buildinstall/Client',
|
self.topdir + '/work/amd64/buildinstall/Client',
|
||||||
buildarch='amd64', is_final=True, nomacboot=False, noupgrade=True,
|
buildarch='amd64', is_final=True, nomacboot=False, noupgrade=True,
|
||||||
volid='vol_id', variant='Client', buildinstallpackages=[],
|
volid='vol_id', variant='Client', buildinstallpackages=[],
|
||||||
@ -341,7 +348,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
# Obtained correct lorax commands.
|
# Obtained correct lorax commands.
|
||||||
self.assertItemsEqual(
|
self.assertItemsEqual(
|
||||||
loraxCls.return_value.get_lorax_cmd.mock_calls,
|
loraxCls.return_value.get_lorax_cmd.mock_calls,
|
||||||
[mock.call('Test', '1', '1', self.topdir + '/work/x86_64/repo',
|
[mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/x86_64/repo'],
|
||||||
self.topdir + '/work/x86_64/buildinstall/Server',
|
self.topdir + '/work/x86_64/buildinstall/Server',
|
||||||
buildarch='x86_64', is_final=True, nomacboot=False, noupgrade=False,
|
buildarch='x86_64', is_final=True, nomacboot=False, noupgrade=False,
|
||||||
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
||||||
@ -349,7 +357,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
add_template=[], add_arch_template=[],
|
add_template=[], add_arch_template=[],
|
||||||
add_template_var=[], add_arch_template_var=[],
|
add_template_var=[], add_arch_template_var=[],
|
||||||
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
||||||
mock.call('Test', '1', '1', self.topdir + '/work/amd64/repo',
|
mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/amd64/repo'],
|
||||||
self.topdir + '/work/amd64/buildinstall/Server',
|
self.topdir + '/work/amd64/buildinstall/Server',
|
||||||
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=False,
|
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=False,
|
||||||
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
||||||
@ -357,7 +366,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
add_template=[], add_arch_template=[],
|
add_template=[], add_arch_template=[],
|
||||||
add_template_var=[], add_arch_template_var=[],
|
add_template_var=[], add_arch_template_var=[],
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
||||||
mock.call('Test', '1', '1', self.topdir + '/work/amd64/repo',
|
mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/amd64/repo'],
|
||||||
self.topdir + '/work/amd64/buildinstall/Client',
|
self.topdir + '/work/amd64/buildinstall/Client',
|
||||||
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=False,
|
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=False,
|
||||||
volid='vol_id', variant='Client', buildinstallpackages=[],
|
volid='vol_id', variant='Client', buildinstallpackages=[],
|
||||||
@ -410,7 +420,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
# Obtained correct lorax commands.
|
# Obtained correct lorax commands.
|
||||||
self.assertItemsEqual(
|
self.assertItemsEqual(
|
||||||
loraxCls.return_value.get_lorax_cmd.mock_calls,
|
loraxCls.return_value.get_lorax_cmd.mock_calls,
|
||||||
[mock.call('Test', '1', '1', 'http://localhost/work/x86_64/repo',
|
[mock.call('Test', '1', '1',
|
||||||
|
['http://localhost/work/x86_64/repo'],
|
||||||
buildinstall_topdir + '/x86_64/Server/results',
|
buildinstall_topdir + '/x86_64/Server/results',
|
||||||
buildarch='x86_64', is_final=True, nomacboot=True, noupgrade=True,
|
buildarch='x86_64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
||||||
@ -418,7 +429,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
add_template_var=[], add_arch_template_var=[],
|
add_template_var=[], add_arch_template_var=[],
|
||||||
bugurl=None,
|
bugurl=None,
|
||||||
log_dir=buildinstall_topdir + '/x86_64/Server/logs'),
|
log_dir=buildinstall_topdir + '/x86_64/Server/logs'),
|
||||||
mock.call('Test', '1', '1', 'http://localhost/work/amd64/repo',
|
mock.call('Test', '1', '1',
|
||||||
|
['http://localhost/work/amd64/repo'],
|
||||||
buildinstall_topdir + '/amd64/Server/results',
|
buildinstall_topdir + '/amd64/Server/results',
|
||||||
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
||||||
@ -426,7 +438,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
add_template=[], add_arch_template=[],
|
add_template=[], add_arch_template=[],
|
||||||
add_template_var=[], add_arch_template_var=[],
|
add_template_var=[], add_arch_template_var=[],
|
||||||
log_dir=buildinstall_topdir + '/amd64/Server/logs'),
|
log_dir=buildinstall_topdir + '/amd64/Server/logs'),
|
||||||
mock.call('Test', '1', '1', 'http://localhost/work/amd64/repo',
|
mock.call('Test', '1', '1',
|
||||||
|
['http://localhost/work/amd64/repo'],
|
||||||
buildinstall_topdir + '/amd64/Client/results',
|
buildinstall_topdir + '/amd64/Client/results',
|
||||||
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
volid='vol_id', variant='Client', buildinstallpackages=[],
|
volid='vol_id', variant='Client', buildinstallpackages=[],
|
||||||
@ -440,6 +453,66 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
mock.call(compose, 'amd64', variant=compose.variants['Client'], disc_type='dvd'),
|
mock.call(compose, 'amd64', variant=compose.variants['Client'], disc_type='dvd'),
|
||||||
mock.call(compose, 'amd64', variant=compose.variants['Server'], disc_type='dvd')])
|
mock.call(compose, 'amd64', variant=compose.variants['Server'], disc_type='dvd')])
|
||||||
|
|
||||||
|
@mock.patch('pungi.phases.buildinstall.ThreadPool')
|
||||||
|
@mock.patch('pungi.phases.buildinstall.LoraxWrapper')
|
||||||
|
@mock.patch('pungi.phases.buildinstall.get_volid')
|
||||||
|
def test_uses_lorax_extra_repos(self, get_volid, loraxCls, poolCls):
|
||||||
|
compose = BuildInstallCompose(self.topdir, {
|
||||||
|
'bootable': True,
|
||||||
|
'release_name': 'Test',
|
||||||
|
'release_short': 't',
|
||||||
|
'release_version': '1',
|
||||||
|
'release_is_layered': False,
|
||||||
|
'buildinstall_method': 'lorax',
|
||||||
|
'lorax_extra_sources': [
|
||||||
|
('^Server$', {
|
||||||
|
'x86_64': "http://example.com/repo1",
|
||||||
|
}),
|
||||||
|
('^Client$', {
|
||||||
|
'*': ["http://example.com/repo2", "http://example.com/repo3"],
|
||||||
|
}),
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
get_volid.return_value = 'vol_id'
|
||||||
|
loraxCls.return_value.get_lorax_cmd.return_value = ['lorax', '...']
|
||||||
|
|
||||||
|
phase = BuildinstallPhase(compose)
|
||||||
|
|
||||||
|
phase.run()
|
||||||
|
|
||||||
|
self.assertItemsEqual(
|
||||||
|
loraxCls.return_value.get_lorax_cmd.mock_calls,
|
||||||
|
[mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/x86_64/repo', "http://example.com/repo1"],
|
||||||
|
self.topdir + '/work/x86_64/buildinstall/Server',
|
||||||
|
buildarch='x86_64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
|
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
||||||
|
add_template=[], add_arch_template=[],
|
||||||
|
add_template_var=[], add_arch_template_var=[],
|
||||||
|
bugurl=None,
|
||||||
|
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
||||||
|
mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/amd64/repo'],
|
||||||
|
self.topdir + '/work/amd64/buildinstall/Server',
|
||||||
|
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
|
volid='vol_id', variant='Server', buildinstallpackages=['bash', 'vim'],
|
||||||
|
bugurl=None,
|
||||||
|
add_template=[], add_arch_template=[],
|
||||||
|
add_template_var=[], add_arch_template_var=[],
|
||||||
|
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
||||||
|
mock.call('Test', '1', '1',
|
||||||
|
[self.topdir + '/work/amd64/repo',
|
||||||
|
"http://example.com/repo2",
|
||||||
|
"http://example.com/repo3"],
|
||||||
|
self.topdir + '/work/amd64/buildinstall/Client',
|
||||||
|
buildarch='amd64', is_final=True, nomacboot=True, noupgrade=True,
|
||||||
|
volid='vol_id', variant='Client', buildinstallpackages=[],
|
||||||
|
bugurl=None,
|
||||||
|
add_template=[], add_arch_template=[],
|
||||||
|
add_template_var=[], add_arch_template_var=[],
|
||||||
|
log_dir=self.topdir + '/logs/amd64/buildinstall-Client-logs')])
|
||||||
|
|
||||||
|
|
||||||
class TestCopyFiles(PungiTestCase):
|
class TestCopyFiles(PungiTestCase):
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user