fix: Fix attach & detach iso volume permission

1. Instance can attach iso volume if status is shutoff and it is not ironic
2. Instance can detach iso volume if status is shutoff

Change-Id: I54a2f6c3e1062231992d5926b34a955141963c89
This commit is contained in:
xusongfu 2021-08-24 08:54:22 +08:00
parent 66cd6d5a45
commit caf0429302
2 changed files with 12 additions and 11 deletions

View File

@ -16,10 +16,10 @@ import { inject, observer } from 'mobx-react';
import globalServerStore from 'stores/nova/instance'; import globalServerStore from 'stores/nova/instance';
import { ModalAction } from 'containers/Action'; import { ModalAction } from 'containers/Action';
import { import {
isActive, isShutOff,
isNotDeleting, isNotDeleting,
isNotLocked, isNotLocked,
isBuilding, isIronicInstance,
} from 'resources/instance'; } from 'resources/instance';
import { multiTip } from 'resources/volume'; import { multiTip } from 'resources/volume';
import { get as _get } from 'lodash'; import { get as _get } from 'lodash';
@ -75,8 +75,8 @@ export default class AttachIsoVolume extends ModalAction {
!isAdminPage && !isAdminPage &&
isNotDeleting(item) && isNotDeleting(item) &&
isNotLocked(item) && isNotLocked(item) &&
!isActive(item) && !isIronicInstance(item) &&
!isBuilding(item) isShutOff(item)
); );
}; };

View File

@ -18,11 +18,10 @@ import globalServerStore from 'stores/nova/instance';
import { ModalAction } from 'containers/Action'; import { ModalAction } from 'containers/Action';
import { volumeStatus, isOsDisk, isAttachIsoVolume } from 'resources/volume'; import { volumeStatus, isOsDisk, isAttachIsoVolume } from 'resources/volume';
import { import {
isActive, isShutOff,
isNotLocked, isNotLocked,
isNotDeleting, isNotDeleting,
isIronicInstance, isIronicInstance,
isBuilding,
} from 'resources/instance'; } from 'resources/instance';
@inject('rootStore') @inject('rootStore')
@ -74,14 +73,16 @@ export default class DetachIsoVolume extends ModalAction {
// static hasDataVolume = item => item.volumes_attached && item.volumes_attached.length > 1 // static hasDataVolume = item => item.volumes_attached && item.volumes_attached.length > 1
// static allowed = item => Promise.resolve(isActive(item) && isNotDeleting(item) && isNotLocked(item) && this.hasDataVolume(item)) // static allowed = item => Promise.resolve(isActive(item) && isNotDeleting(item) && isNotLocked(item) && this.hasDataVolume(item))
static allowed = (item) => static allowed = (item, containerProps) => {
Promise.resolve( const { isAdminPage } = containerProps;
return Promise.resolve(
!isAdminPage &&
isNotDeleting(item) && isNotDeleting(item) &&
isNotLocked(item) && isNotLocked(item) &&
!isIronicInstance(item) && !isIronicInstance(item) &&
!isActive(item) && isShutOff(item)
!isBuilding(item)
); );
};
get formItems() { get formItems() {
return [ return [