Пример #1
0
    def install_bootloader_with_tasks(self, payload_type, kernel_versions):
        """Install the bootloader 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 [
            CreateRescueImagesTask(payload_type=payload_type,
                                   kernel_versions=kernel_versions,
                                   sysroot=conf.target.system_root),
            ConfigureBootloaderTask(storage=self.storage,
                                    mode=self.bootloader_mode,
                                    payload_type=payload_type,
                                    kernel_versions=kernel_versions,
                                    sysroot=conf.target.system_root),
            InstallBootloaderTask(storage=self.storage,
                                  mode=self.bootloader_mode),
            CreateBLSEntriesTask(storage=self.storage,
                                 payload_type=payload_type,
                                 kernel_versions=kernel_versions,
                                 sysroot=conf.target.system_root)
        ]
Пример #2
0
    def create_rescue_images_test(self, exec_mock):
        """Test the installation task that creates rescue images."""
        version = "4.17.7-200.fc28.x86_64"

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

            task.run()
            exec_mock.assert_not_called()

        exec_mock.reset_mock()

        with tempfile.TemporaryDirectory() as root:
            os.makedirs(root + "/etc/", exist_ok=True)
            open(root + "/etc/machine-id", 'wb').close()

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

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

            task.run()
            exec_mock.assert_has_calls([
                mock.call("systemd-machine-id-setup", [], root=root),
                mock.call("new-kernel-pkg",
                          ["--rpmposttrans", "4.17.7-200.fc28.x86_64"],
                          root=root)
            ])

        exec_mock.reset_mock()

        with tempfile.TemporaryDirectory() as root:
            os.makedirs(root + "/etc/kernel/postinst.d/", exist_ok=True)

            for name in ["c", "a", "b"]:
                path = root + "/etc/kernel/postinst.d/" + name
                open(path, 'wb').close()
                os.chmod(path, 0o775)

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

            task.run()
            exec_mock.assert_has_calls([
                mock.call("systemd-machine-id-setup", [], root=root),
                mock.call("/etc/kernel/postinst.d/a", [
                    "4.17.7-200.fc28.x86_64",
                    "/boot/vmlinuz-4.17.7-200.fc28.x86_64"
                ],
                          root=root),
                mock.call("/etc/kernel/postinst.d/b", [
                    "4.17.7-200.fc28.x86_64",
                    "/boot/vmlinuz-4.17.7-200.fc28.x86_64"
                ],
                          root=root),
                mock.call("/etc/kernel/postinst.d/c", [
                    "4.17.7-200.fc28.x86_64",
                    "/boot/vmlinuz-4.17.7-200.fc28.x86_64"
                ],
                          root=root),
            ])