From cf64d251e079328b60d0c583e736ee21158d960b Mon Sep 17 00:00:00 2001 From: Mihaela Balutoiu Date: Mon, 28 Sep 2026 10:44:41 +0300 Subject: [PATCH 1/3] Group VMware worker export options under export mechanism The VMware source environment schema now groups the options of the `worker` export transfer mechanism under a `worker_options` object. Signed-off-by: Mihaela Balutoiu --- .../vmware_vsphere/OptionsSchemaPlugin.ts | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/plugins/vmware_vsphere/OptionsSchemaPlugin.ts b/src/plugins/vmware_vsphere/OptionsSchemaPlugin.ts index 74aa43e8f..1a54581d3 100644 --- a/src/plugins/vmware_vsphere/OptionsSchemaPlugin.ts +++ b/src/plugins/vmware_vsphere/OptionsSchemaPlugin.ts @@ -58,6 +58,31 @@ export default class OptionsSchemaParser extends OptionsSchemaPluginBase { ]; }); + const exportMechField = fields.find( + f => f.name === "export_transfer_mechanism", + ); + if (!exportMechField?.enum) { + return fields; + } + exportMechField.subFields = []; + exportMechField.enum.forEach((exportType: any) => { + const exportTypeFieldIdx = fields.findIndex( + f => f.name === `${exportType}_options`, + ); + if (exportTypeFieldIdx === -1) { + return; + } + const subField = fields[exportTypeFieldIdx]; + if (subField.properties?.length) { + subField.properties = subField.properties.map((p: Field) => ({ + ...p, + groupName: subField.name, + })); + } + exportMechField.subFields!.push(subField); + fields.splice(exportTypeFieldIdx, 1); + }); + return fields; } @@ -68,6 +93,13 @@ export default class OptionsSchemaParser extends OptionsSchemaPluginBase { requiresWindowsImage: boolean; }) { const { field, options, requiresWindowsImage } = opts; + if (field.name === "export_transfer_mechanism" && field.subFields) { + field.subFields.forEach(sf => { + sf.properties?.forEach(f => { + super.fillFieldValues({ field: f, options, requiresWindowsImage }); + }); + }); + } const option = options.find(f => f.name === field.name); if (!option) { From 89b98e7eab3e30abe6fab463b8fd4b496f463449 Mon Sep 17 00:00:00 2001 From: Mihaela Balutoiu Date: Mon, 28 Sep 2026 13:09:59 +0300 Subject: [PATCH 2/3] Fix grouping of already grouped `migr_` fields as worker options The grouped `worker_options` fields were also added to the `Temporary Migration Worker Options` group because of their `migr_` prefix, so they were displayed twice. Skip fields which already have a `groupName` when building that group. Signed-off-by: Mihaela Balutoiu --- .../modules/WizardModule/WizardOptions/WizardOptions.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx b/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx index ceef944d8..3aba85d6e 100644 --- a/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx +++ b/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx @@ -396,7 +396,7 @@ class WizardOptions extends React.Component { let groups: Array<{ fields: FieldRender[]; name?: string }> = [{ fields }]; const workerFields = fields.filter( - f => f.field.name.indexOf("migr_") === 0, + f => f.field.name.indexOf("migr_") === 0 && !f.field.groupName, ); if (workerFields.length > 1) { groups = [ From 76b16cf3eb14207e7ce9a84f75a32b1b525ed7a8 Mon Sep 17 00:00:00 2001 From: Mihaela Balutoiu Date: Mon, 28 Sep 2026 13:22:15 +0300 Subject: [PATCH 3/3] Fix option group names ignoring schema titles The group names were looked up without the dictionary key, so the schema titles were never found and the labels were generated from the field names instead. Signed-off-by: Mihaela Balutoiu --- .../modules/WizardModule/WizardOptions/WizardOptions.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx b/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx index 3aba85d6e..3a6cad632 100644 --- a/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx +++ b/src/components/modules/WizardModule/WizardOptions/WizardOptions.tsx @@ -594,7 +594,7 @@ class WizardOptions extends React.Component { - {LabelDictionary.get(g.name)} + {LabelDictionary.get(g.name, this.props.dictionaryKey)}