Create non-bootable ISO for variant without buildinstall
If the configuration specifically excludes a variant from buildinstall, but does not also disable ISO creation, we should just create a non-bootable ISO instead of reporting a warning. JIRA: COMPOSE-2887 Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
45fa9d3273
commit
5346e000f0
@ -59,6 +59,10 @@ class CreateisoPhase(PhaseLoggerMixin, PhaseBase):
|
|||||||
return False
|
return False
|
||||||
if variant.type != "variant":
|
if variant.type != "variant":
|
||||||
return False
|
return False
|
||||||
|
skip = get_arch_variant_data(self.compose.conf, "buildinstall_skip", arch, variant)
|
||||||
|
if skip == [True]:
|
||||||
|
# Buildinstall is skipped for this tree. Can't create a bootable ISO.
|
||||||
|
return False
|
||||||
return self.compose.conf["bootable"]
|
return self.compose.conf["bootable"]
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
@ -272,6 +272,69 @@ class CreateisoPhaseTest(helpers.PungiTestCase):
|
|||||||
'src'))]
|
'src'))]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@mock.patch('pungi.createiso.write_script')
|
||||||
|
@mock.patch('pungi.phases.createiso.prepare_iso')
|
||||||
|
@mock.patch('pungi.phases.createiso.split_iso')
|
||||||
|
@mock.patch('pungi.phases.createiso.ThreadPool')
|
||||||
|
def test_bootable_product_but_not_variant(
|
||||||
|
self, ThreadPool, split_iso, prepare_iso, write_script
|
||||||
|
):
|
||||||
|
compose = helpers.DummyCompose(self.topdir, {
|
||||||
|
'release_short': 'test',
|
||||||
|
'release_version': '1.0',
|
||||||
|
'release_is_layered': False,
|
||||||
|
'buildinstall_method': 'lorax',
|
||||||
|
'bootable': True,
|
||||||
|
'createiso_skip': [],
|
||||||
|
'buildinstall_skip': [('Server', {'*': True})],
|
||||||
|
})
|
||||||
|
helpers.touch(os.path.join(
|
||||||
|
compose.paths.compose.os_tree('x86_64', compose.variants['Server']),
|
||||||
|
'dummy.rpm'))
|
||||||
|
disc_data = mock.Mock()
|
||||||
|
split_iso.return_value = [disc_data]
|
||||||
|
prepare_iso.return_value = 'dummy-graft-points'
|
||||||
|
|
||||||
|
pool = ThreadPool.return_value
|
||||||
|
|
||||||
|
mock_bi = mock.Mock(succeeded=lambda v, a: False)
|
||||||
|
|
||||||
|
phase = createiso.CreateisoPhase(compose, mock_bi)
|
||||||
|
phase.logger = mock.Mock()
|
||||||
|
phase.run()
|
||||||
|
|
||||||
|
self.maxDiff = None
|
||||||
|
self.assertItemsEqual(
|
||||||
|
prepare_iso.call_args_list,
|
||||||
|
[mock.call(compose, 'x86_64', compose.variants['Server'],
|
||||||
|
disc_count=1, disc_num=1, split_iso_data=disc_data)])
|
||||||
|
self.assertItemsEqual(
|
||||||
|
split_iso.call_args_list,
|
||||||
|
[mock.call(compose, 'x86_64', compose.variants['Server'], no_split=False, logger=phase.logger)])
|
||||||
|
self.assertEqual(len(pool.add.call_args_list), 1)
|
||||||
|
self.assertItemsEqual(
|
||||||
|
[x[0][0] for x in write_script.call_args_list],
|
||||||
|
[CreateIsoOpts(output_dir='%s/compose/Server/x86_64/iso' % self.topdir,
|
||||||
|
iso_name='image-name',
|
||||||
|
volid='test-1.0 Server.x86_64',
|
||||||
|
graft_points='dummy-graft-points',
|
||||||
|
arch='x86_64',
|
||||||
|
supported=True,
|
||||||
|
jigdo_dir='%s/compose/Server/x86_64/jigdo' % self.topdir,
|
||||||
|
os_tree='%s/compose/Server/x86_64/os' % self.topdir)])
|
||||||
|
self.assertItemsEqual(
|
||||||
|
pool.queue_put.call_args_list,
|
||||||
|
[mock.call((compose,
|
||||||
|
{'iso_path': '%s/compose/Server/x86_64/iso/image-name' % self.topdir,
|
||||||
|
'bootable': False,
|
||||||
|
'cmd': ['bash', self.topdir + '/work/x86_64/tmp-Server/createiso-image-name.sh'],
|
||||||
|
'label': '',
|
||||||
|
'disc_num': 1,
|
||||||
|
'disc_count': 1},
|
||||||
|
compose.variants['Server'],
|
||||||
|
'x86_64'))]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class CreateisoThreadTest(helpers.PungiTestCase):
|
class CreateisoThreadTest(helpers.PungiTestCase):
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user