def test_collect_requirements(self): """Test the CollectRequirements method.""" # No default requirements. assert self.localization_interface.CollectRequirements() == [] # No additional support for ascii keyboard layouts. self.localization_interface.SetVirtualConsoleKeymap("en") assert self.localization_interface.CollectRequirements() == [] # Additional support for non-ascii keyboard layouts. self.localization_interface.SetVirtualConsoleKeymap("ru") requirements = Requirement.from_structure_list( self.localization_interface.CollectRequirements()) assert len(requirements) == 1 assert requirements[0].type == "package" assert requirements[0].name == "kbd-legacy" # "fi" keyboard layout is in kbd-legacy too (#1955793) self.localization_interface.SetVirtualConsoleKeymap("fi") requirements = Requirement.from_structure_list( self.localization_interface.CollectRequirements()) assert len(requirements) == 1 assert requirements[0].type == "package" assert requirements[0].name == "kbd-legacy"
def authselect_requirements_test(self): """Test that package requirements for authselect propagate correctly.""" self.security_interface.SetAuthconfig( ['--passalgo=sha512', '--useshadow']) requirements = Requirement.from_structure_list( self.security_interface.CollectRequirements()) self.assertEqual(len(requirements), 1) self.assertEqual(requirements[0].type, "package") self.assertEqual(requirements[0].name, "authselect-compat") self.security_interface.SetAuthconfig([]) self.security_interface.SetAuthselect(['select', 'sssd']) requirements = Requirement.from_structure_list( self.security_interface.CollectRequirements()) self.assertEqual(len(requirements), 1) self.assertEqual(requirements[0].type, "package") self.assertEqual(requirements[0].name, "authselect") self.security_interface.SetAuthconfig([]) self.security_interface.SetAuthselect([]) self.security_interface.SetFingerprintAuthEnabled(True) requirements = Requirement.from_structure_list( self.security_interface.CollectRequirements()) self.assertEqual(len(requirements), 1) self.assertEqual(requirements[0].type, "package") self.assertEqual(requirements[0].name, "authselect")
def collect_requirements_test(self): """Test the CollectRequirements method.""" # No default requirements. self.assertEqual(self.localization_interface.CollectRequirements(), []) # No additional support for ascii keyboard layouts. self.localization_interface.SetVirtualConsoleKeymap("en") self.assertEqual(self.localization_interface.CollectRequirements(), []) # Additional support for non-ascii keyboard layouts. self.localization_interface.SetVirtualConsoleKeymap("ru") requirements = Requirement.from_structure_list( self.localization_interface.CollectRequirements() ) self.assertEqual(len(requirements), 1) self.assertEqual(requirements[0].type, "package") self.assertEqual(requirements[0].name, "kbd-legacy") # "fi" keyboard layout is in kbd-legacy too (#1955793) self.localization_interface.SetVirtualConsoleKeymap("fi") requirements = Requirement.from_structure_list( self.localization_interface.CollectRequirements() ) self.assertEqual(len(requirements), 1) self.assertEqual(requirements[0].type, "package") self.assertEqual(requirements[0].name, "kbd-legacy")
def test_collect_requirements(self): """Test the requirements of the Timezone module.""" # Check the default requirements. requirements = Requirement.from_structure_list( self.timezone_interface.CollectRequirements()) assert len(requirements) == 1 assert requirements[0].type == "package" assert requirements[0].name == "chrony" # Check requirements with disabled NTP service. self.timezone_interface.NTPEnabled = False requirements = Requirement.from_structure_list( self.timezone_interface.CollectRequirements()) assert len(requirements) == 0
def test_collect_requirements(self): """Test the requirements of the Timezone module.""" # Check the default requirements. requirements = Requirement.from_structure_list( self.timezone_interface.CollectRequirements()) self.assertEqual(len(requirements), 1) self.assertEqual(requirements[0].type, "package") self.assertEqual(requirements[0].name, "chrony") # Check requirements with disabled NTP service. self.timezone_interface.SetNTPEnabled(False) requirements = Requirement.from_structure_list( self.timezone_interface.CollectRequirements()) self.assertEqual(len(requirements), 0)
def run_pre_install(): """This means to gather what additional packages (if any) are needed & executing payload.pre_install().""" # anaconda requires storage packages in order to make sure the target # system is bootable and configurable, and some other packages in order # to finish setting up the system. if kernel_arguments.is_enabled("fips"): payload.requirements.add_packages(['/usr/bin/fips-mode-setup'], reason="compliance") payload.requirements.add_groups(payload.language_groups(), reason="language groups") payload.requirements.add_packages(payload.langpacks(), reason="langpacks", strong=False) # add package requirements from modules # - iterate over all modules we know have valid package requirements # - add any requirements found to the payload requirement tracking modules_with_package_requirements = [ SECURITY, NETWORK, TIMEZONE, STORAGE ] for module in modules_with_package_requirements: module_proxy = module.get_proxy() module_requirements = Requirement.from_structure_list( module_proxy.CollectRequirements()) log.debug("Adding requirements for module %s : %s", module, module_requirements) payload.requirements.add_requirements(module_requirements) payload.pre_install()
def collect_remote_requirements(): """Collect requirements of the DBus modules. :return: a list of requirements """ boss = BOSS.get_proxy() return Requirement.from_structure_list(boss.CollectRequirements())
def run_pre_install(): """This means to gather what additional packages (if any) are needed & executing payload.pre_install().""" # anaconda requires storage packages in order to make sure the target # system is bootable and configurable, and some other packages in order # to finish setting up the system. payload.requirements.add_packages(storage.packages, reason="storage") payload.requirements.add_packages(ksdata.authselect.packages, reason="authselect") payload.requirements.add_packages(ksdata.timezone.packages, reason="ntp", strong=False) if can_install_bootloader: payload.requirements.add_packages(storage.bootloader.packages, reason="bootloader") if flags.flags.cmdline.getbool("fips"): payload.requirements.add_packages(['/usr/bin/fips-mode-setup'], reason="compliance") payload.requirements.add_groups(payload.language_groups(), reason="language groups") payload.requirements.add_packages(payload.langpacks(), reason="langpacks", strong=False) # add package requirements from modules # - iterate over all modules we know have valid package requirements # - add any requirements found to the payload requirement tracking modules_with_package_requirements = [SECURITY, NETWORK] for module in modules_with_package_requirements: module_proxy = module.get_proxy() module_requirements = Requirement.from_structure_list(module_proxy.CollectRequirements()) log.debug("Adding requirements for module %s : %s", module, module_requirements) payload.requirements.add_requirements(module_requirements) payload.pre_install()
def test_authselect_requirements(self): """Test that package requirements for authselect propagate correctly.""" self.security_interface.SetAuthselect(['select', 'sssd']) requirements = Requirement.from_structure_list( self.security_interface.CollectRequirements()) assert len(requirements) == 1 assert requirements[0].type == "package" assert requirements[0].name == "authselect" self.security_interface.SetAuthselect([]) self.security_interface.SetFingerprintAuthEnabled(True) requirements = Requirement.from_structure_list( self.security_interface.CollectRequirements()) assert len(requirements) == 1 assert requirements[0].type == "package" assert requirements[0].name == "authselect"
def test_datastream_requirements(service: OSCAPService, interface: OSCAPInterface): data = PolicyData() data.content_type = "datastream" data.profile_id = "Web Server" service.policy_enabled = True service.policy_data = data requirements = Requirement.from_structure_list( interface.CollectRequirements()) assert len(requirements) == 2 assert requirements[0].type == REQUIREMENT_TYPE_PACKAGE assert requirements[0].name == "openscap" assert requirements[1].type == REQUIREMENT_TYPE_PACKAGE assert requirements[1].name == "openscap-scanner"
def collect_requirements(self): """Collect requirements of the modules. :return: a list of requirements """ requirements = [] for observer in self._module_observers: if not observer.is_service_available: log.warning("Module %s not available!", observer.service_name) continue module_name = observer.service_name module_requirements = Requirement.from_structure_list( observer.proxy.CollectRequirements()) log.debug("Module %s requires: %s", module_name, module_requirements) requirements.extend(module_requirements) return requirements