diff --git a/packages/web/projects/vgpu/api/poll.js b/packages/web/projects/vgpu/api/poll.js index d0e7238..99069fd 100644 --- a/packages/web/projects/vgpu/api/poll.js +++ b/packages/web/projects/vgpu/api/poll.js @@ -43,6 +43,14 @@ class pollApi { }); } + remove(data) { + return request({ + url: apiPrefix + '/v1/resource/pool/removeNode', + method: 'POST', + data, + }); + } + getDetailNodeList(data) { return { url: apiPrefix + '/v1/resource/pool/detail', diff --git a/packages/web/projects/vgpu/views/monitor/overview/getOptions.js b/packages/web/projects/vgpu/views/monitor/overview/getOptions.js index 54e6472..99289ac 100644 --- a/packages/web/projects/vgpu/views/monitor/overview/getOptions.js +++ b/packages/web/projects/vgpu/views/monitor/overview/getOptions.js @@ -2,6 +2,9 @@ import { timeParse } from '@/utils'; import { cloneDeep } from 'lodash'; import nodeApi from '~/vgpu/api/node'; import { ElMessage } from 'element-plus'; +import useParentAction from '~/vgpu/hooks/useParentAction'; + +const { sendRouteChange } = useParentAction(); export const getResourceStatus = (statusConfig) => { return { @@ -278,7 +281,7 @@ export const handleChartClick = async (params, router) => { if (node) { const uuid = node.uid; - router.push(`/admin/vgpu/node/admin/${uuid}?nodeName=${name}`); + sendRouteChange(`/admin/vgpu/node/admin/${uuid}?nodeName=${name}`); } else { ElMessage.error('节点未找到'); } diff --git a/packages/web/projects/vgpu/views/poll/admin/Detail.vue b/packages/web/projects/vgpu/views/poll/admin/Detail.vue index 511eba9..f54d5ac 100644 --- a/packages/web/projects/vgpu/views/poll/admin/Detail.vue +++ b/packages/web/projects/vgpu/views/poll/admin/Detail.vue @@ -172,11 +172,6 @@ const columns = [ dataIndex: 'diskSize', render: ({ diskSize }) => `${bytesToGB(diskSize)}GiB`, }, - { - title: '所属资源池', - dataIndex: 'resourcePools', - render: ({ resourcePools }) => `${resourcePools.join('、')}`, - }, { title: '显卡数量', dataIndex: 'cardCnt', @@ -221,57 +216,23 @@ const rowAction = [ }, }, { - title: '禁用', - hidden: (row) => !row.isSchedulable, + title: '移除', onClick: async (row) => { - ElMessageBox.confirm(`确认对该节点进行禁用操作?`, '操作确认', { + ElMessageBox.confirm(`确定要移除当前节点吗?`, '操作确认', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', }) .then(async () => { try { - await nodeApi.stop( + await pollApi.remove( { - nodeName: row.name, - status: 'DISABLED' + node_id: row.nodeId, } ).then( () => { setTimeout(() => { - ElMessage.success('节点禁用成功'); - table.value.fetchData(); - }, 500); - } - ) - } catch (error) { - ElMessage.error(error.message); - } - }) - .catch(() => { }); - }, - }, - { - title: '开启', - hidden: (row) => row.isSchedulable, - disabled: (row) => row.isExternal, - onClick: async (row) => { - ElMessageBox.confirm(`确认对该节点进行开启调度操作?`, '操作确认', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning', - }) - .then(async () => { - try { - await nodeApi.stop( - { - nodeName: row.name, - status: 'ENABLE' - } - ).then( - () => { - setTimeout(() => { - ElMessage.success('节点开启调度成功'); + ElMessage.success('节点移除成功'); table.value.fetchData(); }, 500); } @@ -523,7 +484,6 @@ onMounted(async () => {