Ejemplo n.º 1
0
    def system_test(self):
        conf = AnacondaConfiguration.from_defaults()

        opts, _deprecated = self._parseCmdline([])
        conf.set_from_opts(opts)

        self.assertEqual(conf.system._is_boot_iso, True)
        self.assertEqual(conf.system._is_live_os, False)
        self.assertEqual(conf.system._is_unknown, False)

        opts, _deprecated = self._parseCmdline(['--liveinst'])
        conf.set_from_opts(opts)

        self.assertEqual(conf.system._is_boot_iso, False)
        self.assertEqual(conf.system._is_live_os, True)
        self.assertEqual(conf.system._is_unknown, False)

        opts, _deprecated = self._parseCmdline(['--dirinstall=/what/ever'])
        conf.set_from_opts(opts)

        self.assertEqual(conf.system._is_boot_iso, False)
        self.assertEqual(conf.system._is_live_os, False)
        self.assertEqual(conf.system._is_unknown, True)

        opts, _deprecated = self._parseCmdline(['--image=/what/ever.img'])
        conf.set_from_opts(opts)

        self.assertEqual(conf.system._is_boot_iso, False)
        self.assertEqual(conf.system._is_live_os, False)
        self.assertEqual(conf.system._is_unknown, True)
Ejemplo n.º 2
0
    def target_test(self):
        conf = AnacondaConfiguration.from_defaults()

        opts, _deprecated = self._parseCmdline([])
        conf.set_from_opts(opts)

        self.assertEqual(conf.target.is_hardware, True)
        self.assertEqual(conf.target.is_image, False)
        self.assertEqual(conf.target.is_directory, False)
        self.assertEqual(conf.target.physical_root, "/mnt/sysimage")

        opts, _deprecated = self._parseCmdline(['--image=/what/ever.img'])
        conf.set_from_opts(opts)

        self.assertEqual(conf.target.is_hardware, False)
        self.assertEqual(conf.target.is_image, True)
        self.assertEqual(conf.target.is_directory, False)
        self.assertEqual(conf.target.physical_root, "/mnt/sysimage")

        opts, _deprecated = self._parseCmdline(['--dirinstall=/what/ever'])
        conf.set_from_opts(opts)

        self.assertEqual(conf.target.is_hardware, False)
        self.assertEqual(conf.target.is_image, False)
        self.assertEqual(conf.target.is_directory, True)
        self.assertEqual(conf.target.physical_root, "/what/ever")
Ejemplo n.º 3
0
    def default_write_test(self):
        conf = AnacondaConfiguration.from_defaults()

        with tempfile.NamedTemporaryFile("r+") as f:
            conf.write(f.name)
            f.flush()
            self.assertTrue(f.read(), "The file shouldn't be empty.")
Ejemplo n.º 4
0
    def storage_test(self):
        conf = AnacondaConfiguration.from_defaults()

        opts, _deprecated = self._parseCmdline([])
        conf.set_from_opts(opts)

        self.assertEqual(conf.storage.dmraid, True)
        self.assertEqual(conf.storage.ibft, True)

        opts, _deprecated = self._parseCmdline(['--nodmraid', '--ibft'])
        conf.set_from_opts(opts)

        self.assertEqual(conf.storage.dmraid, False)
        self.assertEqual(conf.storage.ibft, True)
Ejemplo n.º 5
0
    def _check_default_product(self, product_name, variant_name, file_names):
        """Check a default product."""
        self._check_product(
            product_name, variant_name,
            [os.path.join(PRODUCT_DIR, path) for path in file_names]
        )

        config = AnacondaConfiguration.from_defaults()
        paths = self._loader.collect_configurations(product_name, variant_name)

        for path in paths:
            config.read(path)

        config.validate()
Ejemplo n.º 6
0
    def kickstart_modules_test(self):
        conf = AnacondaConfiguration.from_defaults()

        self.assertEqual(
            set(conf.anaconda.kickstart_modules),
            set(service.service_name for service in (
                services.TIMEZONE,
                services.NETWORK,
                services.LOCALIZATION,
                services.SECURITY,
                services.USERS,
                services.PAYLOAD,
                services.STORAGE,
                services.SERVICES
            ))
        )
