Added metadata rpm files to all builders

rpm packages and verification information is now added to
all builder results. Fixes #13
This commit is contained in:
Marcus Schäfer 2016-02-21 15:14:57 +01:00
parent 3a2c3554fc
commit 37ae59cbc1
12 changed files with 199 additions and 19 deletions

View File

@ -20,6 +20,7 @@ import platform
# project
from .defaults import Defaults
from .archive_tar import ArchiveTar
from .system_setup import SystemSetup
from .checksum import Checksum
from .logger import log
from .result import Result
@ -39,6 +40,9 @@ class ArchiveBuilder(object):
self.xml_state = xml_state
self.requested_archive_type = xml_state.get_build_type_name()
self.result = Result(xml_state)
self.system_setup = SystemSetup(
xml_state=xml_state, description_dir=None, root_dir=self.root_dir
)
self.filename = self.__target_file_for('tar.xz')
self.checksum = self.__target_file_for('md5')
@ -64,6 +68,18 @@ class ArchiveBuilder(object):
self.result.add(
'root_archive_md5', self.checksum
)
self.result.add(
'image_packages',
self.system_setup.export_rpm_package_list(
self.target_dir
)
)
self.result.add(
'image_verified',
self.system_setup.export_rpm_package_verification(
self.target_dir
)
)
return self.result
def __target_file_for(self, suffix):

View File

