Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
systemsmanagement:Uyuni:Snapshots:2023.01
cobbler
fix_buildiso_for_image_based_systems.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File fix_buildiso_for_image_based_systems.patch of Package cobbler
Index: docs/cobbler.rst IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/docs/cobbler.rst b/docs/cobbler.rst --- a/docs/cobbler.rst (revision 9528f31c3420f0892f44556a961839e61dd9e6d0) +++ b/docs/cobbler.rst (revision 538f8f80c765d4658822de4dfb51adc38eecad06) @@ -937,6 +937,8 @@ This command may not behave like you expect it without installing additional dependencies and configuration. The in depth explanation can be found at :ref:`building-isos`. +.. note:: Systems refers to systems that are profile based. Systems with a parent image based systems will be skipped. + +--------------+-------------------------------------------------------------------------------------------------------+ | Name | Description | +--------------+-------------------------------------------------------------------------------------------------------+ Index: docs/user-guide/building-isos.rst IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/docs/user-guide/building-isos.rst b/docs/user-guide/building-isos.rst --- a/docs/user-guide/building-isos.rst (revision 9528f31c3420f0892f44556a961839e61dd9e6d0) +++ b/docs/user-guide/building-isos.rst (revision 538f8f80c765d4658822de4dfb51adc38eecad06) @@ -9,6 +9,9 @@ Per default this builds an ISO for all available systems and profiles. +.. note:: All systems refers to systems that are profile based. Systems with a parent image based systems will be + skipped. + If you want to generate multiple ISOs you need to execute this command multiple times (with different ``--iso`` names). Under the hood Index: tests/conftest.py IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/tests/conftest.py b/tests/conftest.py --- a/tests/conftest.py (revision 538f8f80c765d4658822de4dfb51adc38eecad06) +++ b/tests/conftest.py (revision afc048f0af4edd6407d095d5387b7a917afc126f) @@ -9,6 +9,7 @@ from cobbler.items.distro import Distro from cobbler.items.profile import Profile from cobbler.items.system import System +from cobbler.items.image import Image @contextmanager @@ -37,7 +38,7 @@ for system in cobbler_api.systems(): cobbler_api.remove_system(system.name) for image in cobbler_api.images(): - cobbler_api.remove_distro(image.name) + cobbler_api.remove_image(image.name) for profile in cobbler_api.profiles(): cobbler_api.remove_profile(profile.name) for distro in cobbler_api.distros(): @@ -108,6 +109,22 @@ return _create_profile +@pytest.fixture(scope="function") +def create_image(request, cobbler_api): + """ + Returns a function which has no arguments. The function returns an image object. The image is already added to the + CobblerAPI. + """ + + def _create_image(): + test_image = Image(cobbler_api) + test_image.name = request.node.originalname + cobbler_api.add_image(test_image) + return test_image + + return _create_image + + @pytest.fixture(scope="function") def create_system(request, cobbler_api): """ @@ -115,9 +132,12 @@ already added to the CobblerAPI. """ - def _create_system(profile_name="", image_name=""): + def _create_system(profile_name="", image_name="", name=""): test_system = System(cobbler_api) - test_system.name = request.node.originalname + if name == "": + test_system.name = request.node.originalname + else: + test_system.name = name if profile_name != "": test_system.profile = profile_name if image_name != "": Index: cobbler/actions/buildiso/netboot.py IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/cobbler/actions/buildiso/netboot.py b/cobbler/actions/buildiso/netboot.py --- a/cobbler/actions/buildiso/netboot.py (revision 88aabceafa75d518ca0f10e1d1abee099d4201ea) +++ b/cobbler/actions/buildiso/netboot.py (revision c8a3cbc95f0a21a2cb7e34cb319103edb5b450a4) @@ -431,7 +431,15 @@ """ if selected_items is None: selected_items = [] - return self.filter_items(self.api.systems(), selected_items) + found_systems = self.filter_items(self.api.systems(), selected_items) + # Now filter all systems out that are image based as we don't know about their kernel and initrds + return_systems = [] + for system in found_systems: + # All systems not underneath a profile should be skipped + if system.get_conceptual_parent().TYPE_NAME == "profile": + return_systems.append(system) + # Now finally return + return return_systems def make_shorter(self, distname: str) -> str: """ Index: tests/xmlrpcapi/image_test.py IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/tests/xmlrpcapi/image_test.py b/tests/xmlrpcapi/image_test.py --- a/tests/xmlrpcapi/image_test.py (revision afc048f0af4edd6407d095d5387b7a917afc126f) +++ b/tests/xmlrpcapi/image_test.py (revision a864ae8685d74d4ed9bd8b7be3bd99809717077a) @@ -1,45 +1,22 @@ -import pytest - -# TODO: Create fixture where image is create - - -@pytest.fixture(scope="function") -def remove_item(remote, token): - """ - Remove an item with the given name. - - :param token: The fixture to have the token for authenticated strings available. - :param remote: The fixture to have the base xmlrpc connection. - """ - def _remove_item(itemtype, name): - yield - remote.remove_item(itemtype, name, token) - return _remove_item - - class TestImage: def test_create_image(self, remote, token): """ - Test: create/edit of an image object""" - - # Arrange - + Test: create/edit of an image object + """ # Act - images = remote.get_images(token) image = remote.new_image(token) # Assert assert remote.modify_image(image, "name", "testimage0", token) assert remote.save_image(image, token) - new_images = remote.get_images(token) - assert len(new_images) == len(images) + 1 + image_list = remote.get_images(token) + assert len(image_list) == 1 def test_get_images(self, remote): """ Test: get images """ - # Arrange # Act @@ -47,68 +24,72 @@ # Assert - def test_get_image(self, remote): + def test_get_image(self, remote, create_image): """ Test: Get an image object """ - # Arrange + test_image = create_image() # Act + result_image = remote.get_image(test_image.name) # Assert - image = remote.get_image("testimage0") + assert result_image.get("name") == test_image.name - def test_find_image(self, remote, token): + def test_find_image(self, remote, token, create_image): """ Test: Find an image object """ - # Arrange + test_image = create_image() # Act - result = remote.find_image({"name": "testimage0"}, token) + result = remote.find_image({"name": test_image.name}, token) - # Assert - assert result + # Assert - We want to find exactly the one item we added + assert len(result) == 1 + assert result[0].get("name") == test_image.name - def test_copy_image(self, remote, token): + def test_copy_image(self, remote, token, create_image): """ Test: Copy an image object """ - # Arrange + test_image = create_image() + new_name = "testimagecopy" + image = remote.get_item_handle("image", test_image.name, token) # Act - image = remote.get_item_handle("image", "testimage0", token) + result = remote.copy_image(image, new_name, token) # Assert - assert remote.copy_image(image, "testimagecopy", token) + assert result - def test_rename_image(self, remote, token, remove_item): + def test_rename_image(self, remote, token, create_image): """ Test: Rename an image object """ # Arrange - name = "testimage1" - image = remote.get_item_handle("image", "testimagecopy", token) + test_image = create_image() + new_name = "testimage_renamed" + image = remote.get_item_handle("image", test_image.name, token) # Act - result = remote.rename_image(image, name, token) - - # Cleanup - remote.remove_item("image", name, token) + result = remote.rename_image(image, new_name, token) # Assert assert result - def test_remove_image(self, remote, token): + def test_remove_image(self, remote, token, create_image): """ Test: remove an image object """ # Arrange + test_image = create_image() # Act + result = remote.remove_image(test_image.name, token) # Assert - assert remote.remove_image("testimage0", token) + assert result
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor