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

1# API reference: https://kubevirt.io/user-guide/operations/clone_api/ 

2 

3from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource 

4from ocp_resources.virtual_machine import VirtualMachine 

5 

6 

7class VirtualMachineClone(NamespacedResource): 

8 api_group = NamespacedResource.ApiGroup.CLONE_KUBEVIRT_IO 

9 

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. 

23 

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 

41 

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", {}) 

48 

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 

53 

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 

59 

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