Ejemplo n.º 1
0
    def test_generate_device_factory_request_btrfs(self, blockdev):
        dev1 = StorageDevice("dev1",
                             fmt=get_format("btrfs"),
                             size=Size("10 GiB"))

        dev2 = BTRFSVolumeDevice("dev2", data_level="single", parents=[dev1])

        dev3 = BTRFSSubVolumeDevice(
            parents=[dev2],
            fmt=get_format("btrfs", mountpoint="/boot"),
        )

        request = utils.generate_device_factory_request(self.storage, dev3)
        assert DeviceFactoryRequest.to_structure(request) == {
            "device-spec": get_variant(Str, dev3.name),
            "disks": get_variant(List[Str], []),
            "mount-point": get_variant(Str, "/boot"),
            "reformat": get_variant(Bool, True),
            "format-type": get_variant(Str, "btrfs"),
            "label": get_variant(Str, ""),
            "luks-version": get_variant(Str, ""),
            "device-type": get_variant(Int, devicefactory.DEVICE_TYPE_BTRFS),
            "device-name": get_variant(Str, dev3.name),
            "device-size": get_variant(UInt64,
                                       Size("10 GiB").get_bytes()),
            "device-encrypted": get_variant(Bool, False),
            "device-raid-level": get_variant(Str, ""),
            "container-spec": get_variant(Str, dev2.name),
            "container-name": get_variant(Str, dev2.name),
            "container-size-policy": get_variant(Int64,
                                                 Size("10 GiB").get_bytes()),
            "container-encrypted": get_variant(Bool, False),
            "container-raid-level": get_variant(Str, "single"),
        }
    def generate_device_factory_request_raid_test(self, blockdev):
        disk1 = DiskDevice("dev1", fmt=get_format("mdmember"))
        disk2 = DiskDevice("dev2", fmt=get_format("mdmember"))
        device = MDRaidArrayDevice("dev3",
                                   level="raid1",
                                   parents=[disk1, disk2])

        request = utils.generate_device_factory_request(self.storage, device)
        self.assertEqual(
            DeviceFactoryRequest.to_structure(request), {
                "device-spec": get_variant(Str, "dev3"),
                "disks": get_variant(List[Str], ["dev1", "dev2"]),
                "mount-point": get_variant(Str, ""),
                "reformat": get_variant(Bool, True),
                "format-type": get_variant(Str, ""),
                "label": get_variant(Str, ""),
                "luks-version": get_variant(Str, ""),
                "device-type": get_variant(Int, devicefactory.DEVICE_TYPE_MD),
                "device-name": get_variant(Str, "dev3"),
                "device-size": get_variant(UInt64, 0),
                "device-encrypted": get_variant(Bool, False),
                "device-raid-level": get_variant(Str, "raid1"),
                "container-spec": get_variant(Str, ""),
                "container-name": get_variant(Str, ""),
                "container-size-policy": get_variant(Int64, 0),
                "container-encrypted": get_variant(Bool, False),
                "container-raid-level": get_variant(Str, ""),
            })
Ejemplo n.º 3
0
    def generate_device_factory_request(self, device_name):
        """Generate a device factory request for the given device.

        The request will reflect the current state of the device.
        It can be modified and used to change the device.

        :param device_name: a device name
        :return: a device factory request
        """
        device = self._get_device(device_name)
        return utils.generate_device_factory_request(self.storage, device)
    def generate_device_factory_request_lvm_test(self, blockdev):
        pv1 = StorageDevice("pv1",
                            size=Size("1025 MiB"),
                            fmt=get_format("lvmpv"))
        pv2 = StorageDevice("pv2",
                            size=Size("513 MiB"),
                            fmt=get_format("lvmpv"))
        vg = LVMVolumeGroupDevice("testvg", parents=[pv1, pv2])
        lv = LVMLogicalVolumeDevice("testlv",
                                    size=Size("512 MiB"),
                                    parents=[vg],
                                    fmt=get_format("xfs"),
                                    exists=False,
                                    seg_type="raid1",
                                    pvs=[pv1, pv2])

        request = utils.generate_device_factory_request(self.storage, lv)
        self.assertEqual(
            DeviceFactoryRequest.to_structure(request), {
                "device-spec": get_variant(Str, "testvg-testlv"),
                "disks": get_variant(List[Str], []),
                "mount-point": get_variant(Str, ""),
                "reformat": get_variant(Bool, True),
                "format-type": get_variant(Str, "xfs"),
                "label": get_variant(Str, ""),
                "luks-version": get_variant(Str, ""),
                "device-type": get_variant(Int, devicefactory.DEVICE_TYPE_LVM),
                "device-name": get_variant(Str, "testlv"),
                "device-size": get_variant(UInt64,
                                           Size("508 MiB").get_bytes()),
                "device-encrypted": get_variant(Bool, False),
                "device-raid-level": get_variant(Str, ""),
                "container-spec": get_variant(Str, "testvg"),
                "container-name": get_variant(Str, "testvg"),
                "container-size-policy": get_variant(Int64, Size("1.5 GiB")),
                "container-encrypted": get_variant(Bool, False),
                "container-raid-level": get_variant(Str, ""),
            })
