From c89f0334579aee68286d07d4b57f4df67510166c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Mon, 9 Oct 2017 13:46:54 +0200 Subject: [PATCH] live-images: Honor global settings for target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of the old default value and custom handling introduce new option `live_images_target` (for consistency with other phases) and use the usual inheritance rules. Fixes: https://pagure.io/pungi/issue/749 Signed-off-by: Lubomír Sedlář --- doc/configuration.rst | 10 ++++------ pungi/checks.py | 8 ++++---- pungi/phases/live_images.py | 7 +++++-- tests/test_liveimagesphase.py | 35 +++++++++++++++++++++++++++++------ 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/doc/configuration.rst b/doc/configuration.rst index 5a9cbc94..df3ca544 100644 --- a/doc/configuration.rst +++ b/doc/configuration.rst @@ -973,11 +973,12 @@ The kickstart URL is configured by these options. * ``image_build_ksurl`` * ``live_images_ksurl`` -Target is specified by these settings. For live images refer to ``live_target``. +Target is specified by these settings. * ``global_target`` -- global fallback setting * ``live_media_target`` * ``image_build_target`` + * ``live_images_target`` Version is specified by these options. If no version is set, a default value will be provided according to :ref:`automatic versioning `. @@ -1006,10 +1007,6 @@ compose. If the list contains only ``"*"``, all arches will be substituted. Live Images Settings ==================== -**live_target** - (*str*) -- Koji build target for which to build the images. This gets - passed to ``koji spin-livecd``. - **live_images** (*list*) -- Configuration for the particular image. The elements of the list should be tuples ``(variant_uid_regex, {arch|*: config})``. The config @@ -1019,6 +1016,7 @@ Live Images Settings * ``ksurl`` (*str*) [optional] -- where to get the kickstart from * ``name`` (*str*) * ``version`` (*str*) + * ``target`` (*str*) * ``repo`` (*str|[str]*) -- repos specified by URL or variant UID * ``specfile`` (*str*) -- for images wrapped in RPM * ``scratch`` (*bool*) -- only RPM-wrapped images can use scratch builds, @@ -1050,7 +1048,6 @@ Live Media Settings * ``name`` (*str*) * ``version`` (*str*) - * ``target`` (*str*) * ``arches`` (*[str]*) -- what architectures to build the media for; by default uses all arches for the variant. * ``kickstart`` (*str*) -- name of the kickstart file @@ -1060,6 +1057,7 @@ Live Media Settings * ``ksurl`` (*str*) * ``ksversion`` (*str*) * ``scratch`` (*bool*) + * ``target`` (*str*) * ``release`` (*str*) -- a string with the release, or ``!RELEASE_FROM_LABEL_DATE_TYPE_RESPIN`` to automatically generate a suitable value. See :ref:`automatic versioning ` for diff --git a/pungi/checks.py b/pungi/checks.py index 8a805ef8..d9f82c12 100644 --- a/pungi/checks.py +++ b/pungi/checks.py @@ -462,6 +462,7 @@ def make_schema(): "ksurl": {"type": "string"}, "name": {"type": "string"}, "subvariant": {"type": "string"}, + "target": {"type": "string"}, "version": {"type": "string"}, "repo": { "$ref": "#/definitions/repos", @@ -759,6 +760,7 @@ def make_schema(): "default": False, }, "live_images_ksurl": {"type": "string"}, + "live_images_target": {"type": "string"}, "live_images_release": {"$ref": "#/definitions/optional_string"}, "live_images_version": {"type": "string"}, @@ -805,10 +807,8 @@ def make_schema(): "default": False }, - "live_target": { - "type": "string", - "default": "rhel-7.0-candidate", - }, + # Deprecated in favour of regular local/phase/global setting. + "live_target": {"type": "string"}, "tree_arches": { "$ref": "#/definitions/list_of_strings", diff --git a/pungi/phases/live_images.py b/pungi/phases/live_images.py index 470433b4..e522b9d4 100644 --- a/pungi/phases/live_images.py +++ b/pungi/phases/live_images.py @@ -92,6 +92,9 @@ class LiveImagesPhase(base.PhaseLoggerMixin, base.ImageConfigMixin, base.ConfigG "label": "", # currently not used "subvariant": subvariant, "failable_arches": data.get('failable', []), + # First see if live_target is specified, then fall back + # to regular setup of local, phase and global setting. + "target": self.compose.conf.get('live_target') or self.get_config(data, 'target'), } cmd["repos"] = self._get_repos(arch, variant, data) @@ -161,8 +164,8 @@ class CreateLiveImageThread(WorkerThread): if cmd["specfile"] and not cmd["scratch"]: # Non scratch build are allowed only for rpm wrapped images archive = True - target = compose.conf["live_target"] - koji_cmd = koji_wrapper.get_create_image_cmd(name, version, target, + koji_cmd = koji_wrapper.get_create_image_cmd(name, version, + cmd["target"], cmd["build_arch"], cmd["ks_file"], cmd["repos"], diff --git a/tests/test_liveimagesphase.py b/tests/test_liveimagesphase.py index 4acd4418..900753ce 100644 --- a/tests/test_liveimagesphase.py +++ b/tests/test_liveimagesphase.py @@ -25,6 +25,7 @@ class TestLiveImagesPhase(PungiTestCase): 'kickstart': 'test.ks', 'repo': ['http://example.com/repo/', 'Everything', 'Server-optional'], 'release': None, + 'target': 'f27', } }) ], @@ -60,7 +61,8 @@ class TestLiveImagesPhase(PungiTestCase): 'release': '20151203.t.0', 'subvariant': 'Client', 'failable_arches': [], - 'ksurl': None}, + 'ksurl': None, + 'target': 'f27'}, compose.variants['Client'], 'amd64'))]) self.assertItemsEqual( @@ -77,6 +79,7 @@ class TestLiveImagesPhase(PungiTestCase): 'kickstart': 'test.ks', 'repo': ['http://example.com/repo/', 'Everything'], 'release': None, + 'target': 'f27', } }) ], @@ -110,7 +113,8 @@ class TestLiveImagesPhase(PungiTestCase): 'release': '20151203.t.0', 'subvariant': 'Client', 'failable_arches': [], - 'ksurl': None}, + 'ksurl': None, + 'target': 'f27'}, compose.variants['Client'], 'amd64'))]) @@ -124,6 +128,7 @@ class TestLiveImagesPhase(PungiTestCase): 'kickstart': 'test.ks', 'repo': ['http://example.com/repo/', 'Everything'], 'release': None, + 'target': 'f27', } }) ], @@ -157,7 +162,8 @@ class TestLiveImagesPhase(PungiTestCase): 'release': '20151203.t.0', 'subvariant': 'Client', 'failable_arches': [], - 'ksurl': None}, + 'ksurl': None, + 'target': 'f27'}, compose.variants['Client'], 'amd64'))]) @@ -169,9 +175,11 @@ class TestLiveImagesPhase(PungiTestCase): 'amd64': [{ 'kickstart': 'test.ks', 'repo': ['http://example.com/repo/', 'Everything'], + 'target': 'f27', }, { 'kickstart': 'another.ks', 'repo': ['http://example.com/repo/', 'Everything'], + 'target': 'f27', }] }) ], @@ -205,6 +213,7 @@ class TestLiveImagesPhase(PungiTestCase): 'release': None, 'subvariant': 'Client', 'failable_arches': [], + 'target': 'f27', 'ksurl': None}, compose.variants['Client'], 'amd64')), @@ -226,6 +235,7 @@ class TestLiveImagesPhase(PungiTestCase): 'release': None, 'subvariant': 'Client', 'failable_arches': [], + 'target': 'f27', 'ksurl': None}, compose.variants['Client'], 'amd64'))]) @@ -241,6 +251,7 @@ class TestLiveImagesPhase(PungiTestCase): 'ksurl': 'https://git.example.com/kickstarts.git?#HEAD', 'repo': ['http://example.com/repo/', 'Everything'], 'type': 'appliance', + 'target': 'f27', } }) ], @@ -276,6 +287,7 @@ class TestLiveImagesPhase(PungiTestCase): 'release': None, 'subvariant': 'Client', 'failable_arches': [], + 'target': 'f27', 'ksurl': 'https://git.example.com/kickstarts.git?#CAFEBABE'}, compose.variants['Client'], 'amd64'))]) @@ -289,6 +301,7 @@ class TestLiveImagesPhase(PungiTestCase): 'live_images_ksurl': 'https://git.example.com/kickstarts.git?#HEAD', 'live_images_release': None, 'live_images_version': 'Rawhide', + 'live_images_target': 'f27', 'live_images': [ ('^Client$', { 'amd64': { @@ -330,6 +343,7 @@ class TestLiveImagesPhase(PungiTestCase): 'release': '20151203.t.0', 'subvariant': 'Client', 'failable_arches': [], + 'target': 'f27', 'ksurl': 'https://git.example.com/kickstarts.git?#CAFEBABE'}, compose.variants['Client'], 'amd64'))]) @@ -343,6 +357,7 @@ class TestLiveImagesPhase(PungiTestCase): 'global_ksurl': 'https://git.example.com/kickstarts.git?#HEAD', 'global_release': None, 'global_version': 'Rawhide', + 'global_target': 'f27', 'live_images': [ ('^Client$', { 'amd64': { @@ -384,6 +399,7 @@ class TestLiveImagesPhase(PungiTestCase): 'release': '20151203.t.0', 'subvariant': 'Client', 'failable_arches': [], + 'target': 'f27', 'ksurl': 'https://git.example.com/kickstarts.git?#CAFEBABE'}, compose.variants['Client'], 'amd64'))]) @@ -400,6 +416,7 @@ class TestLiveImagesPhase(PungiTestCase): 'kickstart': 'test.ks', 'repo': ['http://example.com/repo/', 'Everything'], 'release': None, + 'target': 'f27', } }) ], @@ -433,6 +450,7 @@ class TestLiveImagesPhase(PungiTestCase): 'release': '20151203.t.0', 'subvariant': 'Client', 'failable_arches': [], + 'target': 'f27', 'ksurl': None}, compose.variants['Client'], 'amd64'))]) @@ -468,6 +486,7 @@ class TestCreateLiveImageThread(PungiTestCase): 'ksurl': 'https://git.example.com/kickstarts.git?#CAFEBABE', 'release': None, 'subvariant': 'Something', + 'target': 'f27', } koji_wrapper = KojiWrapper.return_value @@ -500,7 +519,7 @@ class TestCreateLiveImageThread(PungiTestCase): ]) self.assertEqual(run.mock_calls, [mock.call(write_manifest_cmd)]) self.assertEqual(koji_wrapper.get_create_image_cmd.mock_calls, - [mock.call('test-Something-Live-amd64', '20151203.0.t', 'rhel-7.0-candidate', + [mock.call('test-Something-Live-amd64', '20151203.0.t', 'f27', 'amd64', '/path/to/ks_file', ['/repo/amd64/Client', 'http://example.com/repo/', @@ -547,6 +566,7 @@ class TestCreateLiveImageThread(PungiTestCase): 'ksurl': 'https://git.example.com/kickstarts.git?#CAFEBABE', 'release': None, 'subvariant': 'Client', + 'target': 'f27', } koji_wrapper = KojiWrapper.return_value @@ -579,7 +599,7 @@ class TestCreateLiveImageThread(PungiTestCase): ]) self.assertEqual(run.mock_calls, [mock.call(write_manifest_cmd)]) self.assertEqual(koji_wrapper.get_create_image_cmd.mock_calls, - [mock.call('test-Client-Live-amd64', '20151203.0.t', 'rhel-7.0-candidate', + [mock.call('test-Client-Live-amd64', '20151203.0.t', 'f27', 'amd64', '/path/to/ks_file', ['/repo/amd64/Client', 'http://example.com/repo/', @@ -627,6 +647,7 @@ class TestCreateLiveImageThread(PungiTestCase): 'ksurl': None, 'release': None, 'subvariant': 'Client', + 'target': 'f27', } koji_wrapper = KojiWrapper.return_value @@ -655,7 +676,7 @@ class TestCreateLiveImageThread(PungiTestCase): self.assertEqual(run.mock_calls, []) self.assertEqual(koji_wrapper.get_create_image_cmd.mock_calls, - [mock.call('test-Client-Disk-amd64', '20151203.0.t', 'rhel-7.0-candidate', + [mock.call('test-Client-Disk-amd64', '20151203.0.t', 'f27', 'amd64', '/path/to/ks_file', ['/repo/amd64/Client', 'http://example.com/repo/', @@ -703,6 +724,7 @@ class TestCreateLiveImageThread(PungiTestCase): 'release': 'xyz', 'type': 'live', 'failable_arches': ['*'], + 'target': 'f27', } koji_wrapper = KojiWrapper.return_value @@ -747,6 +769,7 @@ class TestCreateLiveImageThread(PungiTestCase): 'release': 'xyz', 'type': 'live', 'failable_arches': ['*'], + 'target': 'f27', } koji_wrapper = KojiWrapper.return_value