Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixup runtime test matrix #1049

Merged
merged 2 commits into from
Apr 9, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
28 changes: 0 additions & 28 deletions kiwi/runtime_checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -541,34 +541,6 @@ def check_efi_mode_for_disk_overlay_correctly_setup(self):
if overlayroot and firmware == 'uefi':
raise KiwiRuntimeError(message)

def check_grub_efi_installed_for_efi_firmware(self):
"""
If the image is being built with efi or uefi firmware setting
we need a grub(2)-...-efi package installed. The check is not 100%
as every distribution has different names and different requirement
but it is a reasonable approximation on the safe side meaning the
user may still get an error but should not receive a false positive
"""
message = dedent('''\n
Firmware set to efi or uefi but not grub*efi* package is
part of the image build.
''')
firmware = self.xml_state.build_type.get_firmware()
if firmware in ('efi', 'uefi'):
grub_efi_packages = (
'grub2-x86_64-efi', # SUSE
'grub-efi', # Debian based distros have grub-efi-*
'grub2-efi' # RedHat
)
package_names = \
self.xml_state.get_bootstrap_packages() + \
self.xml_state.get_system_packages()
for grub_package in grub_efi_packages:
for package_name in package_names:
if package_name.startswith(grub_package):
return True
raise KiwiRuntimeError(message)

