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
|
import productmd.treeinfo
|
||||||
|
|
||||||
from pungi import createiso
|
from pungi import createiso
|
||||||
|
from pungi import metadata
|
||||||
from pungi.phases.base import ConfigGuardedPhase, PhaseBase, PhaseLoggerMixin
|
from pungi.phases.base import ConfigGuardedPhase, PhaseBase, PhaseLoggerMixin
|
||||||
from pungi.phases.createiso import (add_iso_to_metadata, copy_boot_images,
|
from pungi.phases.createiso import (add_iso_to_metadata, copy_boot_images,
|
||||||
run_createiso_command, load_and_tweak_treeinfo)
|
run_createiso_command, load_and_tweak_treeinfo)
|
||||||
@ -78,6 +79,8 @@ class ExtraIsosThread(WorkerThread):
|
|||||||
iso_dir = compose.paths.compose.iso_dir(arch, variant)
|
iso_dir = compose.paths.compose.iso_dir(arch, variant)
|
||||||
iso_path = os.path.join(iso_dir, filename)
|
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)
|
msg = "Creating ISO (arch: %s, variant: %s): %s" % (arch, variant, filename)
|
||||||
self.pool.log_info("[BEGIN] %s" % msg)
|
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)
|
volid = get_volid(compose, arch, variant, disc_type=disc_type)
|
||||||
return 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)
|
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_volume_id')
|
||||||
@mock.patch('pungi.phases.extra_isos.get_filename')
|
@mock.patch('pungi.phases.extra_isos.get_filename')
|
||||||
@mock.patch('pungi.phases.extra_isos.get_iso_contents')
|
@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')
|
@mock.patch('pungi.phases.extra_isos.add_iso_to_metadata')
|
||||||
class ExtraIsosThreadTest(helpers.PungiTestCase):
|
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, {
|
compose = helpers.DummyCompose(self.topdir, {
|
||||||
'bootable': True,
|
'bootable': True,
|
||||||
'buildinstall_method': 'lorax'
|
'buildinstall_method': 'lorax'
|
||||||
@ -149,8 +150,9 @@ class ExtraIsosThreadTest(helpers.PungiTestCase):
|
|||||||
os.path.join(self.topdir, 'compose/Server/x86_64/iso/my.iso'),
|
os.path.join(self.topdir, 'compose/Server/x86_64/iso/my.iso'),
|
||||||
True, additional_variants=["Client"])]
|
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, {
|
compose = helpers.DummyCompose(self.topdir, {
|
||||||
'bootable': True,
|
'bootable': True,
|
||||||
'buildinstall_method': 'lorax',
|
'buildinstall_method': 'lorax',
|
||||||
@ -192,8 +194,9 @@ class ExtraIsosThreadTest(helpers.PungiTestCase):
|
|||||||
os.path.join(self.topdir, 'compose/Server/x86_64/iso/my.iso'),
|
os.path.join(self.topdir, 'compose/Server/x86_64/iso/my.iso'),
|
||||||
True, additional_variants=["Client"])]
|
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, {})
|
compose = helpers.DummyCompose(self.topdir, {})
|
||||||
server = compose.variants['Server']
|
server = compose.variants['Server']
|
||||||
cfg = {
|
cfg = {
|
||||||
@ -233,8 +236,9 @@ class ExtraIsosThreadTest(helpers.PungiTestCase):
|
|||||||
os.path.join(self.topdir, 'compose/Server/x86_64/iso/my.iso'),
|
os.path.join(self.topdir, 'compose/Server/x86_64/iso/my.iso'),
|
||||||
False, additional_variants=["Client"])]
|
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, {
|
compose = helpers.DummyCompose(self.topdir, {
|
||||||
'bootable': True,
|
'bootable': True,
|
||||||
'buildinstall_method': 'lorax'
|
'buildinstall_method': 'lorax'
|
||||||
@ -275,8 +279,9 @@ class ExtraIsosThreadTest(helpers.PungiTestCase):
|
|||||||
os.path.join(self.topdir, 'compose/Server/source/iso/my.iso'),
|
os.path.join(self.topdir, 'compose/Server/source/iso/my.iso'),
|
||||||
False, additional_variants=["Client"])]
|
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, {})
|
compose = helpers.DummyCompose(self.topdir, {})
|
||||||
server = compose.variants['Server']
|
server = compose.variants['Server']
|
||||||
cfg = {
|
cfg = {
|
||||||
@ -295,7 +300,7 @@ class ExtraIsosThreadTest(helpers.PungiTestCase):
|
|||||||
|
|
||||||
self.assertEqual(aitm.call_args_list, [])
|
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, {})
|
compose = helpers.DummyCompose(self.topdir, {})
|
||||||
server = compose.variants['Server']
|
server = compose.variants['Server']
|
||||||
cfg = {
|
cfg = {
|
||||||
@ -638,5 +643,47 @@ class TweakTreeinfoTest(helpers.PungiTestCase):
|
|||||||
self.assertFilesEqual(output, expected)
|
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__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
Reference in New Issue
Block a user