diff --git a/src/pages/network/containers/VirtualAdapter/actions/Attach.jsx b/src/pages/network/containers/VirtualAdapter/actions/Attach.jsx index 98695c79..ec077773 100644 --- a/src/pages/network/containers/VirtualAdapter/actions/Attach.jsx +++ b/src/pages/network/containers/VirtualAdapter/actions/Attach.jsx @@ -15,7 +15,10 @@ import { inject, observer } from 'mobx-react'; import { ModalAction } from 'containers/Action'; import globalServerStore, { ServerStore } from 'stores/nova/instance'; -import { instanceSelectTablePropsBackend } from 'resources/instance'; +import { + instanceSelectTablePropsBackend, + allowAttachInterfaceStatus, +} from 'resources/instance'; @inject('rootStore') @observer @@ -85,6 +88,8 @@ export default class Attach extends ModalAction { type: 'select-table', backendPageStore: this.store, extraParams: { noReminder: true }, + disabledFunc: (item) => + item.locked || !allowAttachInterfaceStatus.includes(item.vm_state), required: true, isMulti: false, ...instanceSelectTablePropsBackend, diff --git a/src/resources/instance.jsx b/src/resources/instance.jsx index 5a1127e7..a58dbca9 100644 --- a/src/resources/instance.jsx +++ b/src/resources/instance.jsx @@ -574,3 +574,5 @@ export const actionColumn = (self) => { }, ]; }; + +export const allowAttachInterfaceStatus = ['active', 'paused', 'stopped'];