Ejemplo n.º 7
0
    def set_from_files_test(self):
        conf = AnacondaConfiguration.from_defaults()
        paths = []

        with tempfile.TemporaryDirectory() as d:
            # Add nonexistent file.
            nonexistent = os.path.join(d, "nonexistent")
            paths.append(nonexistent)

            # Add empty directory.
            empty_dir = os.path.join(d, "empty")
            os.mkdir(empty_dir)
            paths.append(empty_dir)

            # Add existing file.
            existing = os.path.join(d, "a.conf")
            paths.append(existing)

            with open(existing, mode="w") as f:
                f.write("")

            # Add non-empty directory.
            conf_dir = os.path.join(d, "conf.d")
            os.mkdir(conf_dir)
            paths.append(conf_dir)

            for name in ["b.conf", "c.conf", "d"]:
                with open(os.path.join(conf_dir, name), mode="w") as f:
                    f.write("")

            # Check the paths.
            self.assertEqual(
                [os.path.relpath(path, d) for path in paths],
                ["nonexistent", "empty", "a.conf", "conf.d"]
            )

            conf._sources = []
            conf.set_from_files(paths)

            # Check the loaded files.
            self.assertEqual(
                [os.path.relpath(path, d) for path in conf.get_sources()],
                ["a.conf", "conf.d/b.conf", "conf.d/c.conf"]
            )
Ejemplo n.º 8
0
    def default_validation_test(self):
        conf = AnacondaConfiguration.from_defaults()
        conf.validate()

        # Set invalid value.
        parser = conf.get_parser()
        parser["Anaconda"]["debug"] = "string"
        with self.assertRaises(ConfigurationError):
            conf.validate()

        # Remove a required option.
        parser.remove_option("Anaconda", "debug")
        with self.assertRaises(ConfigurationError):
            conf.validate()

        # Remove a required section.
        parser.remove_section("Anaconda")
        with self.assertRaises(ConfigurationError):
            conf.validate()
Ejemplo n.º 9
0
    def default_validation_test(self):
        conf = AnacondaConfiguration.from_defaults()
        conf.validate()

        # Set invalid value.
        parser = conf.get_parser()
        parser["Anaconda"]["debug"] = "string"
        with self.assertRaises(ConfigurationError):
            conf.validate()

        # Remove a required option.
        parser.remove_option("Anaconda", "debug")
        with self.assertRaises(ConfigurationError):
            conf.validate()

        # Remove a required section.
        parser.remove_section("Anaconda")
        with self.assertRaises(ConfigurationError):
            conf.validate()
Ejemplo n.º 10
0
    def test_set_from_requested_profile(self):
        conf = AnacondaConfiguration.from_defaults()

        # Test an unknown requested profile.
        with self.assertRaises(ConfigurationError) as cm:
            conf.set_from_profile("unknown-profile")

        expected = "Unable to find any suitable configuration files " \
                   "for the 'unknown-profile' profile."

        self.assertEqual(str(cm.exception), expected)

        # Test a known requested profile.
        conf.set_from_profile("fedora-workstation")

        self._check_configuration_sources(conf, [
            "anaconda.conf", "profile.d/fedora.conf",
            "profile.d/fedora-workstation.conf"
        ])
Ejemplo n.º 11
0
    def test_set_from_detected_profile(self):
        conf = AnacondaConfiguration.from_defaults()

        # Test unknown os-release values.
        with self.assertLogs(level="WARNING") as cm:
            conf.set_from_detected_profile("unknown-os", "unknown-variant")

        expected = \
            "Unable to find any suitable configuration files for the detected " \
            "os-release values. No profile configuration will be used."

        self.assertIn(expected, "\n".join(cm.output))

        # Test known os-release values.
        conf.set_from_detected_profile("fedora", "workstation")

        self._check_configuration_sources(conf, [
            "anaconda.conf", "profile.d/fedora.conf",
            "profile.d/fedora-workstation.conf"
        ])
