diff --git a/pkg/harvester/dialog/HarvesterStorageMigrationDialog.vue b/pkg/harvester/dialog/HarvesterStorageMigrationDialog.vue
new file mode 100644
index 00000000..4c679ecb
--- /dev/null
+++ b/pkg/harvester/dialog/HarvesterStorageMigrationDialog.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+ {{ t('harvester.modal.storageMigration.title') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pkg/harvester/l10n/en-us.yaml b/pkg/harvester/l10n/en-us.yaml
index 04f847b4..cb16baa3 100644
--- a/pkg/harvester/l10n/en-us.yaml
+++ b/pkg/harvester/l10n/en-us.yaml
@@ -123,6 +123,15 @@ harvester:
namespace: Namespace
message:
success: 'Image { name } created successfully.'
+ storageMigration:
+ title: Storage Migration
+ fields:
+ sourceVolume:
+ label: Source Volume
+ placeholder: Select a source volume
+ targetVolume:
+ label: Target Volume
+ placeholder: Select a target volume
migration:
failedMessage: Latest migration failed!
title: Migration
@@ -232,6 +241,8 @@ harvester:
migrate: Migrate
cpuAndMemoryHotplug: Edit CPU and Memory
abortMigration: Abort Migration
+ storageMigration: Storage Migration
+ cancelStorageMigration: Cancel Storage Migration
createTemplate: Generate Template
enableMaintenance: Enable Maintenance Mode
disableMaintenance: Disable Maintenance Mode
diff --git a/pkg/harvester/models/kubevirt.io.virtualmachine.js b/pkg/harvester/models/kubevirt.io.virtualmachine.js
index c31f5a90..a4795a92 100644
--- a/pkg/harvester/models/kubevirt.io.virtualmachine.js
+++ b/pkg/harvester/models/kubevirt.io.virtualmachine.js
@@ -199,6 +199,18 @@ export default class VirtVm extends HarvesterResource {
icon: 'icon icon-close',
label: this.t('harvester.action.abortMigration')
},
+ {
+ action: 'storageMigration',
+ enabled: !!this.actions?.storageMigration,
+ icon: 'icon icon-copy',
+ label: this.t('harvester.action.storageMigration')
+ },
+ {
+ action: 'cancelStorageMigration',
+ enabled: !!this.actions?.cancelStorageMigration,
+ icon: 'icon icon-close',
+ label: this.t('harvester.action.cancelStorageMigration')
+ },
{
action: 'addHotplugVolume',
enabled: !!this.actions?.addVolume,
@@ -368,6 +380,13 @@ export default class VirtVm extends HarvesterResource {
});
}
+ storageMigration(resources = this) {
+ this.$dispatch('promptModal', {
+ resources,
+ component: 'HarvesterStorageMigrationDialog'
+ });
+ }
+
backupVM(resources = this) {
this.$dispatch('promptModal', {
resources,
@@ -520,6 +539,10 @@ export default class VirtVm extends HarvesterResource {
this.doActionGrowl('abortMigration', {});
}
+ cancelStorageMigration() {
+ this.doActionGrowl('cancelStorageMigration', {});
+ }
+
createTemplate(resources = this) {
this.$dispatch('promptModal', {
resources,