Skip to content

Commit da344ee

Browse files
redhat-qe-botkrcmarikmyakove
authored
Plan: Add a few missing parameters (#2545) (#2651)
- pvcNameTemplate - volumeNameTemplate - networkNameTemplate - preserveStaticIPs - targetNodeSelector - targetLabels - targetAffinity Co-authored-by: Marián Krčmárik <mkrcmari@redhat.com> Co-authored-by: Meni Yakove <441263+myakove@users.noreply.github.com>
1 parent 38463f1 commit da344ee

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

ocp_resources/plan.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,22 @@ class Plan(NamespacedResource):
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.
2525
pvc_name_template (str, optional): Template for generating PVC names.
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.
2628
skip_guest_conversion (bool, optional): Whether to skip guest conversion.
2729
target_power_state (str, optional): Specifies the desired power state of the target VM after migration.
2830
- "on": Target VM will be powered on after migration
2931
- "off": Target VM will be powered off after migration
3032
- "auto" or None (default): Target VM will match the source VM's power state
3133
use_compatibility_mode (bool, optional): Whether to use compatibility mode.
3234
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.
3342
"""
3443

3544
api_group = NamespacedResource.ApiGroup.FORKLIFT_KONVEYOR_IO
@@ -54,10 +63,16 @@ def __init__(
5463
type: str | None = None,
5564
pvc_name_template_use_generate_name: bool | None = None,
5665
pvc_name_template: str | None = None,
66+
volume_name_template: str | None = None,
67+
network_name_template: str | None = None,
5768
skip_guest_conversion: bool | None = None,
5869
target_power_state: str | None = None,
5970
use_compatibility_mode: bool | None = None,
6071
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,
6176
**kwargs: Any,
6277
) -> None:
6378
super().__init__(**kwargs)
@@ -80,10 +95,16 @@ def __init__(
8095
self.type = type
8196
self.pvc_name_template_use_generate_name = pvc_name_template_use_generate_name
8297
self.pvc_name_template = pvc_name_template
98+
self.volume_name_template = volume_name_template
99+
self.network_name_template = network_name_template
83100
self.skip_guest_conversion = skip_guest_conversion
84101
self.target_power_state = target_power_state
85102
self.use_compatibility_mode = use_compatibility_mode
86103
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
87108

88109
if self.pre_hook_name and self.pre_hook_namespace:
89110
self.hooks_array.append(
@@ -150,6 +171,12 @@ def to_dict(self) -> None:
150171
if self.pvc_name_template is not None:
151172
spec["pvcNameTemplate"] = self.pvc_name_template
152173

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+
153180
if self.skip_guest_conversion is not None:
154181
spec["skipGuestConversion"] = self.skip_guest_conversion
155182

@@ -162,6 +189,18 @@ def to_dict(self) -> None:
162189
if self.migrate_shared_disks is not None:
163190
spec["migrateSharedDisks"] = self.migrate_shared_disks
164191

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+
165204
def _generate_hook_spec(self, hook_name: str, hook_namespace: str, hook_type: str) -> dict[str, Any]:
166205
return {
167206
"hook": {

0 commit comments

Comments
 (0)