Ejemplo n.º 12
0
 def test_default_password_policies(self):
     conf = AnacondaConfiguration.from_defaults()
     self.assertEqual(conf.ui.password_policies, [
         {
             'name': 'root',
             "quality": 1,
             "length": 6,
         },
         {
             'name': 'user',
             "quality": 1,
             "length": 6,
             "empty": True,
         },
         {
             'name': 'luks',
             "quality": 1,
             "length": 6,
         },
     ])
Ejemplo n.º 13
0
    def test_target_nosave(self):
        conf = AnacondaConfiguration.from_defaults()
        opts, _removed = self._parseCmdline([])
        conf.set_from_opts(opts)

        assert conf.target.can_copy_input_kickstart is True
        assert conf.target.can_save_installation_logs is True
        assert conf.target.can_save_output_kickstart is True

        conf = AnacondaConfiguration.from_defaults()
        opts, _removed = self._parseCmdline(['--nosave=all'])
        conf.set_from_opts(opts)

        assert conf.target.can_copy_input_kickstart is False
        assert conf.target.can_save_installation_logs is False
        assert conf.target.can_save_output_kickstart is False

        conf = AnacondaConfiguration.from_defaults()
        opts, _removed = self._parseCmdline(['--nosave=all_ks'])
        conf.set_from_opts(opts)

        assert conf.target.can_copy_input_kickstart is False
        assert conf.target.can_save_installation_logs is True
        assert conf.target.can_save_output_kickstart is False

        conf = AnacondaConfiguration.from_defaults()
        opts, _removed = self._parseCmdline(['--nosave=logs'])
        conf.set_from_opts(opts)

        assert conf.target.can_copy_input_kickstart is True
        assert conf.target.can_save_installation_logs is False
        assert conf.target.can_save_output_kickstart is True

        conf = AnacondaConfiguration.from_defaults()
        opts, _removed = self._parseCmdline(['--nosave=input_ks'])
        conf.set_from_opts(opts)

        assert conf.target.can_copy_input_kickstart is False
        assert conf.target.can_save_installation_logs is True
        assert conf.target.can_save_output_kickstart is True

        conf = AnacondaConfiguration.from_defaults()
        opts, _removed = self._parseCmdline(['--nosave=output_ks'])
        conf.set_from_opts(opts)

        assert conf.target.can_copy_input_kickstart is True
        assert conf.target.can_save_installation_logs is True
        assert conf.target.can_save_output_kickstart is False
Ejemplo n.º 14
0
    def test_kickstart_modules(self):
        """Test the kickstart_modules option."""
        message = \
            "The kickstart_modules configuration option is " \
            "deprecated and will be removed in in the future."

        conf = AnacondaConfiguration.from_defaults()
        assert conf.anaconda.activatable_modules == [
            "org.fedoraproject.Anaconda.Modules.*",
            "org.fedoraproject.Anaconda.Addons.*"
        ]

        parser = conf.get_parser()
        parser.read_string(
            dedent("""

        [Anaconda]
        kickstart_modules =
            org.fedoraproject.Anaconda.Modules.Timezone
            org.fedoraproject.Anaconda.Modules.Localization
            org.fedoraproject.Anaconda.Modules.Security

        """))

        with pytest.warns(DeprecationWarning, match=message):
            activatable_modules = conf.anaconda.activatable_modules

        assert activatable_modules == [
            "org.fedoraproject.Anaconda.Modules.Timezone",
            "org.fedoraproject.Anaconda.Modules.Localization",
            "org.fedoraproject.Anaconda.Modules.Security",
            "org.fedoraproject.Anaconda.Addons.*"
        ]

        for pattern in activatable_modules:
            self._check_pattern(pattern)
Ejemplo n.º 15
0
    def test_optional_modules(self):
        """Test the optional_modules option."""
        conf = AnacondaConfiguration.from_defaults()

        for pattern in conf.anaconda.optional_modules:
            self._check_pattern(pattern)
Ejemplo n.º 16
0
 def bootloader_test(self):
     conf = AnacondaConfiguration.from_defaults()
     self.assertIn("selinux", conf.bootloader.preserved_arguments)
