@dao-style/biz 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/gpu/style/assign-gpu-devices-list.js +1 -0
- package/dist/cjs/components/gpu/style/gpu-form.js +1 -0
- package/dist/components/form-block/FormBlock.d.ts +27 -1
- package/dist/components/form-block/props.d.ts +4 -0
- package/dist/components/form-block/props.js +4 -0
- package/dist/components/form-block/props.mjs +4 -0
- package/dist/components/form-block/src/FormBlock.vue.d.ts +11 -0
- package/dist/components/form-block/src/FormBlock.vue.js +4 -4
- package/dist/components/form-block/src/FormBlock.vue.mjs +4 -4
- package/dist/components/form-block/src/FormBlock.vue2.js +12 -1
- package/dist/components/form-block/src/FormBlock.vue2.mjs +12 -1
- package/dist/components/gpu/props.d.ts +121 -3
- package/dist/components/gpu/props.js +82 -9
- package/dist/components/gpu/props.mjs +82 -9
- package/dist/components/gpu/src/GpuForm.vue.d.ts +283 -50
- package/dist/components/gpu/src/GpuForm.vue.js +25 -24
- package/dist/components/gpu/src/GpuForm.vue.mjs +26 -25
- package/dist/components/gpu/src/GpuForm.vue2.js +115 -218
- package/dist/components/gpu/src/GpuForm.vue2.mjs +116 -219
- package/dist/components/gpu/src/components/AssignGpuDevicesList.vue.d.ts +77 -0
- package/dist/components/gpu/src/components/AssignGpuDevicesList.vue.js +40 -0
- package/dist/components/gpu/src/components/AssignGpuDevicesList.vue.mjs +41 -0
- package/dist/components/gpu/src/components/AssignGpuDevicesList.vue2.js +191 -0
- package/dist/components/gpu/src/components/AssignGpuDevicesList.vue2.mjs +192 -0
- package/dist/components/gpu/src/components/GpuAdvancedForm.vue.d.ts +180 -0
- package/dist/components/gpu/src/{GpuAdvancedForm.vue.js → components/GpuAdvancedForm.vue.js} +92 -37
- package/dist/components/gpu/src/{GpuAdvancedForm.vue.mjs → components/GpuAdvancedForm.vue.mjs} +93 -38
- package/dist/components/gpu/src/components/GpuAdvancedForm.vue2.js +169 -0
- package/dist/components/gpu/src/components/GpuAdvancedForm.vue2.mjs +153 -0
- package/dist/components/gpu/src/{GpuFormDynamicItem.vue.d.ts → components/GpuFormDynamicItem.vue.d.ts} +4 -4
- package/dist/components/gpu/src/{GpuFormDynamicItem.vue.js → components/GpuFormDynamicItem.vue.js} +1 -1
- package/dist/components/gpu/src/{GpuFormDynamicItem.vue.mjs → components/GpuFormDynamicItem.vue.mjs} +1 -1
- package/dist/components/gpu/src/{GpuFormDynamicItem.vue2.js → components/GpuFormDynamicItem.vue2.js} +1 -1
- package/dist/components/gpu/src/{GpuFormDynamicItem.vue2.mjs → components/GpuFormDynamicItem.vue2.mjs} +1 -1
- package/dist/components/gpu/src/components/GpuFormItem.vue.d.ts +310 -0
- package/dist/components/gpu/src/{GpuFormItem.vue.js → components/GpuFormItem.vue.js} +22 -26
- package/dist/components/gpu/src/{GpuFormItem.vue.mjs → components/GpuFormItem.vue.mjs} +23 -27
- package/dist/components/gpu/src/components/GpuFormItem.vue2.js +61 -0
- package/dist/components/gpu/src/components/GpuFormItem.vue2.mjs +45 -0
- package/dist/components/gpu/src/{GpuResources.vue.d.ts → components/GpuResources.vue.d.ts} +38 -18
- package/dist/components/gpu/src/components/GpuResources.vue.js +153 -0
- package/dist/components/gpu/src/components/GpuResources.vue.mjs +154 -0
- package/dist/components/gpu/src/components/GpuResources.vue2.js +278 -0
- package/dist/components/gpu/src/components/GpuResources.vue2.mjs +262 -0
- package/dist/components/gpu/src/gpuForm.constants.d.ts +3 -0
- package/dist/components/gpu/src/gpuForm.constants.js +10 -0
- package/dist/components/gpu/src/gpuForm.constants.mjs +10 -0
- package/dist/components/gpu/src/gpuForm.internal-types.d.ts +49 -0
- package/dist/components/gpu/src/gpuForm.mapper.d.ts +16 -0
- package/dist/components/gpu/src/gpuForm.mapper.js +199 -0
- package/dist/components/gpu/src/gpuForm.mapper.mjs +199 -0
- package/dist/components/gpu/src/gpuFormItem.mapper.d.ts +38 -0
- package/dist/components/gpu/src/gpuFormItem.mapper.js +153 -0
- package/dist/components/gpu/src/gpuFormItem.mapper.mjs +153 -0
- package/dist/components/gpu/src/useGPUOptions.d.ts +2 -2
- package/dist/components/gpu/src/useGPUOptions.js +15 -20
- package/dist/components/gpu/src/useGPUOptions.mjs +16 -21
- package/dist/components/gpu/src/useGpuFormItemState.d.ts +42 -0
- package/dist/components/gpu/src/useGpuFormItemState.js +178 -0
- package/dist/components/gpu/src/useGpuFormItemState.mjs +178 -0
- package/dist/components/gpu/src/useGpuFormSideState.d.ts +52 -0
- package/dist/components/gpu/src/useGpuFormSideState.js +71 -0
- package/dist/components/gpu/src/useGpuFormSideState.mjs +71 -0
- package/dist/components/gpu/src/useGpuFormState.d.ts +560 -0
- package/dist/components/gpu/src/useGpuFormState.js +52 -0
- package/dist/components/gpu/src/useGpuFormState.mjs +52 -0
- package/dist/components/gpu/src/validations/nvidiaVgpuMemoryDecimal.d.ts +5 -1
- package/dist/components/gpu/style/assign-gpu-devices-list.d.ts +1 -0
- package/dist/components/gpu/style/assign-gpu-devices-list.scss.js +3 -0
- package/dist/components/gpu/style/assign-gpu-devices-list.scss.mjs +4 -0
- package/dist/components/gpu/style/gpu-form.d.ts +1 -0
- package/dist/components/gpu/types.d.ts +6 -0
- package/dist/components/gpu/types.js +2 -0
- package/dist/components/gpu/types.mjs +2 -0
- package/dist/components/gpu/utils.d.ts +4 -0
- package/dist/components/gpu/utils.js +14 -0
- package/dist/components/gpu/utils.mjs +14 -0
- package/dist/components/instance-cluster/src/InstanceCluster.vue.d.ts +1 -1
- package/dist/components/instance-namespace/src/InstanceNamespace.vue.d.ts +1 -1
- package/dist/components/instance-storage-class/src/InstanceStorageClass.vue.d.ts +1 -1
- package/dist/components/network-config/src/NetworkConfig.vue.d.ts +1 -1
- package/dist/components/network-config/src/NetworkConfig.vue.js +13 -6
- package/dist/components/network-config/src/NetworkConfig.vue.mjs +14 -7
- package/dist/dialogs/create-network-config-dialog/src/CreateNetworkConfigDialog.vue.d.ts +1 -1
- package/dist/es/components/gpu/style/assign-gpu-devices-list.mjs +1 -0
- package/dist/es/components/gpu/style/gpu-form.mjs +1 -0
- package/dist/forms/import-parameter-template/props.d.ts +8 -8
- package/dist/forms/import-parameter-template/src/ImportParameterTemplate.vue.d.ts +24 -24
- package/dist/group-mapping.json +1 -1
- package/dist/index.js +34 -23
- package/dist/index.mjs +15 -4
- package/dist/locales/en-US/components/Gpu.json.js +36 -9
- package/dist/locales/en-US/components/Gpu.json.mjs +37 -10
- package/dist/locales/en-US/index.js +2 -0
- package/dist/locales/en-US/index.mjs +2 -0
- package/dist/locales/en-US/uses/UseCancelFormDialog.json.js +11 -0
- package/dist/locales/en-US/uses/UseCancelFormDialog.json.mjs +11 -0
- package/dist/locales/ja/components/Gpu.json.js +36 -9
- package/dist/locales/ja/components/Gpu.json.mjs +37 -10
- package/dist/locales/ja/components/InstancePassword.json.js +1 -1
- package/dist/locales/ja/components/InstancePassword.json.mjs +1 -1
- package/dist/locales/ja/components/MatchExpressionsEditor.json.js +1 -1
- package/dist/locales/ja/components/MatchExpressionsEditor.json.mjs +1 -1
- package/dist/locales/ja/components/NetworkConfig.json.js +1 -1
- package/dist/locales/ja/components/NetworkConfig.json.mjs +1 -1
- package/dist/locales/ja/index.js +2 -0
- package/dist/locales/ja/index.mjs +2 -0
- package/dist/locales/ja/uses/UseCancelFormDialog.json.js +11 -0
- package/dist/locales/ja/uses/UseCancelFormDialog.json.mjs +11 -0
- package/dist/locales/ja/workloads/DnsConfig.json.js +1 -1
- package/dist/locales/ja/workloads/DnsConfig.json.mjs +1 -1
- package/dist/locales/ja/workloads/workload-advanced/NetworkConfig.json.js +1 -1
- package/dist/locales/ja/workloads/workload-advanced/NetworkConfig.json.mjs +1 -1
- package/dist/locales/zh-CN/components/Gpu.json.js +36 -9
- package/dist/locales/zh-CN/components/Gpu.json.mjs +37 -10
- package/dist/locales/zh-CN/index.js +2 -0
- package/dist/locales/zh-CN/index.mjs +2 -0
- package/dist/locales/zh-CN/uses/UseCancelFormDialog.json.js +11 -0
- package/dist/locales/zh-CN/uses/UseCancelFormDialog.json.mjs +11 -0
- package/dist/style.css +692 -664
- package/dist/styles/components/gpu/assign-gpu-devices-list.css +10 -0
- package/dist/styles/components/gpu/gpu-form-item.css +16 -0
- package/dist/styles/components/gpu/gpu-form.css +4 -0
- package/dist/styles/components/network-config/network-config.css +3 -0
- package/dist/styles/components/resource-config/resource-config.css +0 -8
- package/dist/styles/styles/common.css +4 -0
- package/dist/uses/index.d.ts +1 -0
- package/dist/uses/useCancelFormDialog/index.d.ts +11 -0
- package/dist/uses/useCancelFormDialog/index.js +40 -0
- package/dist/uses/useCancelFormDialog/index.mjs +40 -0
- package/dist/uses/useCancelFormDialog/src/CancelFormDialog.vue.d.ts +8 -0
- package/dist/uses/useCancelFormDialog/src/CancelFormDialog.vue.js +25 -0
- package/dist/uses/useCancelFormDialog/src/CancelFormDialog.vue.mjs +26 -0
- package/dist/uses/useCancelFormDialog/src/CancelFormDialog.vue2.js +3 -0
- package/dist/uses/useCancelFormDialog/src/CancelFormDialog.vue2.mjs +4 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/injectWithSelf.d.ts +6 -0
- package/dist/utils/injectWithSelf.js +8 -0
- package/dist/utils/injectWithSelf.mjs +8 -0
- package/dist/utils/multiRowEditorValidate.d.ts +5 -5
- package/dist/utils/useResetFieldValue.d.ts +13 -0
- package/dist/utils/useResetFieldValue.js +28 -0
- package/dist/utils/useResetFieldValue.mjs +28 -0
- package/dist/utils/useSetFieldValue.d.ts +6 -0
- package/dist/utils/useSetFieldValue.js +2 -5
- package/dist/utils/useSetFieldValue.mjs +2 -5
- package/dist/workloads/container-basic-info/props.d.ts +13 -0
- package/dist/workloads/container-basic-info/props.js +4 -0
- package/dist/workloads/container-basic-info/props.mjs +4 -0
- package/dist/workloads/container-basic-info/src/ContainerBasicInfo.vue.d.ts +10 -0
- package/dist/workloads/container-basic-info/src/ContainerBasicInfo.vue.js +54 -29
- package/dist/workloads/container-basic-info/src/ContainerBasicInfo.vue.mjs +54 -29
- package/dist/workloads/container-basic-info/src/ContainerBasicInfo.vue2.js +18 -8
- package/dist/workloads/container-basic-info/src/ContainerBasicInfo.vue2.mjs +19 -9
- package/dist/workloads/container-image/src/dialogs/SelectImageDialog.vue.d.ts +1 -1
- package/dist/workloads/containers/demo/data.d.ts +8 -1
- package/dist/workloads/containers/src/ContainerItem.vue.d.ts +23 -0
- package/dist/workloads/containers/src/Containers.vue.d.ts +4 -0
- package/dist/workloads/containers/src/Containers.vue2.js +18 -1
- package/dist/workloads/containers/src/Containers.vue2.mjs +19 -2
- package/dist/workloads/health-check/props.d.ts +4 -0
- package/dist/workloads/health-check/props.js +4 -0
- package/dist/workloads/health-check/props.mjs +4 -0
- package/dist/workloads/health-check/src/HealthCheck.vue.d.ts +9 -0
- package/dist/workloads/health-check/src/HealthCheck.vue.js +6 -6
- package/dist/workloads/health-check/src/HealthCheck.vue.mjs +6 -6
- package/dist/workloads/health-check/src/HealthCheckHandler.vue.js +3 -1
- package/dist/workloads/health-check/src/HealthCheckHandler.vue.mjs +3 -1
- package/dist/workloads/http-get-action/src/HttpGetAction.vue.js +1 -1
- package/dist/workloads/http-get-action/src/HttpGetAction.vue.mjs +1 -1
- package/dist/workloads/workload-annotations/props.d.ts +1 -0
- package/dist/workloads/workload-annotations/props.js +1 -0
- package/dist/workloads/workload-annotations/props.mjs +2 -1
- package/package.json +12 -13
- package/dist/components/gpu/src/GpuAdvancedForm.vue.d.ts +0 -131
- package/dist/components/gpu/src/GpuAdvancedForm.vue2.js +0 -92
- package/dist/components/gpu/src/GpuAdvancedForm.vue2.mjs +0 -76
- package/dist/components/gpu/src/GpuFormItem.vue.d.ts +0 -232
- package/dist/components/gpu/src/GpuFormItem.vue2.js +0 -235
- package/dist/components/gpu/src/GpuFormItem.vue2.mjs +0 -219
- package/dist/components/gpu/src/GpuResources.vue.js +0 -125
- package/dist/components/gpu/src/GpuResources.vue.mjs +0 -126
- package/dist/components/gpu/src/GpuResources.vue2.js +0 -197
- package/dist/components/gpu/src/GpuResources.vue2.mjs +0 -181
- package/dist/components/gpu/src/validations/nvidiaVgpuMemoryDecimal.js +0 -19
- package/dist/components/gpu/src/validations/nvidiaVgpuMemoryDecimal.mjs +0 -20
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const index = require("../../../../node_modules/@vueuse/core/index.js");
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
const vueI18n = require("vue-i18n");
|
|
5
|
+
require("../../style/assign-gpu-devices-list.scss.js");
|
|
6
|
+
const lodashEs = require("lodash-es");
|
|
7
|
+
const extend = require("@dao-style/extend");
|
|
8
|
+
const props = require("../../props.js");
|
|
9
|
+
const _sfc_main = vue.defineComponent({
|
|
10
|
+
name: "DaoAssignGpuCardsList",
|
|
11
|
+
props: props.assignGpuDevicesListProps,
|
|
12
|
+
emits: ["update:modelValue"],
|
|
13
|
+
setup(props2, { emit }) {
|
|
14
|
+
const modelValue = index.useVModel(props2, "modelValue", emit, { passive: true });
|
|
15
|
+
const { t } = vueI18n.useI18n();
|
|
16
|
+
const columns = vue.computed(() => [
|
|
17
|
+
{
|
|
18
|
+
header: t("biz.components.Gpu.assignGpu.devicesList.uuid"),
|
|
19
|
+
id: "deviceUUID"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
header: t("biz.components.Gpu.assignGpu.devicesList.model"),
|
|
23
|
+
id: "modelName"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
header: t("biz.components.Gpu.assignGpu.devicesList.node"),
|
|
27
|
+
id: "nodeName",
|
|
28
|
+
defaultWidth: "80px"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
header: t("biz.components.Gpu.assignGpu.devicesList.computePower"),
|
|
32
|
+
id: "computePower",
|
|
33
|
+
defaultWidth: "170px"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
header: t("biz.components.Gpu.assignGpu.devicesList.memory"),
|
|
37
|
+
id: "memory",
|
|
38
|
+
defaultWidth: "170px"
|
|
39
|
+
}
|
|
40
|
+
]);
|
|
41
|
+
const searchOptions = vue.computed(() => [
|
|
42
|
+
{
|
|
43
|
+
key: "searchDeviceUUID",
|
|
44
|
+
label: t("biz.components.Gpu.assignGpu.devicesList.uuid"),
|
|
45
|
+
single: true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
key: "searchGPUModel",
|
|
49
|
+
label: t("biz.components.Gpu.assignGpu.devicesList.model"),
|
|
50
|
+
single: true
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
key: "searchNodeName",
|
|
54
|
+
label: t("biz.components.Gpu.assignGpu.devicesList.node"),
|
|
55
|
+
single: true
|
|
56
|
+
}
|
|
57
|
+
]);
|
|
58
|
+
const fuzzySearch = {
|
|
59
|
+
key: "searchDeviceUUID",
|
|
60
|
+
single: true
|
|
61
|
+
};
|
|
62
|
+
const filterData = vue.ref({});
|
|
63
|
+
const handleSearch = () => {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
if (props2.disabled) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
(_b = (_a = props2.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.search) == null ? void 0 : _b.call(_a, filterData.value);
|
|
69
|
+
};
|
|
70
|
+
const handleRefresh = () => {
|
|
71
|
+
var _a;
|
|
72
|
+
if (props2.disabled) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
(_a = props2.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.refresh();
|
|
76
|
+
};
|
|
77
|
+
const displayDevices = vue.computed(() => {
|
|
78
|
+
var _a;
|
|
79
|
+
const devices = ((_a = props2.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.data) ?? [];
|
|
80
|
+
if (!props2.disabled) {
|
|
81
|
+
return devices;
|
|
82
|
+
}
|
|
83
|
+
const existingUUIDs = new Set(devices.map((device) => device.deviceUUID));
|
|
84
|
+
const missingDevices = modelValue.value.filter((deviceUUID) => !existingUUIDs.has(deviceUUID)).map((deviceUUID) => ({ deviceUUID }));
|
|
85
|
+
return [...devices, ...missingDevices];
|
|
86
|
+
});
|
|
87
|
+
const isEmpty = (value) => lodashEs.isNil(value) || value === "";
|
|
88
|
+
const formatMemoryUnit = (memory = "0") => {
|
|
89
|
+
if (memory === "0") {
|
|
90
|
+
return "0 Mi";
|
|
91
|
+
}
|
|
92
|
+
const val = extend.formatMemory(`${memory}Mi`);
|
|
93
|
+
return `${val.value} ${val.unit}`;
|
|
94
|
+
};
|
|
95
|
+
const calculateRemaining = (allocatable, allocated) => {
|
|
96
|
+
if (isEmpty(allocatable) || isEmpty(allocated)) {
|
|
97
|
+
return void 0;
|
|
98
|
+
}
|
|
99
|
+
const scale = 100;
|
|
100
|
+
const allocatableValue = Math.round(Number(allocatable) * scale);
|
|
101
|
+
const allocatedValue = Math.round(Number(allocated) * scale);
|
|
102
|
+
if (![allocatableValue, allocatedValue].every(Number.isFinite)) {
|
|
103
|
+
return void 0;
|
|
104
|
+
}
|
|
105
|
+
return ((allocatableValue - allocatedValue) / scale).toString();
|
|
106
|
+
};
|
|
107
|
+
const displayMemory = (row) => {
|
|
108
|
+
if (isEmpty(row.allocatedFrameBufferMemory)) {
|
|
109
|
+
return "-";
|
|
110
|
+
}
|
|
111
|
+
const allocated = formatMemoryUnit(row.allocatedFrameBufferMemory);
|
|
112
|
+
const remaining = calculateRemaining(
|
|
113
|
+
row.allocatableFrameBufferMemory,
|
|
114
|
+
row.allocatedFrameBufferMemory
|
|
115
|
+
);
|
|
116
|
+
const remainingText = lodashEs.isNil(remaining) ? "-" : formatMemoryUnit(remaining);
|
|
117
|
+
return `${allocated} / ${remainingText}`;
|
|
118
|
+
};
|
|
119
|
+
const displayComputePower = (row) => {
|
|
120
|
+
if (isEmpty(row.allocatedCore)) {
|
|
121
|
+
return "-";
|
|
122
|
+
}
|
|
123
|
+
const allocated = `${row.allocatedCore}%`;
|
|
124
|
+
const remaining = calculateRemaining(row.allocatableCore, row.allocatedCore);
|
|
125
|
+
const remainingText = lodashEs.isNil(remaining) ? "-" : `${remaining}%`;
|
|
126
|
+
return `${allocated} / ${remainingText}`;
|
|
127
|
+
};
|
|
128
|
+
const selectedDevices = vue.computed(() => {
|
|
129
|
+
const selectedUUIDs = new Set(modelValue.value);
|
|
130
|
+
return displayDevices.value.filter(
|
|
131
|
+
(device) => device.deviceUUID !== void 0 && selectedUUIDs.has(device.deviceUUID)
|
|
132
|
+
);
|
|
133
|
+
});
|
|
134
|
+
const hasAllSelectedDevices = (devices) => modelValue.value.every(
|
|
135
|
+
(deviceUUID) => devices.some((device) => device.deviceUUID === deviceUUID)
|
|
136
|
+
);
|
|
137
|
+
const firstSelectedDevice = vue.computed(() => selectedDevices.value[0] ?? null);
|
|
138
|
+
const getRowCheckable = (row) => {
|
|
139
|
+
if (props2.disabled) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
const first = firstSelectedDevice.value;
|
|
143
|
+
if (first) {
|
|
144
|
+
return row.nodeName === first.nodeName;
|
|
145
|
+
}
|
|
146
|
+
return true;
|
|
147
|
+
};
|
|
148
|
+
const onSelect = (selected) => {
|
|
149
|
+
var _a, _b;
|
|
150
|
+
if (props2.disabled) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (!selected.length) {
|
|
154
|
+
modelValue.value = [];
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const selectedNodeName = ((_a = firstSelectedDevice.value) == null ? void 0 : _a.nodeName) ?? ((_b = selected[0]) == null ? void 0 : _b.nodeName);
|
|
158
|
+
modelValue.value = selected.reduce((uuids, device) => {
|
|
159
|
+
if (device.nodeName === selectedNodeName && device.deviceUUID !== void 0) {
|
|
160
|
+
uuids.push(device.deviceUUID);
|
|
161
|
+
}
|
|
162
|
+
return uuids;
|
|
163
|
+
}, []);
|
|
164
|
+
};
|
|
165
|
+
const fetchData = async () => {
|
|
166
|
+
var _a, _b;
|
|
167
|
+
const devices = ((_a = props2.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.data) ?? [];
|
|
168
|
+
const needsRefresh = !devices.length || props2.disabled && !hasAllSelectedDevices(devices);
|
|
169
|
+
if (!needsRefresh) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
await ((_b = props2.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _b.refresh());
|
|
173
|
+
};
|
|
174
|
+
fetchData();
|
|
175
|
+
return {
|
|
176
|
+
columns,
|
|
177
|
+
selectedDevices,
|
|
178
|
+
displayDevices,
|
|
179
|
+
onSelect,
|
|
180
|
+
getRowCheckable,
|
|
181
|
+
displayComputePower,
|
|
182
|
+
displayMemory,
|
|
183
|
+
searchOptions,
|
|
184
|
+
fuzzySearch,
|
|
185
|
+
filterData,
|
|
186
|
+
handleSearch,
|
|
187
|
+
handleRefresh
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
module.exports = _sfc_main;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { useVModel } from "../../../../node_modules/@vueuse/core/index.mjs";
|
|
2
|
+
import { defineComponent, computed, ref } from "vue";
|
|
3
|
+
import { useI18n } from "vue-i18n";
|
|
4
|
+
import "../../style/assign-gpu-devices-list.scss.mjs";
|
|
5
|
+
import { isNil } from "lodash-es";
|
|
6
|
+
import { formatMemory } from "@dao-style/extend";
|
|
7
|
+
import { assignGpuDevicesListProps } from "../../props.mjs";
|
|
8
|
+
const _sfc_main = defineComponent({
|
|
9
|
+
name: "DaoAssignGpuCardsList",
|
|
10
|
+
props: assignGpuDevicesListProps,
|
|
11
|
+
emits: ["update:modelValue"],
|
|
12
|
+
setup(props, { emit }) {
|
|
13
|
+
const modelValue = useVModel(props, "modelValue", emit, { passive: true });
|
|
14
|
+
const { t } = useI18n();
|
|
15
|
+
const columns = computed(() => [
|
|
16
|
+
{
|
|
17
|
+
header: t("biz.components.Gpu.assignGpu.devicesList.uuid"),
|
|
18
|
+
id: "deviceUUID"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
header: t("biz.components.Gpu.assignGpu.devicesList.model"),
|
|
22
|
+
id: "modelName"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
header: t("biz.components.Gpu.assignGpu.devicesList.node"),
|
|
26
|
+
id: "nodeName",
|
|
27
|
+
defaultWidth: "80px"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
header: t("biz.components.Gpu.assignGpu.devicesList.computePower"),
|
|
31
|
+
id: "computePower",
|
|
32
|
+
defaultWidth: "170px"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
header: t("biz.components.Gpu.assignGpu.devicesList.memory"),
|
|
36
|
+
id: "memory",
|
|
37
|
+
defaultWidth: "170px"
|
|
38
|
+
}
|
|
39
|
+
]);
|
|
40
|
+
const searchOptions = computed(() => [
|
|
41
|
+
{
|
|
42
|
+
key: "searchDeviceUUID",
|
|
43
|
+
label: t("biz.components.Gpu.assignGpu.devicesList.uuid"),
|
|
44
|
+
single: true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
key: "searchGPUModel",
|
|
48
|
+
label: t("biz.components.Gpu.assignGpu.devicesList.model"),
|
|
49
|
+
single: true
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
key: "searchNodeName",
|
|
53
|
+
label: t("biz.components.Gpu.assignGpu.devicesList.node"),
|
|
54
|
+
single: true
|
|
55
|
+
}
|
|
56
|
+
]);
|
|
57
|
+
const fuzzySearch = {
|
|
58
|
+
key: "searchDeviceUUID",
|
|
59
|
+
single: true
|
|
60
|
+
};
|
|
61
|
+
const filterData = ref({});
|
|
62
|
+
const handleSearch = () => {
|
|
63
|
+
var _a, _b;
|
|
64
|
+
if (props.disabled) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
(_b = (_a = props.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.search) == null ? void 0 : _b.call(_a, filterData.value);
|
|
68
|
+
};
|
|
69
|
+
const handleRefresh = () => {
|
|
70
|
+
var _a;
|
|
71
|
+
if (props.disabled) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
(_a = props.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.refresh();
|
|
75
|
+
};
|
|
76
|
+
const displayDevices = computed(() => {
|
|
77
|
+
var _a;
|
|
78
|
+
const devices = ((_a = props.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.data) ?? [];
|
|
79
|
+
if (!props.disabled) {
|
|
80
|
+
return devices;
|
|
81
|
+
}
|
|
82
|
+
const existingUUIDs = new Set(devices.map((device) => device.deviceUUID));
|
|
83
|
+
const missingDevices = modelValue.value.filter((deviceUUID) => !existingUUIDs.has(deviceUUID)).map((deviceUUID) => ({ deviceUUID }));
|
|
84
|
+
return [...devices, ...missingDevices];
|
|
85
|
+
});
|
|
86
|
+
const isEmpty = (value) => isNil(value) || value === "";
|
|
87
|
+
const formatMemoryUnit = (memory = "0") => {
|
|
88
|
+
if (memory === "0") {
|
|
89
|
+
return "0 Mi";
|
|
90
|
+
}
|
|
91
|
+
const val = formatMemory(`${memory}Mi`);
|
|
92
|
+
return `${val.value} ${val.unit}`;
|
|
93
|
+
};
|
|
94
|
+
const calculateRemaining = (allocatable, allocated) => {
|
|
95
|
+
if (isEmpty(allocatable) || isEmpty(allocated)) {
|
|
96
|
+
return void 0;
|
|
97
|
+
}
|
|
98
|
+
const scale = 100;
|
|
99
|
+
const allocatableValue = Math.round(Number(allocatable) * scale);
|
|
100
|
+
const allocatedValue = Math.round(Number(allocated) * scale);
|
|
101
|
+
if (![allocatableValue, allocatedValue].every(Number.isFinite)) {
|
|
102
|
+
return void 0;
|
|
103
|
+
}
|
|
104
|
+
return ((allocatableValue - allocatedValue) / scale).toString();
|
|
105
|
+
};
|
|
106
|
+
const displayMemory = (row) => {
|
|
107
|
+
if (isEmpty(row.allocatedFrameBufferMemory)) {
|
|
108
|
+
return "-";
|
|
109
|
+
}
|
|
110
|
+
const allocated = formatMemoryUnit(row.allocatedFrameBufferMemory);
|
|
111
|
+
const remaining = calculateRemaining(
|
|
112
|
+
row.allocatableFrameBufferMemory,
|
|
113
|
+
row.allocatedFrameBufferMemory
|
|
114
|
+
);
|
|
115
|
+
const remainingText = isNil(remaining) ? "-" : formatMemoryUnit(remaining);
|
|
116
|
+
return `${allocated} / ${remainingText}`;
|
|
117
|
+
};
|
|
118
|
+
const displayComputePower = (row) => {
|
|
119
|
+
if (isEmpty(row.allocatedCore)) {
|
|
120
|
+
return "-";
|
|
121
|
+
}
|
|
122
|
+
const allocated = `${row.allocatedCore}%`;
|
|
123
|
+
const remaining = calculateRemaining(row.allocatableCore, row.allocatedCore);
|
|
124
|
+
const remainingText = isNil(remaining) ? "-" : `${remaining}%`;
|
|
125
|
+
return `${allocated} / ${remainingText}`;
|
|
126
|
+
};
|
|
127
|
+
const selectedDevices = computed(() => {
|
|
128
|
+
const selectedUUIDs = new Set(modelValue.value);
|
|
129
|
+
return displayDevices.value.filter(
|
|
130
|
+
(device) => device.deviceUUID !== void 0 && selectedUUIDs.has(device.deviceUUID)
|
|
131
|
+
);
|
|
132
|
+
});
|
|
133
|
+
const hasAllSelectedDevices = (devices) => modelValue.value.every(
|
|
134
|
+
(deviceUUID) => devices.some((device) => device.deviceUUID === deviceUUID)
|
|
135
|
+
);
|
|
136
|
+
const firstSelectedDevice = computed(() => selectedDevices.value[0] ?? null);
|
|
137
|
+
const getRowCheckable = (row) => {
|
|
138
|
+
if (props.disabled) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
const first = firstSelectedDevice.value;
|
|
142
|
+
if (first) {
|
|
143
|
+
return row.nodeName === first.nodeName;
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
};
|
|
147
|
+
const onSelect = (selected) => {
|
|
148
|
+
var _a, _b;
|
|
149
|
+
if (props.disabled) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (!selected.length) {
|
|
153
|
+
modelValue.value = [];
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const selectedNodeName = ((_a = firstSelectedDevice.value) == null ? void 0 : _a.nodeName) ?? ((_b = selected[0]) == null ? void 0 : _b.nodeName);
|
|
157
|
+
modelValue.value = selected.reduce((uuids, device) => {
|
|
158
|
+
if (device.nodeName === selectedNodeName && device.deviceUUID !== void 0) {
|
|
159
|
+
uuids.push(device.deviceUUID);
|
|
160
|
+
}
|
|
161
|
+
return uuids;
|
|
162
|
+
}, []);
|
|
163
|
+
};
|
|
164
|
+
const fetchData = async () => {
|
|
165
|
+
var _a, _b;
|
|
166
|
+
const devices = ((_a = props.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.data) ?? [];
|
|
167
|
+
const needsRefresh = !devices.length || props.disabled && !hasAllSelectedDevices(devices);
|
|
168
|
+
if (!needsRefresh) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
await ((_b = props.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _b.refresh());
|
|
172
|
+
};
|
|
173
|
+
fetchData();
|
|
174
|
+
return {
|
|
175
|
+
columns,
|
|
176
|
+
selectedDevices,
|
|
177
|
+
displayDevices,
|
|
178
|
+
onSelect,
|
|
179
|
+
getRowCheckable,
|
|
180
|
+
displayComputePower,
|
|
181
|
+
displayMemory,
|
|
182
|
+
searchOptions,
|
|
183
|
+
fuzzySearch,
|
|
184
|
+
filterData,
|
|
185
|
+
handleSearch,
|
|
186
|
+
handleRefresh
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
export {
|
|
191
|
+
_sfc_main as default
|
|
192
|
+
};
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import * as yup from 'yup';
|
|
2
|
+
import { VgpuSchedulePolicy } from '../../types';
|
|
3
|
+
type AssignGpuType = 'assignModel' | 'assignDevice';
|
|
4
|
+
declare const _default: import("vue").DefineComponent<{
|
|
5
|
+
quota: {
|
|
6
|
+
type: import("vue").PropType<import("../../types").GpuQuotaItem>;
|
|
7
|
+
};
|
|
8
|
+
enableRemoteCall: {
|
|
9
|
+
type: BooleanConstructor;
|
|
10
|
+
default: boolean;
|
|
11
|
+
};
|
|
12
|
+
enableNvidiaVgpuModel: {
|
|
13
|
+
type: BooleanConstructor;
|
|
14
|
+
default: boolean;
|
|
15
|
+
};
|
|
16
|
+
enableNvidiaVgpuDevices: {
|
|
17
|
+
type: BooleanConstructor;
|
|
18
|
+
default: boolean;
|
|
19
|
+
};
|
|
20
|
+
assignGpuDisabled: {
|
|
21
|
+
type: BooleanConstructor;
|
|
22
|
+
default: boolean;
|
|
23
|
+
};
|
|
24
|
+
enableNvidiaVgpuPriority: {
|
|
25
|
+
type: BooleanConstructor;
|
|
26
|
+
default: boolean;
|
|
27
|
+
};
|
|
28
|
+
nvidiaVgpuModelsAdaptor: {
|
|
29
|
+
type: import("vue").PropType<{
|
|
30
|
+
data: import("../../types").GPUSummary[];
|
|
31
|
+
loading: boolean;
|
|
32
|
+
refresh: () => import("../../types").GPUSummary[] | Promise<import("../../types").GPUSummary[]>;
|
|
33
|
+
}>;
|
|
34
|
+
default: undefined;
|
|
35
|
+
};
|
|
36
|
+
nvidiaGpuModels: {
|
|
37
|
+
type: import("vue").PropType<string[]>;
|
|
38
|
+
required: boolean;
|
|
39
|
+
};
|
|
40
|
+
nvidiaVgpuDevicesAdaptor: {
|
|
41
|
+
type: import("vue").PropType<import("../../props").GpuDevicesAdaptor>;
|
|
42
|
+
default: undefined;
|
|
43
|
+
};
|
|
44
|
+
isSide: {
|
|
45
|
+
type: BooleanConstructor;
|
|
46
|
+
default: boolean;
|
|
47
|
+
};
|
|
48
|
+
openNvidiaAssignGpu: {
|
|
49
|
+
type: BooleanConstructor;
|
|
50
|
+
default: boolean;
|
|
51
|
+
};
|
|
52
|
+
openNvidiaVgpuModel: {
|
|
53
|
+
type: BooleanConstructor;
|
|
54
|
+
default: boolean;
|
|
55
|
+
};
|
|
56
|
+
enableNvidiaVgpuSchedulePolicy: {
|
|
57
|
+
type: BooleanConstructor;
|
|
58
|
+
default: boolean;
|
|
59
|
+
};
|
|
60
|
+
openNvidiaVgpuSchedulePolicy: {
|
|
61
|
+
type: BooleanConstructor;
|
|
62
|
+
default: boolean;
|
|
63
|
+
};
|
|
64
|
+
}, {
|
|
65
|
+
gpuCallValue: import("vue").Ref<string>;
|
|
66
|
+
priorityOpts: {
|
|
67
|
+
label: string;
|
|
68
|
+
value: string;
|
|
69
|
+
}[];
|
|
70
|
+
openNvidiaVgpuModelRef: import("vue").Ref<boolean> | import("vue").WritableComputedRef<boolean>;
|
|
71
|
+
nvidiaVgpuModelKey: string;
|
|
72
|
+
nvidiaVgpuPriorityKey: string;
|
|
73
|
+
isNvidiaVgpuType: import("vue").ComputedRef<boolean>;
|
|
74
|
+
isNvidiaGpu: (key?: string | undefined) => boolean;
|
|
75
|
+
showAdvancedConfig: import("vue").ComputedRef<boolean>;
|
|
76
|
+
scheduleOps: {
|
|
77
|
+
label: string;
|
|
78
|
+
value: VgpuSchedulePolicy;
|
|
79
|
+
}[];
|
|
80
|
+
openNvidiaVgpuSchedulePolicyRef: import("vue").Ref<boolean> | import("vue").WritableComputedRef<boolean>;
|
|
81
|
+
handleNvidiaVgpuSchedulePolicyChange: (open: boolean) => void;
|
|
82
|
+
nvidiaVgpuGpuScheduleKey: string;
|
|
83
|
+
nvidiaVgpuNodeScheduleKey: string;
|
|
84
|
+
nodeScheduleHelper: import("vue").ComputedRef<string>;
|
|
85
|
+
gpuScheduleHelper: import("vue").ComputedRef<string>;
|
|
86
|
+
nvidiaVgpuCore: import("vue").ComputedRef<number | undefined>;
|
|
87
|
+
assignTypes: import("vue").ComputedRef<{
|
|
88
|
+
value: AssignGpuType;
|
|
89
|
+
label: string;
|
|
90
|
+
}[]>;
|
|
91
|
+
openNvidiaAssignGpuRef: import("vue").Ref<boolean> | import("vue").WritableComputedRef<boolean>;
|
|
92
|
+
handleAssignGpuTypeChange: (value: AssignGpuType) => void;
|
|
93
|
+
assignGpuType: import("vue").Ref<AssignGpuType>;
|
|
94
|
+
displayNvidiaGpuModels: import("vue").ComputedRef<string[]>;
|
|
95
|
+
nvidiaVgpuDevicesKey: string;
|
|
96
|
+
yupDevicesSchema: import("vue").ComputedRef<yup.ArraySchema<import("yup/lib/string").RequiredStringSchema<string | undefined, import("yup/lib/types").AnyObject>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, string[] | undefined>>;
|
|
97
|
+
yup: typeof yup;
|
|
98
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:openNvidiaVgpuModel" | "update:openNvidiaVgpuSchedulePolicy" | "update:openNvidiaAssignGpu")[], "update:openNvidiaVgpuModel" | "update:openNvidiaVgpuSchedulePolicy" | "update:openNvidiaAssignGpu", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
99
|
+
quota: {
|
|
100
|
+
type: import("vue").PropType<import("../../types").GpuQuotaItem>;
|
|
101
|
+
};
|
|
102
|
+
enableRemoteCall: {
|
|
103
|
+
type: BooleanConstructor;
|
|
104
|
+
default: boolean;
|
|
105
|
+
};
|
|
106
|
+
enableNvidiaVgpuModel: {
|
|
107
|
+
type: BooleanConstructor;
|
|
108
|
+
default: boolean;
|
|
109
|
+
};
|
|
110
|
+
enableNvidiaVgpuDevices: {
|
|
111
|
+
type: BooleanConstructor;
|
|
112
|
+
default: boolean;
|
|
113
|
+
};
|
|
114
|
+
assignGpuDisabled: {
|
|
115
|
+
type: BooleanConstructor;
|
|
116
|
+
default: boolean;
|
|
117
|
+
};
|
|
118
|
+
enableNvidiaVgpuPriority: {
|
|
119
|
+
type: BooleanConstructor;
|
|
120
|
+
default: boolean;
|
|
121
|
+
};
|
|
122
|
+
nvidiaVgpuModelsAdaptor: {
|
|
123
|
+
type: import("vue").PropType<{
|
|
124
|
+
data: import("../../types").GPUSummary[];
|
|
125
|
+
loading: boolean;
|
|
126
|
+
refresh: () => import("../../types").GPUSummary[] | Promise<import("../../types").GPUSummary[]>;
|
|
127
|
+
}>;
|
|
128
|
+
default: undefined;
|
|
129
|
+
};
|
|
130
|
+
nvidiaGpuModels: {
|
|
131
|
+
type: import("vue").PropType<string[]>;
|
|
132
|
+
required: boolean;
|
|
133
|
+
};
|
|
134
|
+
nvidiaVgpuDevicesAdaptor: {
|
|
135
|
+
type: import("vue").PropType<import("../../props").GpuDevicesAdaptor>;
|
|
136
|
+
default: undefined;
|
|
137
|
+
};
|
|
138
|
+
isSide: {
|
|
139
|
+
type: BooleanConstructor;
|
|
140
|
+
default: boolean;
|
|
141
|
+
};
|
|
142
|
+
openNvidiaAssignGpu: {
|
|
143
|
+
type: BooleanConstructor;
|
|
144
|
+
default: boolean;
|
|
145
|
+
};
|
|
146
|
+
openNvidiaVgpuModel: {
|
|
147
|
+
type: BooleanConstructor;
|
|
148
|
+
default: boolean;
|
|
149
|
+
};
|
|
150
|
+
enableNvidiaVgpuSchedulePolicy: {
|
|
151
|
+
type: BooleanConstructor;
|
|
152
|
+
default: boolean;
|
|
153
|
+
};
|
|
154
|
+
openNvidiaVgpuSchedulePolicy: {
|
|
155
|
+
type: BooleanConstructor;
|
|
156
|
+
default: boolean;
|
|
157
|
+
};
|
|
158
|
+
}>> & {
|
|
159
|
+
"onUpdate:openNvidiaVgpuModel"?: ((...args: any[]) => any) | undefined;
|
|
160
|
+
"onUpdate:openNvidiaVgpuSchedulePolicy"?: ((...args: any[]) => any) | undefined;
|
|
161
|
+
"onUpdate:openNvidiaAssignGpu"?: ((...args: any[]) => any) | undefined;
|
|
162
|
+
}, {
|
|
163
|
+
nvidiaVgpuModelsAdaptor: {
|
|
164
|
+
data: import("../../types").GPUSummary[];
|
|
165
|
+
loading: boolean;
|
|
166
|
+
refresh: () => import("../../types").GPUSummary[] | Promise<import("../../types").GPUSummary[]>;
|
|
167
|
+
};
|
|
168
|
+
nvidiaVgpuDevicesAdaptor: import("../../props").GpuDevicesAdaptor;
|
|
169
|
+
enableRemoteCall: boolean;
|
|
170
|
+
enableNvidiaVgpuModel: boolean;
|
|
171
|
+
enableNvidiaVgpuDevices: boolean;
|
|
172
|
+
assignGpuDisabled: boolean;
|
|
173
|
+
enableNvidiaVgpuPriority: boolean;
|
|
174
|
+
enableNvidiaVgpuSchedulePolicy: boolean;
|
|
175
|
+
isSide: boolean;
|
|
176
|
+
openNvidiaAssignGpu: boolean;
|
|
177
|
+
openNvidiaVgpuModel: boolean;
|
|
178
|
+
openNvidiaVgpuSchedulePolicy: boolean;
|
|
179
|
+
}>;
|
|
180
|
+
export default _default;
|