Merge "feat: Add volume bootable action"

This commit is contained in:
Zuul 2021-11-01 08:07:40 +00:00 committed by Gerrit Code Review
commit 8f5931dea7
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 ",
"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",

View File

@ -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": "无限制",

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 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,
},

View File

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