@@ -22,13 +22,23 @@ class Plan(NamespacedResource):
2222 warm_migration (bool, default: False): Warm (True) or Cold (False) migration.
2323 type (str, optional): Migration type. Valid values: "cold", "warm", "live", "conversion".
2424 pvc_name_template_use_generate_name (bool, optional): Whether to use generateName for PVC name templates.
25+ pvc_name_template (str, optional): Template string for PVC names in the target VM.
26+ volume_name_template (str, optional): Template for generating volume interface names in the target VM.
27+ network_name_template (str, optional): Template for generating network interface names in the target VM.
2528 skip_guest_conversion (bool, optional): Whether to skip guest conversion.
2629 target_power_state (str, optional): Specifies the desired power state of the target VM after migration.
2730 - "on": Target VM will be powered on after migration
2831 - "off": Target VM will be powered off after migration
2932 - "auto" or None (default): Target VM will match the source VM's power state
3033 use_compatibility_mode (bool, optional): Whether to use compatibility mode.
3134 migrate_shared_disks (bool, optional): Whether to migrate shared disks.
35+ preserve_static_ips (bool, optional): Whether to preserve static IPs during migration.
36+ target_node_selector (dict, optional): Node selector for the target VM. Specifies which node labels
37+ should be used for NodeSelector parameter of VMI resource.
38+ target_labels (dict, optional): Labels to be applied to the target VM. Specifies which labels
39+ should be added to the target VM resource.
40+ target_affinity (dict, optional): Affinity rules for the target VM. Specifies which affinity
41+ rules should be applied to the target VM resource.
3242 """
3343
3444 api_group = NamespacedResource .ApiGroup .FORKLIFT_KONVEYOR_IO
@@ -52,10 +62,17 @@ def __init__(
5262 after_hook_namespace : str | None = None ,
5363 type : str | None = None ,
5464 pvc_name_template_use_generate_name : bool | None = None ,
65+ pvc_name_template : str | None = None ,
66+ volume_name_template : str | None = None ,
67+ network_name_template : str | None = None ,
5568 skip_guest_conversion : bool | None = None ,
5669 target_power_state : str | None = None ,
5770 use_compatibility_mode : bool | None = None ,
5871 migrate_shared_disks : bool | None = None ,
72+ preserve_static_ips : bool | None = None ,
73+ target_node_selector : dict [str , str ] | None = None ,
74+ target_labels : dict [str , str ] | None = None ,
75+ target_affinity : dict [str , Any ] | None = None ,
5976 ** kwargs : Any ,
6077 ) -> None :
6178 super ().__init__ (** kwargs )
@@ -77,10 +94,17 @@ def __init__(
7794 self .hooks_array = []
7895 self .type = type
7996 self .pvc_name_template_use_generate_name = pvc_name_template_use_generate_name
97+ self .pvc_name_template = pvc_name_template
98+ self .volume_name_template = volume_name_template
99+ self .network_name_template = network_name_template
80100 self .skip_guest_conversion = skip_guest_conversion
81101 self .target_power_state = target_power_state
82102 self .use_compatibility_mode = use_compatibility_mode
83103 self .migrate_shared_disks = migrate_shared_disks
104+ self .preserve_static_ips = preserve_static_ips
105+ self .target_node_selector = target_node_selector
106+ self .target_labels = target_labels
107+ self .target_affinity = target_affinity
84108
85109 if self .pre_hook_name and self .pre_hook_namespace :
86110 self .hooks_array .append (
@@ -144,6 +168,15 @@ def to_dict(self) -> None:
144168 if self .pvc_name_template_use_generate_name is not None :
145169 spec ["pvcNameTemplateUseGenerateName" ] = self .pvc_name_template_use_generate_name
146170
171+ if self .pvc_name_template is not None :
172+ spec ["pvcNameTemplate" ] = self .pvc_name_template
173+
174+ if self .volume_name_template is not None :
175+ spec ["volumeNameTemplate" ] = self .volume_name_template
176+
177+ if self .network_name_template is not None :
178+ spec ["networkNameTemplate" ] = self .network_name_template
179+
147180 if self .skip_guest_conversion is not None :
148181 spec ["skipGuestConversion" ] = self .skip_guest_conversion
149182
@@ -156,6 +189,18 @@ def to_dict(self) -> None:
156189 if self .migrate_shared_disks is not None :
157190 spec ["migrateSharedDisks" ] = self .migrate_shared_disks
158191
192+ if self .preserve_static_ips is not None :
193+ spec ["preserveStaticIPs" ] = self .preserve_static_ips
194+
195+ if self .target_node_selector is not None :
196+ spec ["targetNodeSelector" ] = self .target_node_selector
197+
198+ if self .target_labels is not None :
199+ spec ["targetLabels" ] = self .target_labels
200+
201+ if self .target_affinity is not None :
202+ spec ["targetAffinity" ] = self .target_affinity
203+
159204 def _generate_hook_spec (self , hook_name : str , hook_namespace : str , hook_type : str ) -> dict [str , Any ]:
160205 return {
161206 "hook" : {
0 commit comments