buildinstall: Allow customizing dracut arguments
JIRA: COMPOSE-3853 Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
908a6a759d
commit
c346492df4
doc
pungi
tests
@ -538,6 +538,10 @@ Options
|
|||||||
* ``rootfs_size`` -- [*int*] (default empty)
|
* ``rootfs_size`` -- [*int*] (default empty)
|
||||||
* ``version`` -- [*str*] (default from ``release_version``) -- used as
|
* ``version`` -- [*str*] (default from ``release_version``) -- used as
|
||||||
``--version`` and ``--release`` argument on the lorax command line
|
``--version`` and ``--release`` argument on the lorax command line
|
||||||
|
* ``dracut_args`` -- [*[str]*] (default empty) override arguments for
|
||||||
|
dracut. Please note that if this option is used, lorax will not use any
|
||||||
|
other arguments, so you have to provide a full list and can not just
|
||||||
|
add something.
|
||||||
**lorax_extra_sources**
|
**lorax_extra_sources**
|
||||||
(*list*) -- a variant/arch mapping with urls for extra source repositories
|
(*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.
|
added to Lorax command line. Either one repo or a list can be specified.
|
||||||
|
@ -1205,6 +1205,7 @@ def make_schema():
|
|||||||
'add_arch_template_var': {"$ref": "#/definitions/list_of_strings"},
|
'add_arch_template_var': {"$ref": "#/definitions/list_of_strings"},
|
||||||
"rootfs_size": {"type": "integer"},
|
"rootfs_size": {"type": "integer"},
|
||||||
"version": {"type": "string"},
|
"version": {"type": "string"},
|
||||||
|
"dracut_args": {"$ref": "#/definitions/list_of_strings"},
|
||||||
},
|
},
|
||||||
"additionalProperties": False,
|
"additionalProperties": False,
|
||||||
}),
|
}),
|
||||||
|
@ -70,6 +70,7 @@ class BuildinstallPhase(PhaseBase):
|
|||||||
add_arch_template = []
|
add_arch_template = []
|
||||||
add_template_var = []
|
add_template_var = []
|
||||||
add_arch_template_var = []
|
add_arch_template_var = []
|
||||||
|
dracut_args = []
|
||||||
rootfs_size = None
|
rootfs_size = None
|
||||||
version = self.compose.conf["release_version"]
|
version = self.compose.conf["release_version"]
|
||||||
for data in get_arch_variant_data(self.compose.conf, 'lorax_options', arch, variant):
|
for data in get_arch_variant_data(self.compose.conf, 'lorax_options', arch, variant):
|
||||||
@ -85,6 +86,7 @@ class BuildinstallPhase(PhaseBase):
|
|||||||
add_arch_template.extend(data.get('add_arch_template', []))
|
add_arch_template.extend(data.get('add_arch_template', []))
|
||||||
add_template_var.extend(data.get('add_template_var', []))
|
add_template_var.extend(data.get('add_template_var', []))
|
||||||
add_arch_template_var.extend(data.get('add_arch_template_var', []))
|
add_arch_template_var.extend(data.get('add_arch_template_var', []))
|
||||||
|
dracut_args.extend(data.get("dracut_args", []))
|
||||||
if "version" in data:
|
if "version" in data:
|
||||||
version = data["version"]
|
version = data["version"]
|
||||||
output_dir = os.path.join(output_dir, variant.uid)
|
output_dir = os.path.join(output_dir, variant.uid)
|
||||||
@ -112,25 +114,28 @@ class BuildinstallPhase(PhaseBase):
|
|||||||
repos.append(comps_repo)
|
repos.append(comps_repo)
|
||||||
|
|
||||||
lorax = LoraxWrapper()
|
lorax = LoraxWrapper()
|
||||||
lorax_cmd = lorax.get_lorax_cmd(self.compose.conf["release_name"],
|
lorax_cmd = lorax.get_lorax_cmd(
|
||||||
version,
|
self.compose.conf["release_name"],
|
||||||
version,
|
version,
|
||||||
repos,
|
version,
|
||||||
output_dir,
|
repos,
|
||||||
variant=variant.uid,
|
output_dir,
|
||||||
buildinstallpackages=variant.buildinstallpackages,
|
variant=variant.uid,
|
||||||
is_final=self.compose.supported,
|
buildinstallpackages=variant.buildinstallpackages,
|
||||||
buildarch=buildarch,
|
is_final=self.compose.supported,
|
||||||
volid=volid,
|
buildarch=buildarch,
|
||||||
nomacboot=nomacboot,
|
volid=volid,
|
||||||
bugurl=bugurl,
|
nomacboot=nomacboot,
|
||||||
add_template=add_template,
|
bugurl=bugurl,
|
||||||
add_arch_template=add_arch_template,
|
add_template=add_template,
|
||||||
add_template_var=add_template_var,
|
add_arch_template=add_arch_template,
|
||||||
add_arch_template_var=add_arch_template_var,
|
add_template_var=add_template_var,
|
||||||
noupgrade=noupgrade,
|
add_arch_template_var=add_arch_template_var,
|
||||||
rootfs_size=rootfs_size,
|
noupgrade=noupgrade,
|
||||||
log_dir=log_dir)
|
rootfs_size=rootfs_size,
|
||||||
|
log_dir=log_dir,
|
||||||
|
dracut_args=dracut_args,
|
||||||
|
)
|
||||||
return 'rm -rf %s && %s' % (shlex_quote(output_topdir),
|
return 'rm -rf %s && %s' % (shlex_quote(output_topdir),
|
||||||
' '.join([shlex_quote(x) for x in lorax_cmd]))
|
' '.join([shlex_quote(x) for x in lorax_cmd]))
|
||||||
|
|
||||||
|
@ -27,7 +27,8 @@ class LoraxWrapper(object):
|
|||||||
add_template=None, add_arch_template=None,
|
add_template=None, add_arch_template=None,
|
||||||
add_template_var=None, add_arch_template_var=None,
|
add_template_var=None, add_arch_template_var=None,
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=None):
|
log_dir=None,
|
||||||
|
dracut_args=None):
|
||||||
cmd = ["lorax"]
|
cmd = ["lorax"]
|
||||||
cmd.append("--product=%s" % product)
|
cmd.append("--product=%s" % product)
|
||||||
cmd.append("--version=%s" % version)
|
cmd.append("--version=%s" % version)
|
||||||
@ -71,6 +72,9 @@ class LoraxWrapper(object):
|
|||||||
if rootfs_size is not None:
|
if rootfs_size is not None:
|
||||||
cmd.append('--rootfs-size=%s' % (rootfs_size))
|
cmd.append('--rootfs-size=%s' % (rootfs_size))
|
||||||
|
|
||||||
|
for i in force_list(dracut_args or []):
|
||||||
|
cmd.append("--dracut-arg=%s" % i)
|
||||||
|
|
||||||
output_dir = os.path.abspath(output_dir)
|
output_dir = os.path.abspath(output_dir)
|
||||||
cmd.append(output_dir)
|
cmd.append(output_dir)
|
||||||
|
|
||||||
|
@ -124,7 +124,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
log_dir=self.topdir + "/logs/x86_64/buildinstall-Server-logs",
|
||||||
|
dracut_args=[]),
|
||||||
mock.call('Test', '1', '1',
|
mock.call('Test', '1', '1',
|
||||||
[self.topdir + "/work/amd64/repo/p1",
|
[self.topdir + "/work/amd64/repo/p1",
|
||||||
self.topdir + "/work/amd64/repo/p2",
|
self.topdir + "/work/amd64/repo/p2",
|
||||||
@ -136,7 +137,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
log_dir=self.topdir + "/logs/amd64/buildinstall-Server-logs",
|
||||||
|
dracut_args=[]),
|
||||||
mock.call('Test', '1', '1',
|
mock.call('Test', '1', '1',
|
||||||
[self.topdir + "/work/amd64/repo/p1",
|
[self.topdir + "/work/amd64/repo/p1",
|
||||||
self.topdir + "/work/amd64/repo/p2",
|
self.topdir + "/work/amd64/repo/p2",
|
||||||
@ -148,7 +150,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Client-logs')])
|
log_dir=self.topdir + "/logs/amd64/buildinstall-Client-logs",
|
||||||
|
dracut_args=[])])
|
||||||
six.assertCountEqual(
|
six.assertCountEqual(
|
||||||
self,
|
self,
|
||||||
get_volid.mock_calls,
|
get_volid.mock_calls,
|
||||||
@ -195,7 +198,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Client-logs')],
|
log_dir=self.topdir + "/logs/amd64/buildinstall-Client-logs",
|
||||||
|
dracut_args=[])],
|
||||||
any_order=True)
|
any_order=True)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
get_volid.mock_calls,
|
get_volid.mock_calls,
|
||||||
@ -261,6 +265,7 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
'add_arch_template_var': ['quux=2'],
|
'add_arch_template_var': ['quux=2'],
|
||||||
"rootfs_size": 3,
|
"rootfs_size": 3,
|
||||||
"version": "1.2.3",
|
"version": "1.2.3",
|
||||||
|
"dracut_args": ["--xz", "--install", "/.buildstamp"],
|
||||||
},
|
},
|
||||||
'amd64': {'noupgrade': False}
|
'amd64': {'noupgrade': False}
|
||||||
}),
|
}),
|
||||||
@ -303,7 +308,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',
|
||||||
rootfs_size=3,
|
rootfs_size=3,
|
||||||
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
log_dir=self.topdir + "/logs/x86_64/buildinstall-Server-logs",
|
||||||
|
dracut_args=["--xz", "--install", "/.buildstamp"]),
|
||||||
mock.call('Test', '1', '1',
|
mock.call('Test', '1', '1',
|
||||||
[self.topdir + "/work/amd64/repo/p1",
|
[self.topdir + "/work/amd64/repo/p1",
|
||||||
self.topdir + '/work/amd64/comps_repo_Server'],
|
self.topdir + '/work/amd64/comps_repo_Server'],
|
||||||
@ -314,7 +320,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
log_dir=self.topdir + "/logs/amd64/buildinstall-Server-logs",
|
||||||
|
dracut_args=[]),
|
||||||
mock.call('Test', '1', '1',
|
mock.call('Test', '1', '1',
|
||||||
[self.topdir + "/work/amd64/repo/p1",
|
[self.topdir + "/work/amd64/repo/p1",
|
||||||
self.topdir + '/work/amd64/comps_repo_Client'],
|
self.topdir + '/work/amd64/comps_repo_Client'],
|
||||||
@ -325,7 +332,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Client-logs')])
|
log_dir=self.topdir + "/logs/amd64/buildinstall-Client-logs",
|
||||||
|
dracut_args=[])])
|
||||||
six.assertCountEqual(
|
six.assertCountEqual(
|
||||||
self,
|
self,
|
||||||
get_volid.mock_calls,
|
get_volid.mock_calls,
|
||||||
@ -383,7 +391,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
log_dir=self.topdir + "/logs/x86_64/buildinstall-Server-logs",
|
||||||
|
dracut_args=[]),
|
||||||
mock.call('Test', '1', '1',
|
mock.call('Test', '1', '1',
|
||||||
[self.topdir + "/work/amd64/repo/p1",
|
[self.topdir + "/work/amd64/repo/p1",
|
||||||
self.topdir + '/work/amd64/comps_repo_Server'],
|
self.topdir + '/work/amd64/comps_repo_Server'],
|
||||||
@ -394,7 +403,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
log_dir=self.topdir + "/logs/amd64/buildinstall-Server-logs",
|
||||||
|
dracut_args=[]),
|
||||||
mock.call('Test', '1', '1',
|
mock.call('Test', '1', '1',
|
||||||
[self.topdir + "/work/amd64/repo/p1",
|
[self.topdir + "/work/amd64/repo/p1",
|
||||||
self.topdir + '/work/amd64/comps_repo_Client'],
|
self.topdir + '/work/amd64/comps_repo_Client'],
|
||||||
@ -405,7 +415,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Client-logs')])
|
log_dir=self.topdir + "/logs/amd64/buildinstall-Client-logs",
|
||||||
|
dracut_args=[])])
|
||||||
six.assertCountEqual(
|
six.assertCountEqual(
|
||||||
self,
|
self,
|
||||||
get_volid.mock_calls,
|
get_volid.mock_calls,
|
||||||
@ -463,7 +474,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
add_template_var=[], add_arch_template_var=[],
|
add_template_var=[], add_arch_template_var=[],
|
||||||
bugurl=None,
|
bugurl=None,
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=buildinstall_topdir + '/x86_64/Server/logs'),
|
log_dir=buildinstall_topdir + "/x86_64/Server/logs",
|
||||||
|
dracut_args=[]),
|
||||||
mock.call('Test', '1', '1',
|
mock.call('Test', '1', '1',
|
||||||
["http://localhost/work/amd64/repo/p1",
|
["http://localhost/work/amd64/repo/p1",
|
||||||
'http://localhost/work/amd64/comps_repo_Server'],
|
'http://localhost/work/amd64/comps_repo_Server'],
|
||||||
@ -474,7 +486,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=buildinstall_topdir + '/amd64/Server/logs'),
|
log_dir=buildinstall_topdir + "/amd64/Server/logs",
|
||||||
|
dracut_args=[]),
|
||||||
mock.call('Test', '1', '1',
|
mock.call('Test', '1', '1',
|
||||||
["http://localhost/work/amd64/repo/p1",
|
["http://localhost/work/amd64/repo/p1",
|
||||||
'http://localhost/work/amd64/comps_repo_Client'],
|
'http://localhost/work/amd64/comps_repo_Client'],
|
||||||
@ -485,7 +498,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=buildinstall_topdir + '/amd64/Client/logs')])
|
log_dir=buildinstall_topdir + "/amd64/Client/logs",
|
||||||
|
dracut_args=[])])
|
||||||
six.assertCountEqual(
|
six.assertCountEqual(
|
||||||
self,
|
self,
|
||||||
get_volid.mock_calls,
|
get_volid.mock_calls,
|
||||||
@ -535,7 +549,8 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
add_template_var=[], add_arch_template_var=[],
|
add_template_var=[], add_arch_template_var=[],
|
||||||
bugurl=None,
|
bugurl=None,
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/x86_64/buildinstall-Server-logs'),
|
log_dir=self.topdir + "/logs/x86_64/buildinstall-Server-logs",
|
||||||
|
dracut_args=[]),
|
||||||
mock.call('Test', '1', '1',
|
mock.call('Test', '1', '1',
|
||||||
[self.topdir + "/work/amd64/repo/p1",
|
[self.topdir + "/work/amd64/repo/p1",
|
||||||
self.topdir + '/work/amd64/comps_repo_Server'],
|
self.topdir + '/work/amd64/comps_repo_Server'],
|
||||||
@ -546,7 +561,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Server-logs'),
|
log_dir=self.topdir + "/logs/amd64/buildinstall-Server-logs",
|
||||||
|
dracut_args=[]),
|
||||||
mock.call('Test', '1', '1',
|
mock.call('Test', '1', '1',
|
||||||
[self.topdir + "/work/amd64/repo/p1",
|
[self.topdir + "/work/amd64/repo/p1",
|
||||||
"http://example.com/repo2",
|
"http://example.com/repo2",
|
||||||
@ -559,7 +575,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=[],
|
||||||
rootfs_size=None,
|
rootfs_size=None,
|
||||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Client-logs')])
|
log_dir=self.topdir + "/logs/amd64/buildinstall-Client-logs",
|
||||||
|
dracut_args=[])])
|
||||||
|
|
||||||
|
|
||||||
@mock.patch(
|
@mock.patch(
|
||||||
|
@ -46,7 +46,8 @@ class LoraxWrapperTest(unittest.TestCase):
|
|||||||
add_arch_template=['ta1', 'ta2'],
|
add_arch_template=['ta1', 'ta2'],
|
||||||
add_template_var=['v1', 'v2'],
|
add_template_var=['v1', 'v2'],
|
||||||
add_arch_template_var=['va1', 'va2'],
|
add_arch_template_var=['va1', 'va2'],
|
||||||
log_dir='/tmp')
|
log_dir="/tmp",
|
||||||
|
dracut_args=["--foo", "bar"])
|
||||||
|
|
||||||
self.assertEqual(cmd[0], 'lorax')
|
self.assertEqual(cmd[0], 'lorax')
|
||||||
six.assertCountEqual(
|
six.assertCountEqual(
|
||||||
@ -64,5 +65,7 @@ class LoraxWrapperTest(unittest.TestCase):
|
|||||||
"--add-template-var=v1", "--add-template-var=v2",
|
"--add-template-var=v1", "--add-template-var=v2",
|
||||||
"--add-arch-template-var=va1", "--add-arch-template-var=va2",
|
"--add-arch-template-var=va1", "--add-arch-template-var=va2",
|
||||||
"--logfile=/tmp/lorax.log",
|
"--logfile=/tmp/lorax.log",
|
||||||
|
"--dracut-arg=--foo",
|
||||||
|
"--dracut-arg=bar",
|
||||||
"/mnt/output_dir"],
|
"/mnt/output_dir"],
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user