Skip to content

Commit 3365cd6

Browse files
authored
Plan: Add pvc_name_template parameter support (#2547)
Add support for the pvcNameTemplate field in the Plan resource, which allows customization of PVC names during VM migrations. The pvcNameTemplate field enables users to define custom naming patterns for Persistent Volume Claims using Go template syntax. This is especially important for copy-offload migrations where the volume populator framework requires explicit PVC naming templates. Changes: - Add pvc_name_template parameter to Plan.__init__() - Store pvc_name_template as instance variable - Add pvcNameTemplate to Plan spec in to_dict() - Update docstring with parameter documentation The template supports variables like: - .VmName: source VM name - .TargetVmName: target VM name - .DiskIndex: disk index - .PlanName: plan name Example usage: plan = Plan( ... pvc_name_template="{{.TargetVmName}}-disk-{{.DiskIndex}}", pvc_name_template_use_generate_name=False, ) This feature is part of the Forklift Plan API and works with both standard and copy-offload migrations. Signed-off-by: smiron <smiron@redhat.com>
1 parent 6bac9ea commit 3365cd6

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

ocp_resources/plan.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ 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 for generating PVC names.
2526
skip_guest_conversion (bool, optional): Whether to skip guest conversion.
2627
target_power_state (str, optional): Specifies the desired power state of the target VM after migration.
2728
- "on": Target VM will be powered on after migration
@@ -52,6 +53,7 @@ def __init__(
5253
after_hook_namespace: str | None = None,
5354
type: str | None = None,
5455
pvc_name_template_use_generate_name: bool | None = None,
56+
pvc_name_template: str | None = None,
5557
skip_guest_conversion: bool | None = None,
5658
target_power_state: str | None = None,
5759
use_compatibility_mode: bool | None = None,
@@ -77,6 +79,7 @@ def __init__(
7779
self.hooks_array = []
7880
self.type = type
7981
self.pvc_name_template_use_generate_name = pvc_name_template_use_generate_name
82+
self.pvc_name_template = pvc_name_template
8083
self.skip_guest_conversion = skip_guest_conversion
8184
self.target_power_state = target_power_state
8285
self.use_compatibility_mode = use_compatibility_mode
@@ -144,6 +147,9 @@ def to_dict(self) -> None:
144147
if self.pvc_name_template_use_generate_name is not None:
145148
spec["pvcNameTemplateUseGenerateName"] = self.pvc_name_template_use_generate_name
146149

150+
if self.pvc_name_template is not None:
151+
spec["pvcNameTemplate"] = self.pvc_name_template
152+
147153
if self.skip_guest_conversion is not None:
148154
spec["skipGuestConversion"] = self.skip_guest_conversion
149155

0 commit comments

Comments
 (0)