diff --git a/packages/web/projects/vgpu/hooks/useParentAction.js b/packages/web/projects/vgpu/hooks/useParentAction.js
index dbd9828..4c3493e 100644
--- a/packages/web/projects/vgpu/hooks/useParentAction.js
+++ b/packages/web/projects/vgpu/hooks/useParentAction.js
@@ -3,20 +3,38 @@ import { useRouter } from 'vue-router';
export default function useParentAction() {
const router = useRouter();
- const sendRouteChange = (url) => {
+ const sendRouteChange = (url, type) => {
if (window.parent !== window) {
// 在 iframe 中,通知父窗口
- const message = {
+ let message = {
type: 'ChangeThePath',
- data: url
+ data: url,
};
+ if (type === 'open') {
+ message = {
+ type: 'OpenThePath',
+ data: url,
+ };
+ }
+ if (type === 'back') {
+ message = {
+ type: 'BackThePath',
+ data: url,
+ };
+ }
window.parent.postMessage(JSON.stringify(message), '*');
} else {
// 不在 iframe 中,直接使用 router 跳转
- router.push(url);
+ if (type === 'open') {
+ window.open(url);
+ } else if (type === 'back') {
+ router.go(-1);
+ } else {
+ router.push(url);
+ }
}
};
const hasParentWindow = window.parent !== window;
return { sendRouteChange, hasParentWindow };
-}
\ No newline at end of file
+}
diff --git a/packages/web/projects/vgpu/views/card/admin/index.vue b/packages/web/projects/vgpu/views/card/admin/index.vue
index bc61c0b..7d09183 100644
--- a/packages/web/projects/vgpu/views/card/admin/index.vue
+++ b/packages/web/projects/vgpu/views/card/admin/index.vue
@@ -33,6 +33,9 @@ import searchSchema from '~/vgpu/views/card/admin/searchSchema';
import PreviewBar from '~/vgpu/components/previewBar.vue';
import { defineProps, ref, watch } from 'vue';
import { roundToDecimal } from '@/utils';
+import useParentAction from '~/vgpu/hooks/useParentAction';
+
+const { sendRouteChange } = useParentAction();
const props = defineProps(['hideTitle', 'filters']);
@@ -41,9 +44,7 @@ const router = useRouter();
const tableRef = ref({});
const handleClick = (params) => {
- router.push({
- path: `/admin/vgpu/card/admin/${params.data.name}`,
- });
+ sendRouteChange(`/admin/vgpu/card/admin/${params.data.name}`);
};
const columns = [
@@ -76,6 +77,11 @@ const columns = [
title: '所属节点',
dataIndex: 'nodeName',
},
+ {
+ title: '所属资源池',
+ dataIndex: 'resourcePools',
+ render: ({ resourcePools }) => `${resourcePools.join('、')}`,
+ },
{
title: '显卡型号',
dataIndex: 'type',
@@ -114,9 +120,7 @@ const rowAction = [
{
title: '查看详情',
onClick: (row) => {
- router.push({
- path: `/admin/vgpu/card/admin/${row.uuid}`,
- });
+ sendRouteChange(`/admin/vgpu/card/admin/${row.uuid}`);
},
},
];
diff --git a/packages/web/projects/vgpu/views/monitor/overview/config.js b/packages/web/projects/vgpu/views/monitor/overview/config.js
index 5f078ec..6d292b7 100644
--- a/packages/web/projects/vgpu/views/monitor/overview/config.js
+++ b/packages/web/projects/vgpu/views/monitor/overview/config.js
@@ -106,7 +106,7 @@ export const rangeConfigInit = [
},
{
name: 'CPU',
- query: `sum(hami_container_cpu_allocated) / sum(hami_cpu_count) * 100`,
+ query: `sum(hami_container_vcore_allocated) / sum(hami_core_size) * 100`,
data: [],
type: 'line',
areaStyle: {
@@ -140,7 +140,7 @@ export const rangeConfigInit = [
},
{
name: '内存',
- query: `sum(hami_container_memory_allocated) / sum(hami_memory_capacity) * 100`,
+ query: `sum(hami_container_vmemory_allocated) / sum(hami_memory_size) * 100`,
data: [],
type: 'line',
areaStyle: {
@@ -245,7 +245,7 @@ export const rangeConfigInit = [
},
{
name: 'CPU',
- query: `sum(hami_container_cpu_allocated) / sum(hami_cpu_count) * 100`,
+ query: `100 * (1 - sum(irate(node_cpu_seconds_total{mode="idle"}[1m])) / count(node_cpu_seconds_total{mode="idle"}))`,
data: [],
type: 'line',
areaStyle: {
@@ -279,7 +279,7 @@ export const rangeConfigInit = [
},
{
name: '内存',
- query: `sum(hami_container_memory_allocated) / sum(hami_memory_capacity) * 100`,
+ query: `(1 - sum(node_memory_MemAvailable_bytes) / sum(node_memory_MemTotal_bytes)) * 100`,
data: [],
type: 'line',
areaStyle: {
diff --git a/packages/web/projects/vgpu/views/monitor/overview/index.vue b/packages/web/projects/vgpu/views/monitor/overview/index.vue
index e8d81ee..d25305d 100644
--- a/packages/web/projects/vgpu/views/monitor/overview/index.vue
+++ b/packages/web/projects/vgpu/views/monitor/overview/index.vue
@@ -416,18 +416,18 @@ const nodeTotalTop = {
key: 'used',
config: [
{
- tab: 'GPU',
- key: 'gpu',
- nameKey: 'node',
+ tab: 'CPU',
+ key: 'cpu',
+ nameKey: 'instance',
data: [],
- query: `topk(5, avg(hami_container_vgpu_allocated{}) by (node) / avg(hami_vgpu_count{}) by (node) * 100)`,
+ query: `topk(5, sum(hami_container_vcore_allocated) by (instance) / sum(hami_core_size) by (instance) * 100)`,
},
{
tab: '内存',
key: 'internal',
- nameKey: 'node',
+ nameKey: 'instance',
data: [],
- query: `topk(5, avg(hami_container_vgpu_allocated{}) by (node) / avg(hami_vgpu_count{}) by (node) * 100)`,
+ query: `topk(5, sum(hami_container_vmemory_allocated) by (instance) / sum(hami_memory_size) by (instance) * 100)`,
},
{
tab: 'vGPU',
diff --git a/packages/web/projects/vgpu/views/node/admin/Detail.vue b/packages/web/projects/vgpu/views/node/admin/Detail.vue
index 3c6f723..56b1f67 100644
--- a/packages/web/projects/vgpu/views/node/admin/Detail.vue
+++ b/packages/web/projects/vgpu/views/node/admin/Detail.vue
@@ -250,7 +250,7 @@ const gaugeConfig = useInstantVector(
percent: 0,
query: ``,
totalQuery: ``,
- percentQuery: `avg(sum(hami_container_memory_allocated{node=~"$node"}) by (instance) / sum(hami_memory_size{node=~"$node"}) by (instance) * 100)`,
+ percentQuery: `avg(sum(hami_container_vmemory_allocated{node=~"$node"}) by (instance) / sum(hami_memory_size{node=~"$node"}) by (instance) * 100)`,
total: 0,
used: 0,
unit: 'GiB',
diff --git a/packages/web/projects/vgpu/views/poll/admin/Detail.vue b/packages/web/projects/vgpu/views/poll/admin/Detail.vue
index fe90fd5..511eba9 100644
--- a/packages/web/projects/vgpu/views/poll/admin/Detail.vue
+++ b/packages/web/projects/vgpu/views/poll/admin/Detail.vue
@@ -393,7 +393,7 @@ const gaugeConfig = useInstantVector(
percent: 0,
query: ``,
totalQuery: ``,
- percentQuery: `avg(sum(hami_container_memory_allocated{node=~"$node"}) by (instance) / sum(hami_memory_size{node=~"$node"}) by (instance) * 100)`,
+ percentQuery: `avg(sum(hami_container_vmemory_allocated{node=~"$node"}) by (instance) / sum(hami_memory_size{node=~"$node"}) by (instance) * 100)`,
total: 0,
used: 0,
unit: 'GiB',
diff --git a/packages/web/projects/vgpu/views/poll/admin/index.vue b/packages/web/projects/vgpu/views/poll/admin/index.vue
index 56986c5..249d1ec 100644
--- a/packages/web/projects/vgpu/views/poll/admin/index.vue
+++ b/packages/web/projects/vgpu/views/poll/admin/index.vue
@@ -26,7 +26,7 @@
配置
- e.nodeIp); input = poolName"
type="text">编辑
handleDelete(poolId)" type="text">删除
diff --git a/packages/web/projects/vgpu/views/task/admin/index.vue b/packages/web/projects/vgpu/views/task/admin/index.vue
index ecb2fda..c15e1e4 100644
--- a/packages/web/projects/vgpu/views/task/admin/index.vue
+++ b/packages/web/projects/vgpu/views/task/admin/index.vue
@@ -1,44 +1,31 @@
-
+
-
+
-
+
diff --git a/packages/web/src/layout/index.vue b/packages/web/src/layout/index.vue
index 6558264..99eeec9 100644
--- a/packages/web/src/layout/index.vue
+++ b/packages/web/src/layout/index.vue
@@ -11,6 +11,7 @@ import '@tabler/core/dist/css/tabler.min.css';
import { AppMain, Sidebar, TopBar } from './components';
import { useRouter } from 'vue-router'
import useParentAction from '~/vgpu/hooks/useParentAction';
+import { parseUrl } from '@/utils';
export default {
@@ -48,9 +49,13 @@ export default {
try {
const messageData = JSON.parse(event.data);
if (messageData.type === "ChangeTheRoute") {
- this.router.push({
- path: messageData.data,
- });
+ // const { pathname, query } = parseUrl(messageData.data)
+ // console.log(messageData.data, 'messageData.data')
+ // this.router.push({
+ // path: pathname,
+ // query
+ // });
+ this.router.replace(messageData.data)
}
} catch (e) { }
},
diff --git a/packages/web/src/utils/index.js b/packages/web/src/utils/index.js
index 7754096..544f532 100644
--- a/packages/web/src/utils/index.js
+++ b/packages/web/src/utils/index.js
@@ -571,3 +571,17 @@ export const clearEdges = (items) =>
export const bytesToGB = (bytes) => {
return Math.round(bytes / (1024 * 1024 * 1024));
}
+
+export function parseUrl(url) {
+ const [pathname, queryString] = url.split('?');
+ const query = {};
+
+ if (queryString) {
+ queryString.split('&').forEach(pair => {
+ const [key, value] = pair.split('=');
+ query[decodeURIComponent(key)] = decodeURIComponent(value || '');
+ });
+ }
+
+ return { pathname, query };
+}