From 639bcedd7d3e93808aef93c84a87c32378205a3f Mon Sep 17 00:00:00 2001 From: Elly Murillo Date: Mon, 20 Nov 2023 16:57:16 +0800 Subject: [PATCH] feat: Allow deletion of Volume on Instance Delete setting This feature allows the user to check whether the selected Volume should be deleted along with the instance when the user selected the Bootable Volume Start Source via Instance creation module. Change-Id: Ib7e7da84de8e884e2cec65fa9747f04551e2de96 --- ...eletion-on-instance-delete-9a83da6ca4fd2107.yaml | 6 ++++++ src/locales/en.json | 1 + src/locales/ko-kr.json | 1 + src/locales/zh-hans.json | 1 + .../Instance/actions/StepCreate/BaseStep/index.jsx | 6 ++++++ .../actions/StepCreate/ConfirmStep/index.jsx | 13 +++++++++++++ .../Instance/actions/StepCreate/index.jsx | 2 ++ 7 files changed, 30 insertions(+) create mode 100644 releasenotes/notes/feat-volume-deletion-on-instance-delete-9a83da6ca4fd2107.yaml diff --git a/releasenotes/notes/feat-volume-deletion-on-instance-delete-9a83da6ca4fd2107.yaml b/releasenotes/notes/feat-volume-deletion-on-instance-delete-9a83da6ca4fd2107.yaml new file mode 100644 index 00000000..df4d524c --- /dev/null +++ b/releasenotes/notes/feat-volume-deletion-on-instance-delete-9a83da6ca4fd2107.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Allow deletion of Volume on Instance Delete setting + + * Allows the user to check whether the selected Volume should be deleted along with the instance when the user selected the Bootable Volume Start Source via Instance creation module. diff --git a/src/locales/en.json b/src/locales/en.json index 5a0dedab..6810a63a 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -744,6 +744,7 @@ "Delete Volume Backup": "Delete Volume Backup", "Delete Volume Snapshot": "Delete Volume Snapshot", "Delete Volume Type": "Delete Volume Type", + "Delete Volume on Instance Delete": "Delete Volume on Instance Delete", "Delete Zone": "Delete Zone", "Delete metadata": "Delete metadata", "Deleted": "Deleted", diff --git a/src/locales/ko-kr.json b/src/locales/ko-kr.json index f6149edb..ca4a239e 100644 --- a/src/locales/ko-kr.json +++ b/src/locales/ko-kr.json @@ -744,6 +744,7 @@ "Delete Volume Backup": "Volume Backup 삭제", "Delete Volume Snapshot": "Volume Snapshot 삭제", "Delete Volume Type": "Volume Type 삭제", + "Delete Volume on Instance Delete": "인스턴스 삭제 시 볼륨 삭제", "Delete Zone": "Zone 삭제", "Delete metadata": "Metadata 삭제", "Deleted": "삭제됨", diff --git a/src/locales/zh-hans.json b/src/locales/zh-hans.json index 3e5e6236..5ccc5793 100644 --- a/src/locales/zh-hans.json +++ b/src/locales/zh-hans.json @@ -744,6 +744,7 @@ "Delete Volume Backup": "删除云硬盘备份", "Delete Volume Snapshot": "删除云硬盘快照", "Delete Volume Type": "删除云硬盘类型", + "Delete Volume on Instance Delete": "在实例删除时删除卷", "Delete Zone": "删除区域", "Delete metadata": "删除元数据", "Deleted": "已删除", diff --git a/src/pages/compute/containers/Instance/actions/StepCreate/BaseStep/index.jsx b/src/pages/compute/containers/Instance/actions/StepCreate/BaseStep/index.jsx index cbc06e40..0ff9eb0c 100644 --- a/src/pages/compute/containers/Instance/actions/StepCreate/BaseStep/index.jsx +++ b/src/pages/compute/containers/Instance/actions/StepCreate/BaseStep/index.jsx @@ -802,6 +802,12 @@ export class BaseStep extends Base { onChange: this.onSystemDiskChange, dependencies: ['flavor', 'image', 'instanceSnapshot', 'bootFromVolume'], }, + { + name: 'deleteVolumeInstance', + label: 'Delete Volume on Instance Delete', + type: 'check', + hidden: !this.sourceTypeIsVolume, + }, { name: 'instanceSnapshotDisk', label: t('System Disk'), diff --git a/src/pages/compute/containers/Instance/actions/StepCreate/ConfirmStep/index.jsx b/src/pages/compute/containers/Instance/actions/StepCreate/ConfirmStep/index.jsx index ec5924fc..a45c85b0 100644 --- a/src/pages/compute/containers/Instance/actions/StepCreate/ConfirmStep/index.jsx +++ b/src/pages/compute/containers/Instance/actions/StepCreate/ConfirmStep/index.jsx @@ -50,6 +50,11 @@ export class ConfirmStep extends Base { return `${volume_type} ${size}GiB`; } + getDeleteVolumeInstance() { + const { deleteVolumeInstance } = this.props?.context; + return deleteVolumeInstance ? t('Yes') : t('No'); + } + getSystemDisk() { if (!this.enableCinder) return null; const { context } = this.props; @@ -218,6 +223,11 @@ export class ConfirmStep extends Base { label: t('System Disk'), value: this.getSystemDisk(), }, + { + label: t('Delete Volume on Instance Delete'), + value: this.getDeleteVolumeInstance(), + key: 'deleteVolume', + }, { label: t('Available Zone'), value: context.availableZone.label, @@ -245,6 +255,9 @@ export class ConfirmStep extends Base { (it) => ![t('System Disk'), t('Data Disk')].includes(it.label) ); } + if (context.source.value.toUpperCase() !== 'BOOTABLEVOLUME') { + baseItems = baseItems.filter((it) => it?.key !== 'deleteVolume'); + } return [ { name: 'confirm-count', diff --git a/src/pages/compute/containers/Instance/actions/StepCreate/index.jsx b/src/pages/compute/containers/Instance/actions/StepCreate/index.jsx index ad84dedb..4fa4c512 100644 --- a/src/pages/compute/containers/Instance/actions/StepCreate/index.jsx +++ b/src/pages/compute/containers/Instance/actions/StepCreate/index.jsx @@ -579,6 +579,7 @@ export class StepCreate extends StepAction { source, systemDisk, bootFromVolume = true, + deleteVolumeInstance, } = values; const { value: sourceValue } = source; const imageRef = @@ -619,6 +620,7 @@ export class StepCreate extends StepAction { uuid: bootableVolume.selectedRowKeys[0], source_type: 'volume', destination_type: 'volume', + delete_on_termination: deleteVolumeInstance, }; } const dataVolumes = dataDisk