Coverage for ocp_resources/virtual_machine_clone.py: 0%
36 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:48 +0200
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:48 +0200
1# API reference: https://kubevirt.io/user-guide/operations/clone_api/
3from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
4from ocp_resources.virtual_machine import VirtualMachine
7class VirtualMachineClone(NamespacedResource):
8 api_group = NamespacedResource.ApiGroup.CLONE_KUBEVIRT_IO
10 def __init__(
11 self,
12 source_name=None,
13 source_kind=None,
14 target_name=None,
15 label_filters=None,
16 annotation_filters=None,
17 new_mac_addresses=None,
18 new_smbios_serial=None,
19 **kwargs,
20 ):
21 """
22 Create VirtualMachineClone object.
24 Args:
25 source_name (str): the clone's source name
26 source_kind (str, optional): the clone's source type, default - VirtualMachine.kind
27 target_name (str, optional): the clone's target name, default - randomly generated name
28 label_filters (list, optional): List of label filters, e.g. ["*", "!someKey/*"]
29 annotation_filters (list, optional): List of annotation filters, e.g. ["firstKey/*", "secondKey/*"]
30 new_mac_addresses (dict, optional): Dict of new MAC addresses, {interface_name: mac_address}
31 new_smbios_serial (str, optional): the clone's new smbios serial
32 """
33 super().__init__(**kwargs)
34 self.source_name = source_name
35 self.source_kind = source_kind
36 self.target_name = target_name
37 self.label_filters = label_filters
38 self.annotation_filters = annotation_filters
39 self.new_mac_addresses = new_mac_addresses
40 self.new_smbios_serial = new_smbios_serial
42 def to_dict(self) -> None:
43 super().to_dict()
44 if not self.kind_dict and not self.yaml_file:
45 if not self.source_name:
46 raise MissingRequiredArgumentError(argument="source_name")
47 spec = self.res.setdefault("spec", {})
49 source = spec.setdefault("source", {})
50 source["apiGroup"] = NamespacedResource.ApiGroup.KUBEVIRT_IO
51 source["kind"] = self.source_kind if self.source_kind else VirtualMachine.kind
52 source["name"] = self.source_name
54 if self.target_name:
55 target = spec.setdefault("target", {})
56 target["apiGroup"] = NamespacedResource.ApiGroup.KUBEVIRT_IO
57 target["kind"] = VirtualMachine.kind
58 target["name"] = self.target_name
60 if self.label_filters:
61 spec["labelFilters"] = self.label_filters
62 if self.annotation_filters:
63 spec["annotationFilters"] = self.annotation_filters
64 if self.new_mac_addresses:
65 spec["newMacAddresses"] = self.new_mac_addresses
66 if self.new_smbios_serial:
67 spec["newSMBiosSerial"] = self.new_smbios_serial