mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2026-01-28 06:51:45 +01:00
switch to cluster grouping in dashboard queries
This commit is contained in:
@@ -149,7 +149,7 @@
|
|||||||
filter: $jobFilter
|
filter: $jobFilter
|
||||||
page: $paging
|
page: $paging
|
||||||
sortBy: TOTALJOBS
|
sortBy: TOTALJOBS
|
||||||
groupBy: SUBCLUSTER
|
groupBy: CLUSTER
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
totalJobs
|
totalJobs
|
||||||
@@ -193,30 +193,25 @@
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
const clusterInfo = $derived.by(() => {
|
const clusterInfo = $derived.by(() => {
|
||||||
if ($initq?.data?.clusters) {
|
|
||||||
let rawInfos = {};
|
let rawInfos = {};
|
||||||
|
if ($initq?.data?.clusters) {
|
||||||
|
// Grouped By Cluster
|
||||||
|
if (!rawInfos['allocatedCores']) rawInfos['allocatedCores'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == presetCluster)?.totalCores || 0;
|
||||||
|
if (!rawInfos['allocatedAccs']) rawInfos['allocatedAccs'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == presetCluster)?.totalAccs || 0;
|
||||||
|
if (!rawInfos['activeUsers']) rawInfos['activeUsers'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == presetCluster)?.totalUsers || 0;
|
||||||
|
if (!rawInfos['runningJobs']) rawInfos['runningJobs'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == presetCluster)?.totalJobs || 0;
|
||||||
|
|
||||||
|
// Collected By Subcluster
|
||||||
let subClusters = $initq?.data?.clusters?.find((c) => c.name == presetCluster)?.subClusters || [];
|
let subClusters = $initq?.data?.clusters?.find((c) => c.name == presetCluster)?.subClusters || [];
|
||||||
for (let subCluster of subClusters) {
|
for (let subCluster of subClusters) {
|
||||||
// Allocations
|
// Allocations
|
||||||
if (!rawInfos['allocatedNodes']) rawInfos['allocatedNodes'] = $statusQuery?.data?.allocatedNodes?.find(({ name }) => name == subCluster.name)?.count || 0;
|
if (!rawInfos['allocatedNodes']) rawInfos['allocatedNodes'] = $statusQuery?.data?.allocatedNodes?.find(({ name }) => name == subCluster.name)?.count || 0;
|
||||||
else rawInfos['allocatedNodes'] += $statusQuery?.data?.allocatedNodes?.find(({ name }) => name == subCluster.name)?.count || 0;
|
else rawInfos['allocatedNodes'] += $statusQuery?.data?.allocatedNodes?.find(({ name }) => name == subCluster.name)?.count || 0;
|
||||||
|
|
||||||
if (!rawInfos['allocatedCores']) rawInfos['allocatedCores'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalCores || 0;
|
|
||||||
else rawInfos['allocatedCores'] += $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalCores || 0;
|
|
||||||
|
|
||||||
if (!rawInfos['allocatedAccs']) rawInfos['allocatedAccs'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalAccs || 0;
|
|
||||||
else rawInfos['allocatedAccs'] += $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalAccs || 0;
|
|
||||||
|
|
||||||
// Infos
|
// Infos
|
||||||
if (!rawInfos['processorTypes']) rawInfos['processorTypes'] = subCluster?.processorType ? new Set([subCluster.processorType]) : new Set([]);
|
if (!rawInfos['processorTypes']) rawInfos['processorTypes'] = subCluster?.processorType ? new Set([subCluster.processorType]) : new Set([]);
|
||||||
else rawInfos['processorTypes'].add(subCluster.processorType);
|
else rawInfos['processorTypes'].add(subCluster.processorType);
|
||||||
|
|
||||||
if (!rawInfos['activeUsers']) rawInfos['activeUsers'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalUsers || 0;
|
|
||||||
else rawInfos['activeUsers'] += $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalUsers || 0;
|
|
||||||
|
|
||||||
if (!rawInfos['runningJobs']) rawInfos['runningJobs'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalJobs || 0;
|
|
||||||
else rawInfos['runningJobs'] += $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalJobs || 0;
|
|
||||||
|
|
||||||
if (!rawInfos['totalNodes']) rawInfos['totalNodes'] = subCluster?.numberOfNodes || 0;
|
if (!rawInfos['totalNodes']) rawInfos['totalNodes'] = subCluster?.numberOfNodes || 0;
|
||||||
else rawInfos['totalNodes'] += subCluster?.numberOfNodes || 0;
|
else rawInfos['totalNodes'] += subCluster?.numberOfNodes || 0;
|
||||||
|
|
||||||
@@ -281,11 +276,8 @@
|
|||||||
let rawGpuUnit = $statusQuery?.data?.nodeMetrics[0]?.metrics.find((m) => m.name == 'acc_power')?.metric?.unit || null
|
let rawGpuUnit = $statusQuery?.data?.nodeMetrics[0]?.metrics.find((m) => m.name == 'acc_power')?.metric?.unit || null
|
||||||
rawInfos['gpuPwrUnit'] = rawGpuUnit ? rawGpuUnit.prefix + rawGpuUnit.base : ''
|
rawInfos['gpuPwrUnit'] = rawGpuUnit ? rawGpuUnit.prefix + rawGpuUnit.base : ''
|
||||||
}
|
}
|
||||||
|
|
||||||
return rawInfos
|
|
||||||
} else {
|
|
||||||
return {};
|
|
||||||
}
|
}
|
||||||
|
return rawInfos;
|
||||||
});
|
});
|
||||||
|
|
||||||
const refinedStateData = $derived.by(() => {
|
const refinedStateData = $derived.by(() => {
|
||||||
|
|||||||
@@ -155,7 +155,7 @@
|
|||||||
filter: $jobFilter
|
filter: $jobFilter
|
||||||
page: $paging
|
page: $paging
|
||||||
sortBy: TOTALJOBS
|
sortBy: TOTALJOBS
|
||||||
groupBy: SUBCLUSTER
|
groupBy: CLUSTER
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
totalJobs
|
totalJobs
|
||||||
@@ -222,30 +222,25 @@
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
const clusterInfo = $derived.by(() => {
|
const clusterInfo = $derived.by(() => {
|
||||||
if ($initq?.data?.clusters) {
|
|
||||||
let rawInfos = {};
|
let rawInfos = {};
|
||||||
|
if ($initq?.data?.clusters) {
|
||||||
|
// Grouped By Cluster
|
||||||
|
if (!rawInfos['allocatedCores']) rawInfos['allocatedCores'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == presetCluster)?.totalCores || 0;
|
||||||
|
if (!rawInfos['allocatedAccs']) rawInfos['allocatedAccs'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == presetCluster)?.totalAccs || 0;
|
||||||
|
if (!rawInfos['activeUsers']) rawInfos['activeUsers'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == presetCluster)?.totalUsers || 0;
|
||||||
|
if (!rawInfos['runningJobs']) rawInfos['runningJobs'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == presetCluster)?.totalJobs || 0;
|
||||||
|
|
||||||
|
// Collected By Subcluster
|
||||||
let subClusters = $initq?.data?.clusters?.find((c) => c.name == presetCluster)?.subClusters || [];
|
let subClusters = $initq?.data?.clusters?.find((c) => c.name == presetCluster)?.subClusters || [];
|
||||||
for (let subCluster of subClusters) {
|
for (let subCluster of subClusters) {
|
||||||
// Allocations
|
// Allocations
|
||||||
if (!rawInfos['allocatedNodes']) rawInfos['allocatedNodes'] = $statusQuery?.data?.allocatedNodes?.find(({ name }) => name == subCluster.name)?.count || 0;
|
if (!rawInfos['allocatedNodes']) rawInfos['allocatedNodes'] = $statusQuery?.data?.allocatedNodes?.find(({ name }) => name == subCluster.name)?.count || 0;
|
||||||
else rawInfos['allocatedNodes'] += $statusQuery?.data?.allocatedNodes?.find(({ name }) => name == subCluster.name)?.count || 0;
|
else rawInfos['allocatedNodes'] += $statusQuery?.data?.allocatedNodes?.find(({ name }) => name == subCluster.name)?.count || 0;
|
||||||
|
|
||||||
if (!rawInfos['allocatedCores']) rawInfos['allocatedCores'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalCores || 0;
|
|
||||||
else rawInfos['allocatedCores'] += $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalCores || 0;
|
|
||||||
|
|
||||||
if (!rawInfos['allocatedAccs']) rawInfos['allocatedAccs'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalAccs || 0;
|
|
||||||
else rawInfos['allocatedAccs'] += $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalAccs || 0;
|
|
||||||
|
|
||||||
// Infos
|
// Infos
|
||||||
if (!rawInfos['processorTypes']) rawInfos['processorTypes'] = subCluster?.processorType ? new Set([subCluster.processorType]) : new Set([]);
|
if (!rawInfos['processorTypes']) rawInfos['processorTypes'] = subCluster?.processorType ? new Set([subCluster.processorType]) : new Set([]);
|
||||||
else rawInfos['processorTypes'].add(subCluster.processorType);
|
else rawInfos['processorTypes'].add(subCluster.processorType);
|
||||||
|
|
||||||
if (!rawInfos['activeUsers']) rawInfos['activeUsers'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalUsers || 0;
|
|
||||||
else rawInfos['activeUsers'] += $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalUsers || 0;
|
|
||||||
|
|
||||||
if (!rawInfos['runningJobs']) rawInfos['runningJobs'] = $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalJobs || 0;
|
|
||||||
else rawInfos['runningJobs'] += $statusQuery?.data?.jobsStatistics?.find(({ id }) => id == subCluster.name)?.totalJobs || 0;
|
|
||||||
|
|
||||||
if (!rawInfos['totalNodes']) rawInfos['totalNodes'] = subCluster?.numberOfNodes || 0;
|
if (!rawInfos['totalNodes']) rawInfos['totalNodes'] = subCluster?.numberOfNodes || 0;
|
||||||
else rawInfos['totalNodes'] += subCluster?.numberOfNodes || 0;
|
else rawInfos['totalNodes'] += subCluster?.numberOfNodes || 0;
|
||||||
|
|
||||||
@@ -290,11 +285,8 @@
|
|||||||
0, // Initial Value
|
0, // Initial Value
|
||||||
) || 0;
|
) || 0;
|
||||||
rawInfos['memBwRate'] = Math.floor((rawMemBw * 100) / 100)
|
rawInfos['memBwRate'] = Math.floor((rawMemBw * 100) / 100)
|
||||||
|
|
||||||
return rawInfos
|
|
||||||
} else {
|
|
||||||
return {};
|
|
||||||
}
|
}
|
||||||
|
return rawInfos;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* Functions */
|
/* Functions */
|
||||||
|
|||||||
Reference in New Issue
Block a user