feat: Add volume bootable action

add volume bootable action

Change-Id: I3b5e742a75fa5a48634a01d74f2610480e4ada1d
This commit is contained in:
zhuyue 2021-10-29 16:50:34 +08:00 committed by zhu yue
parent f7e4b18413
commit 80c257255c
5 changed files with 71 additions and 0 deletions

View File

@ -1637,6 +1637,7 @@
"Unable to {title}, please go back to ": "Unable to {title}, please go back to ", "Unable to {title}, please go back to ": "Unable to {title}, please go back to ",
"Unattached": "Unattached", "Unattached": "Unattached",
"Unavailable": "Unavailable", "Unavailable": "Unavailable",
"Unbootable": "Unbootable",
"Unknown": "Unknown", "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.", "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", "Unlimit": "Unlimit",

View File

@ -1637,6 +1637,7 @@
"Unable to {title}, please go back to ": "无法{title},请访问", "Unable to {title}, please go back to ": "无法{title},请访问",
"Unattached": "未挂载", "Unattached": "未挂载",
"Unavailable": "不可用", "Unavailable": "不可用",
"Unbootable": "不可启动",
"Unknown": "未知", "Unknown": "未知",
"Unless you know clearly which AZ to create the volume in, you don not need to fill in here.": "除非很明确知道应该在哪个 AZ 中创建 Volume否则此处不用填", "Unless you know clearly which AZ to create the volume in, you don not need to fill in here.": "除非很明确知道应该在哪个 AZ 中创建 Volume否则此处不用填",
"Unlimit": "无限制", "Unlimit": "无限制",

View File

@ -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,
},
];
}
}

View File

@ -30,6 +30,7 @@ import AcceptVolumeTransfer from './AcceptVolumeTransfer';
import CreateTransfer from './CreateTransfer'; import CreateTransfer from './CreateTransfer';
import CancelTransfer from './CancelTransfer'; import CancelTransfer from './CancelTransfer';
import CreateInstance from './CreateInstance'; import CreateInstance from './CreateInstance';
import Bootable from './Bootable';
const actionConfigs = { const actionConfigs = {
rowActions: { rowActions: {
@ -38,6 +39,9 @@ const actionConfigs = {
{ {
action: Edit, action: Edit,
}, },
{
action: Bootable,
},
{ {
action: CreateInstance, action: CreateInstance,
}, },

View File

@ -165,6 +165,11 @@ export class VolumeStore extends Base {
return this.operation(id, data, 'os-reset_status'); return this.operation(id, data, 'os-reset_status');
} }
@action
changeBootable(id, data) {
return this.operation(id, data, 'os-set_bootable');
}
@action @action
update(id, data) { update(id, data) {
const body = { [this.responseKey]: data }; const body = { [this.responseKey]: data };