diff --git a/libs/i18n/locales/en/translation.json b/libs/i18n/locales/en/translation.json
index e6b0ee214..8666dcdc3 100644
--- a/libs/i18n/locales/en/translation.json
+++ b/libs/i18n/locales/en/translation.json
@@ -864,6 +864,8 @@
"Configuration mode": "Configuration mode",
"Form": "Form",
"Use Form for standard Linux VMs. Use YAML for advanced configurations such as Windows VMs or custom KubeVirt setups that require additional spec fields.": "Use Form for standard Linux VMs. Use YAML for advanced configurations such as Windows VMs or custom KubeVirt setups that require additional spec fields.",
+ "VM restart notice": "VM restart notice",
+ "Updating the VM configuration will restart existing virtual machine applications. Cloud-init user data and credentials are reapplied when the VM boots.": "Updating the VM configuration will restart existing virtual machine applications. Cloud-init user data and credentials are reapplied when the VM boots.",
"Advanced YAML configuration detected": "Advanced YAML configuration detected",
"This VM uses settings that are not supported in form view. YAML mode is selected to preserve the full configuration. Editing in form view may overwrite these custom settings.": "This VM uses settings that are not supported in form view. YAML mode is selected to preserve the full configuration. Editing in form view may overwrite these custom settings.",
"Disk image (OCI)": "Disk image (OCI)",
@@ -874,9 +876,9 @@
"Memory allocated to the VM using KubeVirt units. Examples: \"2Gi\", \"512Mi\", \"4294967296\".": "Memory allocated to the VM using KubeVirt units. Examples: \"2Gi\", \"512Mi\", \"4294967296\".",
"Provide a valid KubeVirt memory value (e.g., \"2Gi\", \"512Mi\", \"4294967296\").": "Provide a valid KubeVirt memory value (e.g., \"2Gi\", \"512Mi\", \"4294967296\").",
"Cloud-init user data": "Cloud-init user data",
- "Cloud-init user data in YAML format. Applied on first boot only. SSH key and password entries in this field are managed by the Credentials section below and may be overwritten when toggling those options.": "Cloud-init user data in YAML format. Applied on first boot only. SSH key and password entries in this field are managed by the Credentials section below and may be overwritten when toggling those options.",
+ "Cloud-init user data in YAML format. SSH key and password entries in this field are managed by the Credentials section below and may be overwritten when toggling those options.": "Cloud-init user data in YAML format. SSH key and password entries in this field are managed by the Credentials section below and may be overwritten when toggling those options.",
"Credentials": "Credentials",
- "Credentials are applied through cloud-init on first boot only. Changes here will take effect on newly created VMs but will not update VMs already running on existing devices. To update credentials on a running VM, access it directly through the console.": "Credentials are applied through cloud-init on first boot only. Changes here will take effect on newly created VMs but will not update VMs already running on existing devices. To update credentials on a running VM, access it directly through the console.",
+ "Credentials are written into the cloud-init user data above.": "Credentials are written into the cloud-init user data above.",
"SSH public key": "SSH public key",
"Add a public SSH key to enable direct SSH access to the application's VM. Requires publishing the SSH port to the host device.": "Add a public SSH key to enable direct SSH access to the application's VM. Requires publishing the SSH port to the host device.",
"Password": "Password",
diff --git a/libs/ui-components/src/components/Device/EditDeviceWizard/deviceSpecUtils.ts b/libs/ui-components/src/components/Device/EditDeviceWizard/deviceSpecUtils.ts
index e865213f3..bbc125a21 100644
--- a/libs/ui-components/src/components/Device/EditDeviceWizard/deviceSpecUtils.ts
+++ b/libs/ui-components/src/components/Device/EditDeviceWizard/deviceSpecUtils.ts
@@ -651,6 +651,7 @@ const createDefaultVmAppForm = (name: string = ''): VmAppForm => ({
specType: AppSpecType.INLINE,
name,
configMode: 'form',
+ isExisting: false,
hasAdvancedVmSettings: false,
vmYaml: '',
diskImage: '',
@@ -680,6 +681,7 @@ const toVmAppForm = (vmApp: VmApplication | undefined): VmAppForm => {
...defaults,
name: vmApp.name || '',
configMode,
+ isExisting: true,
hasAdvancedVmSettings: hasAdvanced,
vmYaml,
diskImage: parsed?.diskImage || defaults.diskImage,
diff --git a/libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationVmForm.tsx b/libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationVmForm.tsx
index e9cce7850..b97c60853 100644
--- a/libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationVmForm.tsx
+++ b/libs/ui-components/src/components/Device/EditDeviceWizard/steps/ApplicationVmForm.tsx
@@ -193,6 +193,14 @@ const ApplicationVmForm = ({ index, isReadOnly }: { index: number; isReadOnly?:
+ {app.isExisting && (
+
+ {t(
+ 'Updating the VM configuration will restart existing virtual machine applications. Cloud-init user data and credentials are reapplied when the VM boots.',
+ )}
+
+ )}
+
{app.configMode === 'yaml' && app.hasAdvancedVmSettings && (
{t(
@@ -257,16 +265,14 @@ const ApplicationVmForm = ({ index, isReadOnly }: { index: number; isReadOnly?:
minHeight="auto"
isDisabled={isReadOnly}
helperText={t(
- 'Cloud-init user data in YAML format. Applied on first boot only. SSH key and password entries in this field are managed by the Credentials section below and may be overwritten when toggling those options.',
+ 'Cloud-init user data in YAML format. SSH key and password entries in this field are managed by the Credentials section below and may be overwritten when toggling those options.',
)}
onChangeCustom={handleCloudInitCustom}
/>
- {t(
- 'Credentials are applied through cloud-init on first boot only. Changes here will take effect on newly created VMs but will not update VMs already running on existing devices. To update credentials on a running VM, access it directly through the console.',
- )}
+ {t('Credentials are written into the cloud-init user data above.')}