Skip to content

Commit 9ac1864

Browse files
committed
Plan: Add a few missing parameters
- pvcNameTemplate - volumeNameTemplate - networkNameTemplate - preserveStaticIPs - targetNodeSelector - targetLabels - targetAffinity
1 parent 6bac9ea commit 9ac1864

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

ocp_resources/plan.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)