@ -20,6 +20,7 @@ import platform
# project
from .container_image import ContainerImage
from .container_setup import ContainerSetup
from .system_setup import SystemSetup
from .logger import log
from .result import Result
@ -30,8 +31,12 @@ class ContainerBuilder(object):
"""
def __init__(self, xml_state, target_dir, root_dir):
self.root_dir = root_dir
self.target_dir = target_dir
self.requested_container_name = xml_state.build_type.get_container()
self.requested_container_type = xml_state.get_build_type_name()
self.system_setup = SystemSetup(
xml_state=xml_state, description_dir=None, root_dir=self.root_dir
)
self.filename = ''.join(
[
target_dir, '/',
@ -69,4 +74,16 @@ class ContainerBuilder(object):
self.result.add(
'container', self.filename
)
self.result.add(
'image_packages',
self.system_setup.export_rpm_package_list(
self.target_dir
)
)
self.result.add(
'image_verified',
self.system_setup.export_rpm_package_verification(
self.target_dir
)
)
return self.result

View File

@ -293,6 +293,20 @@ class DiskBuilder(object):
disk_format.get_target_name_for_format(self.image_format)
)
# create image root metadata
self.result.add(
'image_packages',
self.system_setup.export_rpm_package_list(
self.target_dir
)
)
self.result.add(
'image_verified',
self.system_setup.export_rpm_package_verification(
self.target_dir
)
)
return self.result
def __install_image_requested(self):

View File

@ -22,6 +22,7 @@ from .filesystem import FileSystem
from .loop_device import LoopDevice
from .device_provider import DeviceProvider
from .filesystem_setup import FileSystemSetup
from .system_setup import SystemSetup
from .defaults import Defaults
from .logger import log
from .result import Result
@ -39,6 +40,7 @@ class FileSystemBuilder(object):
self.custom_args = None
self.label = None
self.root_dir = root_dir
self.target_dir = target_dir
self.requested_image_type = xml_state.get_build_type_name()
if self.requested_image_type == 'pxe':
self.requested_filesystem = xml_state.build_type.get_filesystem()
@ -49,6 +51,9 @@ class FileSystemBuilder(object):
'No filesystem configured in %s type' %
self.requested_image_type
)
self.system_setup = SystemSetup(
xml_state=xml_state, description_dir=None, root_dir=self.root_dir
)
self.filename = ''.join(
[
target_dir, '/',
@ -81,6 +86,18 @@ class FileSystemBuilder(object):
self.result.add(
'filesystem_image', self.filename
)
self.result.add(
'image_packages',
self.system_setup.export_rpm_package_list(
self.target_dir
)
)
self.result.add(
'image_verified',
self.system_setup.export_rpm_package_verification(
self.target_dir
)
)
return self.result
def __operate_on_loop(self):

View File

@ -196,6 +196,18 @@ class LiveImageBuilder(object):
self.result.add(
'live_image', self.isoname
)
self.result.add(
'image_packages',
self.system_setup.export_rpm_package_list(
self.target_dir
)
)
self.result.add(
'image_verified',
self.system_setup.export_rpm_package_verification(
self.target_dir
)
)
return self.result
def __create_live_iso_kernel_and_initrd(self):

View File

@ -15,6 +15,8 @@
# You should have received a copy of the GNU General Public License
# along with kiwi. If not, see <http://www.gnu.org/licenses/>
#
import platform
# project
from .internal_boot_image_task import BootImageTask
from .filesystem_builder import FileSystemBuilder
@ -40,7 +42,6 @@ class PxeBuilder(object):
def __init__(self, xml_state, target_dir, root_dir):
self.target_dir = target_dir
self.compressed = xml_state.build_type.get_compressed()
self.image_name = xml_state.xml_data.get_name()
self.machine = xml_state.get_build_type_machine_section()
self.pxedeploy = xml_state.get_build_type_pxedeploy_section()
self.filesystem = FileSystemBuilder(
@ -52,6 +53,14 @@ class PxeBuilder(object):
self.boot_image_task = BootImageTask(
'kiwi', xml_state, target_dir
)
self.image_name = ''.join(
[
target_dir, '/',
xml_state.xml_data.get_name(),
'.' + platform.machine(),
'-' + xml_state.get_image_version(),
]
)
self.kernel_filename = None
self.hypervisor_filename = None
self.result = Result(xml_state)
@ -130,6 +139,20 @@ class PxeBuilder(object):
'filesystem_md5', self.filesystem_checksum
)
# create image root metadata
self.result.add(
'image_packages',
self.system_setup.export_rpm_package_list(
self.target_dir
)
)
self.result.add(
'image_verified',
self.system_setup.export_rpm_package_verification(
self.target_dir
)
)
if self.pxedeploy:
log.warning(
'Creation of client config file from pxedeploy not implemented'

View File

@ -2,6 +2,7 @@ from nose.tools import *
from mock import patch
import mock
import kiwi
from . import nose_helper
@ -23,6 +24,10 @@ class TestArchiveBuilder(object):
self.xml_state.xml_data.get_name = mock.Mock(
return_value='myimage'
)
self.setup = mock.Mock()
kiwi.archive_builder.SystemSetup = mock.Mock(
return_value=self.setup
)
self.archive = ArchiveBuilder(
self.xml_state, 'target_dir', 'root_dir'
)
@ -66,3 +71,9 @@ class TestArchiveBuilder(object):
checksum.md5.assert_called_once_with(
'target_dir/myimage.x86_64-1.2.3.md5'
)
self.setup.export_rpm_package_verification.assert_called_once_with(
'target_dir'
)
self.setup.export_rpm_package_list.assert_called_once_with(
'target_dir'
)

View File

@ -1,7 +1,8 @@
from nose.tools import *
from mock import patch
from mock import call
import mock
import kiwi
from . import nose_helper
@ -25,6 +26,10 @@ class TestContainerBuilder(object):
xml_state.xml_data.get_name = mock.Mock(
return_value='image_name'
)
self.setup = mock.Mock()
kiwi.container_builder.SystemSetup = mock.Mock(
return_value=self.setup
)
self.container = ContainerBuilder(
xml_state, 'target_dir', 'root_dir'
)
@ -37,6 +42,8 @@ class TestContainerBuilder(object):
mock_setup.return_value = container_setup
container_image = mock.Mock()
mock_image.return_value = container_image
self.setup.export_rpm_package_verification.return_value = '.verified'
self.setup.export_rpm_package_list.return_value = '.packages'
self.container.create()
mock_setup.assert_called_once_with(
'docker', 'root_dir', {'container_name': 'my-container'}
@ -48,6 +55,23 @@ class TestContainerBuilder(object):
container_image.create.assert_called_once_with(
'target_dir/image_name.x86_64-1.2.3.docker.tar.xz'
)
self.container.result.add.assert_called_once_with(
'container', 'target_dir/image_name.x86_64-1.2.3.docker.tar.xz'
assert self.container.result.add.call_args_list == [
call(
'container',
'target_dir/image_name.x86_64-1.2.3.docker.tar.xz'
),
call(
'image_packages',
self.setup.export_rpm_package_list.return_value
),
call(
'image_verified',
self.setup.export_rpm_package_verification.return_value
)
]
self.setup.export_rpm_package_verification.assert_called_once_with(
'target_dir'
)
self.setup.export_rpm_package_list.assert_called_once_with(
'target_dir'
)

View File

@ -116,9 +116,9 @@ class TestDiskBuilder(object):
kiwi.disk_builder.FirmWare = mock.Mock(
return_value=self.firmware
)
self.system_setup = mock.Mock()
self.setup = mock.Mock()
kiwi.disk_builder.SystemSetup = mock.Mock(
return_value=self.system_setup
return_value=self.setup
)
self.install_image = mock.Mock()
kiwi.disk_builder.InstallImageBuilder = mock.Mock(
@ -174,8 +174,8 @@ class TestDiskBuilder(object):
self.disk_builder.create()
self.system_setup.create_recovery_archive.assert_called_once_with()
self.system_setup.export_modprobe_setup.assert_called_once_with(
self.setup.create_recovery_archive.assert_called_once_with()
self.setup.export_modprobe_setup.assert_called_once_with(
'boot_dir'
)
self.disk_setup.get_disksize_mbytes.assert_called_once_with()
@ -200,11 +200,11 @@ class TestDiskBuilder(object):
self.bootloader_config.setup_disk_image_config.assert_called_once_with(
'0815'
)
self.system_setup.call_edit_boot_config_script.assert_called_once_with(
self.setup.call_edit_boot_config_script.assert_called_once_with(
'btrfs', 1
)
self.bootloader_install.install.assert_called_once_with()
self.system_setup.call_edit_boot_install_script.assert_called_once_with(
self.setup.call_edit_boot_install_script.assert_called_once_with(
'target_dir/LimeJeOS-openSUSE-13.2.x86_64-1.13.2.raw',
'/dev/boot-device'
)
@ -254,6 +254,12 @@ class TestDiskBuilder(object):
self.kernel.copy_xen_hypervisor.assert_called_once_with(
'root_dir', '/boot/xen.gz'
)
self.setup.export_rpm_package_list.assert_called_once_with(
'target_dir'
)
self.setup.export_rpm_package_verification.assert_called_once_with(
'target_dir'
)
@patch('kiwi.disk_builder.FileSystem')
@patch('builtins.open')

View File

@ -2,6 +2,7 @@ from nose.tools import *
from mock import patch
import mock
import kiwi
from . import nose_helper
@ -44,6 +45,11 @@ class TestFileSystemBuilder(object):
return_value=42
)
self.setup = mock.Mock()
kiwi.filesystem_builder.SystemSetup = mock.Mock(
return_value=self.setup
)
@raises(KiwiFileSystemSetupError)
def test_create_unknown_filesystem(self):
self.xml_state.get_build_type_name = mock.Mock(
@ -92,6 +98,12 @@ class TestFileSystemBuilder(object):
self.filesystem.sync_data.assert_called_once_with(
['image', '.profile', '.kconfig', 'var/cache/kiwi']
)
self.setup.export_rpm_package_verification.assert_called_once_with(
'target_dir'
)
self.setup.export_rpm_package_list.assert_called_once_with(
'target_dir'
)
@patch('kiwi.filesystem_builder.FileSystem')
@patch('kiwi.filesystem_builder.DeviceProvider')
@ -116,3 +128,9 @@ class TestFileSystemBuilder(object):
self.filesystem.create_on_file.assert_called_once_with(
'target_dir/myimage.x86_64-1.2.3.squashfs', None
)
self.setup.export_rpm_package_verification.assert_called_once_with(
'target_dir'
)
self.setup.export_rpm_package_list.assert_called_once_with(
'target_dir'
)

View File

@ -21,9 +21,9 @@ class TestLiveImageBuilder(object):
kiwi.live_image_builder.FirmWare = mock.Mock(
return_value=self.firmware
)
self.system_setup = mock.Mock()
self.setup = mock.Mock()
kiwi.live_image_builder.SystemSetup = mock.Mock(
return_value=self.system_setup
return_value=self.setup
)
self.boot_image_task = mock.Mock()
self.boot_image_task.boot_root_directory = 'initrd_dir'
@ -128,11 +128,13 @@ class TestLiveImageBuilder(object):
return_value=8192
)
mock_size.return_value = rootsize
self.setup.export_rpm_package_verification.return_value = '.verified'
self.setup.export_rpm_package_list.return_value = '.packages'
self.live_image.create()
self.live_image.boot_image_task.prepare.assert_called_once_with()
self.system_setup.export_modprobe_setup.assert_called_once_with(
self.setup.export_modprobe_setup.assert_called_once_with(
'initrd_dir'
)
mock_fs.assert_called_once_with(
@ -210,8 +212,16 @@ class TestLiveImageBuilder(object):
mock_hybrid.assert_called_once_with(
'offset', self.mbrid, 'target_dir/result-image.x86_64-1.2.3.iso'
)
self.result.add.assert_called_once_with(
'live_image', 'target_dir/result-image.x86_64-1.2.3.iso'
assert self.result.add.call_args_list == [
call('live_image', 'target_dir/result-image.x86_64-1.2.3.iso'),
call('image_packages', '.packages'),
call('image_verified', '.verified')
]
self.setup.export_rpm_package_verification.assert_called_once_with(
'target_dir'
)
self.setup.export_rpm_package_list.assert_called_once_with(
'target_dir'
)
@patch('kiwi.live_image_builder.mkdtemp')

View File

@ -17,9 +17,9 @@ class TestPxeBuilder(object):
@patch('kiwi.pxe_builder.FileSystemBuilder')
@patch('kiwi.pxe_builder.BootImageTask')
def setup(self, mock_boot, mock_filesystem):
self.system_setup = mock.Mock()
self.setup = mock.Mock()
kiwi.pxe_builder.SystemSetup = mock.Mock(
return_value=self.system_setup
return_value=self.setup
)
self.boot_image_task = mock.MagicMock()
self.boot_image_task.boot_root_directory = 'initrd_dir'
@ -27,7 +27,13 @@ class TestPxeBuilder(object):
self.filesystem = mock.MagicMock()
self.filesystem.filename = 'myimage'
mock_filesystem.return_value = self.filesystem
self.xml_state = mock.MagicMock()
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']
)
@ -70,10 +76,16 @@ class TestPxeBuilder(object):
compress.xz.assert_called_once_with()
checksum.md5.assert_called_once_with('myimage.md5')
self.boot_image_task.prepare.assert_called_once_with()
self.system_setup.export_modprobe_setup.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_rpm_package_list.assert_called_once_with(
'target_dir'
)
self.setup.export_rpm_package_verification.assert_called_once_with(
'target_dir'
)
# warning for not implemented pxedeploy handling
assert mock_log_warn.called