コード例 #1
0
ファイル: bootloader.py プロジェクト: VladimirSlavik/anaconda
    def generate_initramfs_with_tasks(self, payload_type, kernel_versions):
        """Generate initramfs with a list of tasks.

        FIXME: This is just a temporary method.

        :param payload_type: a string with the payload type
        :param kernel_versions: a list of kernel versions
        :return: a list of tasks
        """
        return [
            RecreateInitrdsTask(payload_type=payload_type,
                                kernel_versions=kernel_versions,
                                sysroot=conf.target.system_root),
            FixBTRFSBootloaderTask(storage=self.storage,
                                   mode=self.bootloader_mode,
                                   payload_type=payload_type,
                                   kernel_versions=kernel_versions,
                                   sysroot=conf.target.system_root),
        ]
コード例 #2
0
    def recreate_initrds_test(self, conf_mock, exec_mock, args_mock):
        """Test the installation task that recreates initrds."""
        version = "4.17.7-200.fc28.x86_64"

        with tempfile.TemporaryDirectory() as root:
            task = RecreateInitrdsTask(sysroot=root,
                                       payload_type=PAYLOAD_TYPE_RPM_OSTREE,
                                       kernel_versions=[version])
            task.run()
            exec_mock.assert_not_called()

        exec_mock.reset_mock()
        conf_mock.target.is_image = False
        args_mock.get.return_value = None

        with tempfile.TemporaryDirectory() as root:
            task = RecreateInitrdsTask(sysroot=root,
                                       payload_type=PAYLOAD_TYPE_LIVE_IMAGE,
                                       kernel_versions=[version])

            task.run()
            exec_mock.assert_has_calls([
                mock.call("depmod", ["-a", "4.17.7-200.fc28.x86_64"],
                          root=root),
                mock.call("dracut", [
                    "-f", "/boot/initramfs-4.17.7-200.fc28.x86_64.img",
                    "4.17.7-200.fc28.x86_64"
                ],
                          root=root)
            ])

        exec_mock.reset_mock()
        conf_mock.target.is_image = False
        args_mock.get.return_value = "1"

        with tempfile.TemporaryDirectory() as root:
            os.makedirs(root + "/usr/sbin/", exist_ok=True)
            open(root + "/usr/sbin/new-kernel-pkg", 'wb').close()

            task = RecreateInitrdsTask(sysroot=root,
                                       payload_type=PAYLOAD_TYPE_LIVE_IMAGE,
                                       kernel_versions=[version])

            task.run()
            exec_mock.assert_has_calls([
                mock.call("new-kernel-pkg", [
                    "--mkinitrd", "--dracut", "--depmod", "--update",
                    "4.17.7-200.fc28.x86_64"
                ],
                          root=root),
                mock.call("fips-mode-setup", ["--enable", "--no-bootcfg"],
                          root=root)
            ])

        exec_mock.reset_mock()
        conf_mock.target.is_image = True

        with tempfile.TemporaryDirectory() as root:
            task = RecreateInitrdsTask(sysroot=root,
                                       payload_type=PAYLOAD_TYPE_LIVE_IMAGE,
                                       kernel_versions=[version])

            task.run()
            exec_mock.assert_called_once_with("dracut", [
                "-N", "--persistent-policy", "by-uuid", "-f",
                "/boot/initramfs-4.17.7-200.fc28.x86_64.img",
                "4.17.7-200.fc28.x86_64"
            ],
                                              root=root)