Ejemplo n.º 5
0
    def generate_device_factory_request_test(self, blockdev):
        device = StorageDevice("dev1")
        with self.assertRaises(UnsupportedDeviceError):
            utils.generate_device_factory_request(self.storage, device)

        disk = DiskDevice("dev2")

        request = utils.generate_device_factory_request(self.storage, disk)
        self.assertEqual(DeviceFactoryRequest.to_structure(request), {
            "device-spec": get_variant(Str, "dev2"),
            "disks": get_variant(List[Str], ["dev2"]),
            "mount-point": get_variant(Str, ""),
            "reformat": get_variant(Bool, False),
            "format-type": get_variant(Str, ""),
            "label": get_variant(Str, ""),
            "luks-version": get_variant(Str, ""),
            "device-type": get_variant(Int, devicefactory.DEVICE_TYPE_DISK),
            "device-name": get_variant(Str, "dev2"),
            "device-size": get_variant(UInt64, 0),
            "device-encrypted": get_variant(Bool, False),
            "device-raid-level": get_variant(Str, ""),
            "container-spec": get_variant(Str, ""),
            "container-name": get_variant(Str, ""),
            "container-size-policy": get_variant(Int64, devicefactory.SIZE_POLICY_AUTO),
            "container-encrypted": get_variant(Bool, False),
            "container-raid-level": get_variant(Str, ""),
        })

        partition = PartitionDevice(
            "dev3",
            size=Size("5 GiB"),
            parents=[disk],
            fmt=get_format("ext4", mountpoint="/", label="root")
        )

        request = utils.generate_device_factory_request(self.storage, partition)
        self.assertEqual(DeviceFactoryRequest.to_structure(request), {
            "device-spec": get_variant(Str, "dev3"),
            "disks": get_variant(List[Str], ["dev2"]),
            "mount-point": get_variant(Str, "/"),
            "reformat": get_variant(Bool, True),
            "format-type": get_variant(Str, "ext4"),
            "label": get_variant(Str, "root"),
            "luks-version": get_variant(Str, ""),
            "device-type": get_variant(Int, devicefactory.DEVICE_TYPE_PARTITION),
            "device-name": get_variant(Str, "dev3"),
            "device-size": get_variant(UInt64, Size("5 GiB").get_bytes()),
            "device-encrypted": get_variant(Bool, False),
            "device-raid-level": get_variant(Str, ""),
            "container-spec": get_variant(Str, ""),
            "container-name": get_variant(Str, ""),
            "container-size-policy": get_variant(Int64, devicefactory.SIZE_POLICY_AUTO),
            "container-encrypted": get_variant(Bool, False),
            "container-raid-level": get_variant(Str, ""),
        })

        pv1 = StorageDevice(
            "pv1",
            size=Size("1025 MiB"),
            fmt=get_format("lvmpv")
        )
        pv2 = StorageDevice(
            "pv2",
            size=Size("513 MiB"),
            fmt=get_format("lvmpv")
        )
        vg = LVMVolumeGroupDevice(
            "testvg",
            parents=[pv1, pv2]
        )
        lv = LVMLogicalVolumeDevice(
            "testlv",
            size=Size("512 MiB"),
            parents=[vg],
            fmt=get_format("xfs"),
            exists=False,
            seg_type="raid1",
            pvs=[pv1, pv2]
        )

        request = utils.generate_device_factory_request(self.storage, lv)
        self.assertEqual(DeviceFactoryRequest.to_structure(request), {
            "device-spec": get_variant(Str, "testvg-testlv"),
            "disks": get_variant(List[Str], []),
            "mount-point": get_variant(Str, ""),
            "reformat": get_variant(Bool, True),
            "format-type": get_variant(Str, "xfs"),
            "label": get_variant(Str, ""),
            "luks-version": get_variant(Str, ""),
            "device-type": get_variant(Int, devicefactory.DEVICE_TYPE_LVM),
            "device-name": get_variant(Str, "testlv"),
            "device-size": get_variant(UInt64, Size("508 MiB").get_bytes()),
            "device-encrypted": get_variant(Bool, False),
            "device-raid-level": get_variant(Str, ""),
            "container-spec": get_variant(Str, "testvg"),
            "container-name": get_variant(Str, "testvg"),
            "container-size-policy": get_variant(Int64, Size("1.5 GiB")),
            "container-encrypted": get_variant(Bool, False),
            "container-raid-level": get_variant(Str, ""),
        })
    def generate_device_factory_request_partition_test(self, blockdev):
        disk = DiskDevice("dev2")

        request = utils.generate_device_factory_request(self.storage, disk)
        self.assertEqual(
            DeviceFactoryRequest.to_structure(request), {
                "device-spec":
                get_variant(Str, "dev2"),
                "disks":
                get_variant(List[Str], ["dev2"]),
                "mount-point":
                get_variant(Str, ""),
                "reformat":
                get_variant(Bool, False),
                "format-type":
                get_variant(Str, ""),
                "label":
                get_variant(Str, ""),
                "luks-version":
                get_variant(Str, ""),
                "device-type":
                get_variant(Int, devicefactory.DEVICE_TYPE_DISK),
                "device-name":
                get_variant(Str, "dev2"),
                "device-size":
                get_variant(UInt64, 0),
                "device-encrypted":
                get_variant(Bool, False),
                "device-raid-level":
                get_variant(Str, ""),
                "container-spec":
                get_variant(Str, ""),
                "container-name":
                get_variant(Str, ""),
                "container-size-policy":
                get_variant(Int64, devicefactory.SIZE_POLICY_AUTO),
                "container-encrypted":
                get_variant(Bool, False),
                "container-raid-level":
                get_variant(Str, ""),
            })

        partition = PartitionDevice("dev3",
                                    size=Size("5 GiB"),
                                    parents=[disk],
                                    fmt=get_format("ext4",
                                                   mountpoint="/",
                                                   label="root"))

        request = utils.generate_device_factory_request(
            self.storage, partition)
        self.assertEqual(
            DeviceFactoryRequest.to_structure(request), {
                "device-spec":
                get_variant(Str, "dev3"),
                "disks":
                get_variant(List[Str], ["dev2"]),
                "mount-point":
                get_variant(Str, "/"),
                "reformat":
                get_variant(Bool, True),
                "format-type":
                get_variant(Str, "ext4"),
                "label":
                get_variant(Str, "root"),
                "luks-version":
                get_variant(Str, ""),
                "device-type":
                get_variant(Int, devicefactory.DEVICE_TYPE_PARTITION),
                "device-name":
                get_variant(Str, "dev3"),
                "device-size":
                get_variant(UInt64,
                            Size("5 GiB").get_bytes()),
                "device-encrypted":
                get_variant(Bool, False),
                "device-raid-level":
                get_variant(Str, ""),
                "container-spec":
                get_variant(Str, ""),
                "container-name":
                get_variant(Str, ""),
                "container-size-policy":
                get_variant(Int64, devicefactory.SIZE_POLICY_AUTO),
                "container-encrypted":
                get_variant(Bool, False),
                "container-raid-level":
                get_variant(Str, ""),
            })
    def generate_device_factory_request_unsupported_test(self):
        device = StorageDevice("dev1")

        with self.assertRaises(UnsupportedDeviceError):
            utils.generate_device_factory_request(self.storage, device)
Ejemplo n.º 8
0
    def test_generate_device_factory_request_unsupported(self):
        device = StorageDevice("dev1")

        with pytest.raises(UnsupportedDeviceError):
            utils.generate_device_factory_request(self.storage, device)