kiwi-el8/test/unit/builder_pxe_test.py
Marcus Schäfer c148d661b9
Deleted pxedeploy section
There is no further demand in the client config creation for the
legacy netboot code. Customers using the netboot initrd already
create the client config.<MAC> file manually or through another
system. With the next generation kiwi we also recommend the disk
based network deployment using the dracut capabilities and marked
the netboot code as still supported but on the legacy stream.
Along with the deletion in the schema the following changes
were also done:

* Deleted use of pxedeploy section in implementation
* Increase schema version to v7.0
* Update documentation on schema version update
* Added xsl stylesheet conversion from v6.9 to v7.0
  Automatic schema version upgrade from v6.9 to v7.0 deletes
  the pxedeploy section from any type specification

This Fixes #19
2019-04-05 14:26:54 +02:00

134 lines
4.5 KiB
Python

from mock import patch
import mock
import kiwi
from .test_helper import raises
from collections import namedtuple
from kiwi.exceptions import KiwiPxeBootImageError
from kiwi.builder.pxe import PxeBuilder
class TestPxeBuilder(object):
@patch('kiwi.builder.pxe.FileSystemBuilder')
@patch('kiwi.builder.pxe.BootImage')
def setup(self, mock_boot, mock_filesystem):
self.setup = mock.Mock()
kiwi.builder.pxe.SystemSetup = mock.Mock(
return_value=self.setup
)
self.boot_image_task = mock.MagicMock()
self.boot_image_task.boot_root_directory = 'initrd_dir'
self.boot_image_task.initrd_filename = 'initrd_file_name'
mock_boot.return_value = self.boot_image_task
self.filesystem = mock.MagicMock()
self.filesystem.filename = 'myimage.fs'
mock_filesystem.return_value = self.filesystem
self.xml_state = mock.Mock()
self.xml_state.get_image_version = mock.Mock(
return_value='1.2.3'
)
self.xml_state.xml_data.get_name = mock.Mock(
return_value='some-image'
)
kernel_type = namedtuple(
'kernel', ['filename', 'version']
)
xen_type = namedtuple(
'xen', ['filename', 'name']
)
self.kernel = mock.Mock()
self.kernel.get_kernel = mock.Mock(
return_value=kernel_type(filename='some-kernel', version='42')
)
self.kernel.get_xen_hypervisor = mock.Mock(
return_value=xen_type(filename='hypervisor', name='xen.gz')
)
kiwi.builder.pxe.Kernel = mock.Mock(
return_value=self.kernel
)
self.pxe = PxeBuilder(
self.xml_state, 'target_dir', 'root_dir',
custom_args={'signing_keys': ['key_file_a', 'key_file_b']}
)
self.pxe.image_name = 'myimage'
@patch('kiwi.builder.pxe.Checksum')
@patch('kiwi.builder.pxe.Compress')
@patch('kiwi.logger.log.warning')
@patch('kiwi.builder.pxe.Command.run')
@patch('os.rename')
def test_create(
self, mock_rename, mock_command, mock_log_warn,
mock_compress, mock_checksum
):
compress = mock.Mock()
mock_compress.return_value = compress
compress.compressed_filename = 'compressed-file-name'
checksum = mock.Mock()
mock_checksum.return_value = checksum
self.boot_image_task.required = mock.Mock(
return_value=True
)
self.pxe.create()
self.filesystem.create.assert_called_once_with()
mock_rename.assert_called_once_with(
'myimage.fs', 'myimage'
)
compress.xz.assert_called_once_with(None)
checksum.md5.assert_called_once_with(
'target_dir/some-image.x86_64-1.2.3.md5'
)
self.boot_image_task.prepare.assert_called_once_with()
self.setup.export_modprobe_setup.assert_called_once_with(
'initrd_dir'
)
self.boot_image_task.create_initrd.assert_called_once_with()
self.setup.export_package_list.assert_called_once_with(
'target_dir'
)
self.setup.export_package_verification.assert_called_once_with(
'target_dir'
)
mock_command.assert_called_once_with(
[
'bash', '-c',
'tar -C target_dir -c --to-stdout '
'myimage-42.kernel '
'initrd_file_name '
'compressed-file-name '
'some-image.x86_64-1.2.3.md5 '
'| xz -f --threads=0 > '
'target_dir/some-image.x86_64-1.2.3.tar.xz'
]
)
@patch('kiwi.builder.pxe.Checksum')
@patch('kiwi.builder.pxe.Compress')
@patch('os.rename')
@raises(KiwiPxeBootImageError)
def test_create_no_kernel_found(
self, mock_rename, mock_compress, mock_checksum
):
compress = mock.Mock()
mock_compress.return_value = compress
compress.compressed_filename = 'compressed-file-name'
self.kernel.get_kernel.return_value = False
self.pxe.create()
@patch('kiwi.builder.pxe.Checksum')
@patch('kiwi.builder.pxe.Compress')
@patch('os.rename')
@raises(KiwiPxeBootImageError)
def test_create_no_hypervisor_found(
self, mock_rename, mock_compress, mock_checksum
):
compress = mock.Mock()
mock_compress.return_value = compress
compress.compressed_filename = 'compressed-file-name'
self.kernel.get_xen_hypervisor.return_value = False
self.pxe.create()