def check_xen_uniquely_setup_as_server_or_guest(self):
"""
If the image is classified to be used as Xen image, it can
Expand Down
22 changes: 22 additions & 0 deletions kiwi/tasks/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,28 @@ def __init__(self, should_perform_task_setup=True):
# get global args
self.global_args = self.cli.get_global_args()

# initialize generic runtime check dicts
self.checks_before_command_args = {
'check_minimal_required_preferences': [],
'check_efi_mode_for_disk_overlay_correctly_setup': [],
'check_boot_description_exists': [],
'check_consistent_kernel_in_boot_and_system_image': [],
'check_container_tool_chain_installed': [],
'check_volume_setup_defines_multiple_fullsize_volumes': [],
'check_volume_setup_has_no_root_definition': [],
'check_volume_label_used_with_lvm': [],
'check_xen_uniquely_setup_as_server_or_guest': [],
'check_mediacheck_only_for_x86_arch': [],
'check_dracut_module_for_live_iso_in_package_list': [],
'check_dracut_module_for_disk_overlay_in_package_list': [],
'check_dracut_module_for_disk_oem_in_package_list': [],
'check_dracut_module_for_oem_install_in_package_list': []
}
self.checks_after_command_args = {
'check_repositories_configured': [],
'check_image_include_repos_publicly_resolvable': []
}

if should_perform_task_setup:
# set log level
if self.global_args['--debug']:
Expand Down
33 changes: 9 additions & 24 deletions kiwi/tasks/system_build.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,25 +136,14 @@ def process(self): # noqa: C901
self.command_args['--description']
)

checks = {
'check_minimal_required_preferences': [],
'check_efi_mode_for_disk_overlay_correctly_setup': [],
'check_grub_efi_installed_for_efi_firmware': [],
'check_boot_description_exists': [],
'check_consistent_kernel_in_boot_and_system_image': [],
'check_container_tool_chain_installed': [],
'check_volume_setup_defines_multiple_fullsize_volumes': [],
'check_volume_setup_has_no_root_definition': [],
'check_volume_label_used_with_lvm': [],
'check_xen_uniquely_setup_as_server_or_guest': [],
'check_target_directory_not_in_shared_cache': [abs_target_dir_path],
'check_mediacheck_only_for_x86_arch': [],
'check_dracut_module_for_live_iso_in_package_list': [],
'check_dracut_module_for_disk_overlay_in_package_list': [],
'check_dracut_module_for_disk_oem_in_package_list': [],
'check_dracut_module_for_oem_install_in_package_list': []
}
self.run_checks(checks)
build_checks = self.checks_before_command_args
build_checks.update(
{
'check_target_directory_not_in_shared_cache':
[abs_target_dir_path]
}
)
self.run_checks(build_checks)

if self.command_args['--ignore-repos']:
self.xml_state.delete_repository_sections()
Expand Down Expand Up @@ -193,11 +182,7 @@ def process(self): # noqa: C901
self.command_args['--set-container-derived-from']
)

checks = {
'check_repositories_configured': [],
'check_image_include_repos_publicly_resolvable': []
}
self.run_checks(checks)
self.run_checks(self.checks_after_command_args)

log.info('Preparing new root system')
system = SystemPrepare(
Expand Down
8 changes: 4 additions & 4 deletions kiwi/tasks/system_create.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,10 @@ def process(self):
self.load_xml_description(
abs_root_path
)
checks = {
'check_target_directory_not_in_shared_cache': [abs_root_path]
}
self.run_checks(checks)

self.run_checks(
{'check_target_directory_not_in_shared_cache': [abs_root_path]}
)

log.info('Creating system image')
if not os.path.exists(abs_target_dir_path):
Expand Down
32 changes: 8 additions & 24 deletions kiwi/tasks/system_prepare.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,25 +121,13 @@ def process(self): # noqa: C901

abs_root_path = os.path.abspath(self.command_args['--root'])

checks = {
'check_minimal_required_preferences': [],
'check_efi_mode_for_disk_overlay_correctly_setup': [],
'check_grub_efi_installed_for_efi_firmware': [],
'check_boot_description_exists': [],
'check_consistent_kernel_in_boot_and_system_image': [],
'check_container_tool_chain_installed': [],
'check_volume_setup_defines_multiple_fullsize_volumes': [],
'check_volume_setup_has_no_root_definition': [],
'check_volume_label_used_with_lvm': [],
'check_xen_uniquely_setup_as_server_or_guest': [],
'check_target_directory_not_in_shared_cache': [abs_root_path],
'check_mediacheck_only_for_x86_arch': [],
'check_dracut_module_for_live_iso_in_package_list': [],
'check_dracut_module_for_disk_overlay_in_package_list': [],
'check_dracut_module_for_disk_oem_in_package_list': [],
'check_dracut_module_for_oem_install_in_package_list': []
}
self.run_checks(checks)
prepare_checks = self.checks_before_command_args
prepare_checks.update(
{
'check_target_directory_not_in_shared_cache': [abs_root_path]
}
)
self.run_checks(prepare_checks)

if self.command_args['--ignore-repos']:
self.xml_state.delete_repository_sections()
Expand Down Expand Up @@ -178,11 +166,7 @@ def process(self): # noqa: C901
self.command_args['--set-container-derived-from']
)

checks = {
'check_repositories_configured': [],
'check_image_include_repos_publicly_resolvable': []
}
self.run_checks(checks)
self.run_checks(self.checks_after_command_args)

log.info('Preparing system')
system = SystemPrepare(
Expand Down
112 changes: 0 additions & 112 deletions test/unit/runtime_checker_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,118 +172,6 @@ def test_check_boot_description_exists_does_not_exist(self):
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_boot_description_exists()

@raises(KiwiRuntimeError)
def test_check_grub_efi_installed_for_efi_firmware_is_efi(self):
self.xml_state.build_type.get_firmware = mock.Mock(
return_value='efi'
)
self.xml_state.get_bootstrap_packages = mock.Mock(
return_value=['foo']
)
self.xml_state.get_system_packages = mock.Mock(
return_value=['bar']
)
runtime_checker = RuntimeChecker(self.xml_state)
runtime_checker.check_grub_efi_installed_for_efi_firmware()

def test_check_grub_efi_installed_for_efi_firmware_is_efi_debian(self):
self.xml_state.build_type.get_firmware = mock.Mock(
return_value='efi'
)
self.xml_state.get_bootstrap_packages = mock.Mock(
return_value=['grub-efi-amd64']
)
self.xml_state.get_system_packages = mock.Mock(
return_value=['bar']
)
runtime_checker = RuntimeChecker(self.xml_state)
assert runtime_checker.check_grub_efi_installed_for_efi_firmware() \
is True

def test_check_grub_efi_installed_for_efi_firmware_is_efi_rhel(self):
self.xml_state.build_type.get_firmware = mock.Mock(
return_value='efi'
)
self.xml_state.get_bootstrap_packages = mock.Mock(
return_value=['grub2-efi-x64']
)
self.xml_state.get_system_packages = mock.Mock(
return_value=['bar']
)
runtime_checker = RuntimeChecker(self.xml_state)
assert runtime_checker.check_grub_efi_installed_for_efi_firmware() \
is True

def test_check_grub_efi_installed_for_efi_firmware_is_efi_suse(self):
self.xml_state.build_type.get_firmware = mock.Mock(
return_value='efi'
)
self.xml_state.get_bootstrap_packages = mock.Mock(
return_value=['grub2-x86_64-efi']
)
self.xml_state.get_system_packages = mock.Mock(
return_value=['bar']
)
runtime_checker = RuntimeChecker(self.xml_state)
assert runtime_checker.check_grub_efi_installed_for_efi_firmware() \
is True

@raises(KiwiRuntimeError)
def test_check_grub_efi_installed_for_efi_firmware_is_uefi(self):
self.xml_state.build_type.get_firmware = mock.Mock(
return_value='uefi'
)
self.xml_state.get_bootstrap_packages = mock.Mock(
return_value=['foo']
)
self.xml_state.get_system_packages = mock.Mock(
return_value=['bar']
)
runtime_checker = RuntimeChecker(self.xml_state)
runtime_checker.check_grub_efi_installed_for_efi_firmware()

def test_check_grub_efi_installed_for_efi_firmware_is_uefi_debian(self):
self.xml_state.build_type.get_firmware = mock.Mock(
return_value='uefi'
)
self.xml_state.get_bootstrap_packages = mock.Mock(
return_value=['grub-efi-amd64']
)
self.xml_state.get_system_packages = mock.Mock(
return_value=['bar']
)
runtime_checker = RuntimeChecker(self.xml_state)
assert runtime_checker.check_grub_efi_installed_for_efi_firmware() \
is True

def test_check_grub_efi_installed_for_efi_firmware_is_uefi_rhel(self):
self.xml_state.build_type.get_firmware = mock.Mock(
return_value='uefi'
)
self.xml_state.get_bootstrap_packages = mock.Mock(
return_value=['grub2-efi-x64']
)
self.xml_state.get_system_packages = mock.Mock(
return_value=['bar']
)
runtime_checker = RuntimeChecker(self.xml_state)
assert runtime_checker.check_grub_efi_installed_for_efi_firmware() \
is True

def test_check_grub_efi_installed_for_efi_firmware_is_uefi_suse(self):
self.xml_state.build_type.get_firmware = mock.Mock(
return_value='uefi'
)
self.xml_state.get_bootstrap_packages = mock.Mock(
return_value=['grub2-x86_64-efi']
)
self.xml_state.get_system_packages = mock.Mock(
return_value=['bar']
)
runtime_checker = RuntimeChecker(self.xml_state)
assert runtime_checker.check_grub_efi_installed_for_efi_firmware() \
is True

@raises(KiwiRuntimeError)
def test_check_xen_uniquely_setup_as_server_or_guest_for_ec2(self):
self.xml_state.build_type.get_firmware = mock.Mock(
Expand Down