Ejemplo n.º 17
0
 def default_read_test(self):
     AnacondaConfiguration.from_defaults()
Ejemplo n.º 18
0
    def test_addons_enabled_modules(self):
        """Test the addons_enabled option."""
        message = \
            "The addons_enabled configuration option is " \
            "deprecated and will be removed in in the future."

        conf = AnacondaConfiguration.from_defaults()
        assert conf.anaconda.forbidden_modules == []

        parser = conf.get_parser()
        parser.read_string(
            dedent("""

        [Anaconda]
        forbidden_modules =
            org.fedoraproject.Anaconda.Modules.Timezone
            org.fedoraproject.Anaconda.Modules.Localization
            org.fedoraproject.Anaconda.Modules.Security

        """))

        assert conf.anaconda.forbidden_modules == [
            "org.fedoraproject.Anaconda.Modules.Timezone",
            "org.fedoraproject.Anaconda.Modules.Localization",
            "org.fedoraproject.Anaconda.Modules.Security",
        ]

        parser.read_string(
            dedent("""

        [Anaconda]
        addons_enabled = True

        """))

        with pytest.warns(DeprecationWarning, match=message):
            forbidden_modules = conf.anaconda.forbidden_modules

        assert forbidden_modules == [
            "org.fedoraproject.Anaconda.Modules.Timezone",
            "org.fedoraproject.Anaconda.Modules.Localization",
            "org.fedoraproject.Anaconda.Modules.Security",
        ]

        parser.read_string(
            dedent("""

        [Anaconda]
        addons_enabled = False

        """))

        with pytest.warns(DeprecationWarning, match=message):
            forbidden_modules = conf.anaconda.forbidden_modules

        assert forbidden_modules == [
            "org.fedoraproject.Anaconda.Addons.*",
            "org.fedoraproject.Anaconda.Modules.Timezone",
            "org.fedoraproject.Anaconda.Modules.Localization",
            "org.fedoraproject.Anaconda.Modules.Security",
        ]

        for pattern in forbidden_modules:
            self._check_pattern(pattern)
Ejemplo n.º 19
0
 def default_source_test(self):
     conf = AnacondaConfiguration.from_defaults()
     sources = conf.get_sources()
     self.assertEqual(len(sources), 1)
     self.assertEqual(sources[0], os.environ.get("ANACONDA_CONFIG_TMP"))
Ejemplo n.º 20
0
 def source_test(self):
     conf = AnacondaConfiguration()
     sources = conf.get_sources()
     self.assertEqual(sources, [])
Ejemplo n.º 21
0
 def test_default_installation_source(self):
     conf = AnacondaConfiguration.from_defaults()
     self.assertEqual(conf.payload.default_source,
                      SOURCE_TYPE_CLOSEST_MIRROR)
Ejemplo n.º 22
0
 def test_default_read(self):
     AnacondaConfiguration.from_defaults()
Ejemplo n.º 23
0
 def test_set_from_detected_product(self):
     conf = AnacondaConfiguration.from_defaults()
     conf.set_from_product(get_os_release_value("NAME"))
Ejemplo n.º 24
0
 def test_bootloader(self):
     conf = AnacondaConfiguration.from_defaults()
     assert "selinux" in conf.bootloader.preserved_arguments
Ejemplo n.º 25
0
 def default_source_test(self):
     conf = AnacondaConfiguration.from_defaults()
     sources = conf.get_sources()
     self.assertEqual(len(sources), 1)
     self.assertEqual(sources[0], os.environ.get("ANACONDA_CONFIG_TMP"))
Ejemplo n.º 26
0
 def default_read_test(self):
     AnacondaConfiguration.from_defaults()
Ejemplo n.º 27
0
 def test_source(self):
     conf = AnacondaConfiguration()
     sources = conf.get_sources()
     assert sources == []
Ejemplo n.º 28
0
 def test_default_source(self):
     conf = AnacondaConfiguration.from_defaults()
     sources = conf.get_sources()
     assert len(sources) == 1
     assert sources[0] == os.environ.get("ANACONDA_CONFIG_TMP")