extra_iso: Include media.repo and .discinfo
JIRA: COMPOSE-2994 Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
736772f954
commit
66d9c10a6f
@ -20,6 +20,7 @@ from kobo.threads import ThreadPool, WorkerThread
|
||||
import productmd.treeinfo
|
||||
|
||||
from pungi import createiso
|
||||
from pungi import metadata
|
||||
from pungi.phases.base import ConfigGuardedPhase, PhaseBase, PhaseLoggerMixin
|
||||
from pungi.phases.createiso import (add_iso_to_metadata, copy_boot_images,
|
||||
run_createiso_command, load_and_tweak_treeinfo)
|
||||
@ -78,6 +79,8 @@ class ExtraIsosThread(WorkerThread):
|
||||
iso_dir = compose.paths.compose.iso_dir(arch, variant)
|
||||
iso_path = os.path.join(iso_dir, filename)
|
||||
|
||||
prepare_media_metadata(compose, variant, arch)
|
||||
|
||||
msg = "Creating ISO (arch: %s, variant: %s): %s" % (arch, variant, filename)
|
||||
self.pool.log_info("[BEGIN] %s" % msg)
|
||||
|
||||
@ -249,3 +252,16 @@ def get_volume_id(compose, variant, arch, formats):
|
||||
volid = get_volid(compose, arch, variant, disc_type=disc_type)
|
||||
return get_volid(compose, arch, variant, disc_type=disc_type,
|
||||
formats=force_list(formats), volid=volid)
|
||||
|
||||
|
||||
def prepare_media_metadata(compose, variant, arch):
|
||||
"""Write a .discinfo and media.repo files to a directory that will be
|
||||
included on the ISO. It's possible to overwrite the files by using extra
|
||||
files.
|
||||
"""
|
||||
md_dir = compose.paths.work.extra_iso_extra_files_dir(arch, variant)
|
||||
description = metadata.get_description(compose, variant, arch)
|
||||
metadata.create_media_repo(
|
||||
os.path.join(md_dir, "media.repo"), description, timestamp=None
|
||||
)
|
||||
metadata.create_discinfo(os.path.join(md_dir, ".discinfo"), description, arch)
|
||||
|
@ -100,6 +100,7 @@ class ExtraIsosPhaseTest(helpers.PungiTestCase):
|
||||
)
|
||||
|
||||
|
||||
@mock.patch('pungi.phases.extra_isos.prepare_media_metadata')
|
||||
@mock.patch('pungi.phases.extra_isos.get_volume_id')
|
||||
@mock.patch('pungi.phases.extra_isos.get_filename')
|
||||
@mock.patch('pungi.phases.extra_isos.get_iso_contents')
|
||||
@ -108,7 +109,7 @@ class ExtraIsosPhaseTest(helpers.PungiTestCase):
|
||||
@mock.patch('pungi.phases.extra_isos.add_iso_to_metadata')
|
||||
class ExtraIsosThreadTest(helpers.PungiTestCase):
|
||||
|
||||
def test_binary_bootable_image(self, aitm, rcc, gef, gic, gfn, gvi):
|
||||
def test_binary_bootable_image(self, aitm, rcc, gef, gic, gfn, gvi, pmm):
|
||||
compose = helpers.DummyCompose(self.topdir, {
|
||||
'bootable': True,
|
||||
'buildinstall_method': 'lorax'
|
||||
@ -149,8 +150,9 @@ class ExtraIsosThreadTest(helpers.PungiTestCase):
|
||||
os.path.join(self.topdir, 'compose/Server/x86_64/iso/my.iso'),
|
||||
True, additional_variants=["Client"])]
|
||||
)
|
||||
self.assertEqual(pmm.call_args_list, [mock.call(compose, server, "x86_64")])
|
||||
|
||||
def test_binary_bootable_image_without_jigdo(self, aitm, rcc, gef, gic, gfn, gvi):
|
||||
def test_binary_bootable_image_without_jigdo(self, aitm, rcc, gef, gic, gfn, gvi, pmm):
|
||||
compose = helpers.DummyCompose(self.topdir, {
|
||||
'bootable': True,
|
||||
'buildinstall_method': 'lorax',
|
||||
@ -192,8 +194,9 @@ class ExtraIsosThreadTest(helpers.PungiTestCase):
|
||||
os.path.join(self.topdir, 'compose/Server/x86_64/iso/my.iso'),
|
||||
True, additional_variants=["Client"])]
|
||||
)
|
||||
self.assertEqual(pmm.call_args_list, [mock.call(compose, server, "x86_64")])
|
||||
|
||||
def test_binary_image_custom_naming(self, aitm, rcc, gef, gic, gfn, gvi):
|
||||
def test_binary_image_custom_naming(self, aitm, rcc, gef, gic, gfn, gvi, pmm):
|
||||
compose = helpers.DummyCompose(self.topdir, {})
|
||||
server = compose.variants['Server']
|
||||
cfg = {
|
||||
@ -233,8 +236,9 @@ class ExtraIsosThreadTest(helpers.PungiTestCase):
|
||||
os.path.join(self.topdir, 'compose/Server/x86_64/iso/my.iso'),
|
||||
False, additional_variants=["Client"])]
|
||||
)
|
||||
self.assertEqual(pmm.call_args_list, [mock.call(compose, server, "x86_64")])
|
||||
|
||||
def test_source_is_not_bootable(self, aitm, rcc, gef, gic, gfn, gvi):
|
||||
def test_source_is_not_bootable(self, aitm, rcc, gef, gic, gfn, gvi, pmm):
|
||||
compose = helpers.DummyCompose(self.topdir, {
|
||||
'bootable': True,
|
||||
'buildinstall_method': 'lorax'
|
||||
@ -275,8 +279,9 @@ class ExtraIsosThreadTest(helpers.PungiTestCase):
|
||||
os.path.join(self.topdir, 'compose/Server/source/iso/my.iso'),
|
||||
False, additional_variants=["Client"])]
|
||||
)
|
||||
self.assertEqual(pmm.call_args_list, [mock.call(compose, server, "src")])
|
||||
|
||||
def test_failable_failed(self, aitm, rcc, gef, gic, gfn, gvi):
|
||||
def test_failable_failed(self, aitm, rcc, gef, gic, gfn, gvi, pmm):
|
||||
compose = helpers.DummyCompose(self.topdir, {})
|
||||
server = compose.variants['Server']
|
||||
cfg = {
|
||||
@ -295,7 +300,7 @@ class ExtraIsosThreadTest(helpers.PungiTestCase):
|
||||
|
||||
self.assertEqual(aitm.call_args_list, [])
|
||||
|
||||
def test_non_failable_failed(self, aitm, rcc, gef, gic, gfn, gvi):
|
||||
def test_non_failable_failed(self, aitm, rcc, gef, gic, gfn, gvi, pmm):
|
||||
compose = helpers.DummyCompose(self.topdir, {})
|
||||
server = compose.variants['Server']
|
||||
cfg = {
|
||||
@ -638,5 +643,47 @@ class TweakTreeinfoTest(helpers.PungiTestCase):
|
||||
self.assertFilesEqual(output, expected)
|
||||
|
||||
|
||||
class PrepareMetadataTest(helpers.PungiTestCase):
|
||||
@mock.patch("pungi.metadata.create_media_repo")
|
||||
@mock.patch("pungi.metadata.create_discinfo")
|
||||
@mock.patch("pungi.metadata.get_description")
|
||||
def test_write_files(self, get_description, create_discinfo, create_media_repo):
|
||||
compose = helpers.DummyCompose(self.topdir, {})
|
||||
variant = compose.variants["Server"]
|
||||
arch = "x86_64"
|
||||
|
||||
extra_isos.prepare_media_metadata(compose, variant, arch)
|
||||
|
||||
self.assertEqual(
|
||||
get_description.call_args_list, [mock.call(compose, variant, arch)]
|
||||
)
|
||||
self.assertEqual(
|
||||
create_discinfo.call_args_list,
|
||||
[
|
||||
mock.call(
|
||||
os.path.join(
|
||||
self.topdir,
|
||||
"work/x86_64/Server/extra-iso-extra-files/.discinfo",
|
||||
),
|
||||
get_description.return_value,
|
||||
arch,
|
||||
)
|
||||
],
|
||||
)
|
||||
self.assertEqual(
|
||||
create_media_repo.call_args_list,
|
||||
[
|
||||
mock.call(
|
||||
os.path.join(
|
||||
self.topdir,
|
||||
"work/x86_64/Server/extra-iso-extra-files/media.repo",
|
||||
),
|
||||
get_description.return_value,
|
||||
timestamp=None,
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
Loading…
Reference in New Issue
Block a user