From 80c257255c5b70f3faf205c0c6aad2a4a0228bf0 Mon Sep 17 00:00:00 2001 From: zhuyue Date: Fri, 29 Oct 2021 16:50:34 +0800 Subject: [PATCH] feat: Add volume bootable action add volume bootable action Change-Id: I3b5e742a75fa5a48634a01d74f2610480e4ada1d --- src/locales/en.json | 1 + src/locales/zh.json | 1 + .../containers/Volume/actions/Bootable.jsx | 60 +++++++++++++++++++ .../containers/Volume/actions/index.jsx | 4 ++ src/stores/cinder/volume.js | 5 ++ 5 files changed, 71 insertions(+) create mode 100644 src/pages/storage/containers/Volume/actions/Bootable.jsx diff --git a/src/locales/en.json b/src/locales/en.json index 925b4f88..e959a4d9 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1637,6 +1637,7 @@ "Unable to {title}, please go back to ": "Unable to {title}, please go back to ", "Unattached": "Unattached", "Unavailable": "Unavailable", + "Unbootable": "Unbootable", "Unknown": "Unknown", "Unless you know clearly which AZ to create the volume in, you don not need to fill in here.": "Unless you know clearly which AZ to create the volume in, you don not need to fill in here.", "Unlimit": "Unlimit", diff --git a/src/locales/zh.json b/src/locales/zh.json index dc5ecf8d..eba79604 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -1637,6 +1637,7 @@ "Unable to {title}, please go back to ": "无法{title},请访问", "Unattached": "未挂载", "Unavailable": "不可用", + "Unbootable": "不可启动", "Unknown": "未知", "Unless you know clearly which AZ to create the volume in, you don not need to fill in here.": "除非很明确知道应该在哪个 AZ 中创建 Volume,否则此处不用填", "Unlimit": "无限制", diff --git a/src/pages/storage/containers/Volume/actions/Bootable.jsx b/src/pages/storage/containers/Volume/actions/Bootable.jsx new file mode 100644 index 00000000..c25242fa --- /dev/null +++ b/src/pages/storage/containers/Volume/actions/Bootable.jsx @@ -0,0 +1,60 @@ +// Copyright 2021 99cloud +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { inject, observer } from 'mobx-react'; +import { ModalAction } from 'containers/Action'; +import globalVolumeStore from '@/stores/cinder/volume'; + +@inject('rootStore') +@observer +export default class Bootable extends ModalAction { + static id = 'volume-bootable'; + + static title = t('Bootable'); + + static buttonText = t('Bootable'); + + static policy = 'volume:update'; + + static allowed() { + return Promise.resolve(true); + } + + get defaultValue() { + const { item } = this.props; + return { + bootable: item.bootable === 'true', + }; + } + + onSubmit = ({ bootable }) => { + const { id } = this.item; + return globalVolumeStore.changeBootable(id, { + bootable, + }); + }; + + get formItems() { + return [ + { + name: 'bootable', + label: t('Bootable'), + checkedText: t('Bootable'), + uncheckedText: t('Unbootable'), + type: 'switch', + required: true, + }, + ]; + } +} diff --git a/src/pages/storage/containers/Volume/actions/index.jsx b/src/pages/storage/containers/Volume/actions/index.jsx index 9ebd207c..f73a03f7 100644 --- a/src/pages/storage/containers/Volume/actions/index.jsx +++ b/src/pages/storage/containers/Volume/actions/index.jsx @@ -30,6 +30,7 @@ import AcceptVolumeTransfer from './AcceptVolumeTransfer'; import CreateTransfer from './CreateTransfer'; import CancelTransfer from './CancelTransfer'; import CreateInstance from './CreateInstance'; +import Bootable from './Bootable'; const actionConfigs = { rowActions: { @@ -38,6 +39,9 @@ const actionConfigs = { { action: Edit, }, + { + action: Bootable, + }, { action: CreateInstance, }, diff --git a/src/stores/cinder/volume.js b/src/stores/cinder/volume.js index 3e5e4c40..3f3e3929 100644 --- a/src/stores/cinder/volume.js +++ b/src/stores/cinder/volume.js @@ -165,6 +165,11 @@ export class VolumeStore extends Base { return this.operation(id, data, 'os-reset_status'); } + @action + changeBootable(id, data) { + return this.operation(id, data, 'os-set_bootable'); + } + @action update(id, data) { const body = { [this.responseKey]: data };