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 @@ + + + + + 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,