예제 #1
0
    def change_device_test(self):
        """Test ChangeDevice."""
        dev1 = DiskDevice("dev1")
        dev2 = PartitionDevice("dev2",
                               size=Size("5 GiB"),
                               parents=[dev1],
                               fmt=get_format("ext4",
                                              mountpoint="/",
                                              label="root"))

        self._add_device(dev1)
        self._add_device(dev2)

        original_request = self.module.generate_device_factory_request("dev2")
        request = copy.deepcopy(original_request)

        request.device_type = DEVICE_TYPE_LVM
        request.mount_point = "/home"
        request.size = Size("4 GiB")
        request.label = "home"

        self.storage.factory_device = Mock()
        self.interface.ChangeDevice(
            DeviceFactoryRequest.to_structure(request),
            DeviceFactoryRequest.to_structure(original_request))
        self.storage.factory_device.assert_called_once()
예제 #2
0
    def validate_device_factory_request_test(self):
        """Test ValidateDeviceFactoryRequest."""
        dev1 = DiskDevice("dev1")
        dev2 = DiskDevice("dev2")
        dev3 = PartitionDevice("dev3", size=Size("10 GiB"), parents=[dev1])

        self._add_device(dev1)
        self._add_device(dev2)
        self._add_device(dev3)

        request = self.module.generate_device_factory_request("dev3")
        request.device_type = DEVICE_TYPE_LVM
        request.disks = ["dev1", "dev2"]
        request.format_type = "ext4"
        request.mount_point = "/boot"
        request.label = "root"
        request.reformat = True
        request.luks_version = "luks1"
        request.device_size = Size("5 GiB").get_bytes()
        request.device_encrypted = True
        request.device_raid_level = "raid1"

        result = self.interface.ValidateDeviceFactoryRequest(
            DeviceFactoryRequest.to_structure(request))
        self._check_report(result, "/boot cannot be encrypted")

        request.mount_point = "/"
        result = self.interface.ValidateDeviceFactoryRequest(
            DeviceFactoryRequest.to_structure(request))
        self._check_report(result, None)
예제 #3
0
    def GenerateDeviceFactoryRequest(self, device_name: Str) -> Structure:
        """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
        """
        return DeviceFactoryRequest.to_structure(
            self.implementation.generate_device_factory_request(device_name))
예제 #4
0
    def add_device_test(self):
        """Test AddDevice."""
        self._add_device(
            DiskDevice("dev1",
                       exists=True,
                       size=Size("15 GiB"),
                       fmt=get_format("disklabel")))

        request = DeviceFactoryRequest()
        request.device_type = DEVICE_TYPE_LVM
        request.mount_point = "/home"
        request.size = Size("5 GiB")
        request.disks = ["dev1"]

        self.storage.factory_device = Mock()
        self.interface.AddDevice(DeviceFactoryRequest.to_structure(request))
        self.storage.factory_device.assert_called_once()
    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, ""),
                "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-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, "/"),
                "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-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, ""),
                "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-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, ""),
            })