mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2026-03-17 13:27:30 +01:00
Merge branch 'hotfix' of github.com:ClusterCockpit/cc-backend into hotfix
This commit is contained in:
@@ -197,11 +197,16 @@ func BuildWhereClause(filter *model.JobFilter, query sq.SelectBuilder) sq.Select
|
|||||||
query = buildStringCondition("job.cluster_partition", filter.Partition, query)
|
query = buildStringCondition("job.cluster_partition", filter.Partition, query)
|
||||||
}
|
}
|
||||||
if filter.State != nil {
|
if filter.State != nil {
|
||||||
states := make([]string, len(filter.State))
|
if len(filter.State) == 1 {
|
||||||
for i, val := range filter.State {
|
singleStat := string(filter.State[0])
|
||||||
states[i] = string(val)
|
query = query.Where("job.job_state = ?", singleStat)
|
||||||
|
} else {
|
||||||
|
states := make([]string, len(filter.State))
|
||||||
|
for i, val := range filter.State {
|
||||||
|
states[i] = string(val)
|
||||||
|
}
|
||||||
|
query = query.Where(sq.Eq{"job.job_state": states})
|
||||||
}
|
}
|
||||||
query = query.Where(sq.Eq{"job.job_state": states})
|
|
||||||
}
|
}
|
||||||
if filter.Shared != nil {
|
if filter.Shared != nil {
|
||||||
query = query.Where("job.shared = ?", *filter.Shared)
|
query = query.Where("job.shared = ?", *filter.Shared)
|
||||||
|
|||||||
@@ -101,3 +101,5 @@ DROP INDEX IF EXISTS jobs_numnodes_starttime;
|
|||||||
DROP INDEX IF EXISTS jobs_numhwthreads_starttime;
|
DROP INDEX IF EXISTS jobs_numhwthreads_starttime;
|
||||||
DROP INDEX IF EXISTS jobs_numacc_starttime;
|
DROP INDEX IF EXISTS jobs_numacc_starttime;
|
||||||
DROP INDEX IF EXISTS jobs_energy_starttime;
|
DROP INDEX IF EXISTS jobs_energy_starttime;
|
||||||
|
|
||||||
|
PRAGMA optimize;
|
||||||
|
|||||||
@@ -1 +1,4 @@
|
|||||||
DROP INDEX IF EXISTS jobs_cluster_user_starttime_stats;
|
DROP INDEX IF EXISTS jobs_cluster_user_starttime_stats;
|
||||||
|
DROP INDEX IF EXISTS jobs_cluster_project_starttime_stats;
|
||||||
|
|
||||||
|
PRAGMA optimize;
|
||||||
|
|||||||
@@ -149,7 +149,6 @@
|
|||||||
jobsStatistics(
|
jobsStatistics(
|
||||||
filter: $jobFilter
|
filter: $jobFilter
|
||||||
page: $paging
|
page: $paging
|
||||||
sortBy: TOTALJOBS
|
|
||||||
groupBy: CLUSTER
|
groupBy: CLUSTER
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
@@ -185,7 +184,7 @@
|
|||||||
from: from.toISOString(),
|
from: from.toISOString(),
|
||||||
clusterFrom: clusterFrom.toISOString(),
|
clusterFrom: clusterFrom.toISOString(),
|
||||||
to: to.toISOString(),
|
to: to.toISOString(),
|
||||||
jobFilter: [{ state: ["running"] }, { cluster: { eq: presetCluster } }],
|
jobFilter: [{ cluster: { eq: presetCluster } }, { state: ["running"] }],
|
||||||
nodeFilter: { cluster: { eq: presetCluster }},
|
nodeFilter: { cluster: { eq: presetCluster }},
|
||||||
paging: { itemsPerPage: -1, page: 1 }, // Get all: -1
|
paging: { itemsPerPage: -1, page: 1 }, // Get all: -1
|
||||||
sorting: { field: "startTime", type: "col", order: "DESC" }
|
sorting: { field: "startTime", type: "col", order: "DESC" }
|
||||||
|
|||||||
@@ -119,8 +119,8 @@
|
|||||||
|
|
||||||
const filter = $derived([
|
const filter = $derived([
|
||||||
{ cluster: { eq: cluster } },
|
{ cluster: { eq: cluster } },
|
||||||
{ node: { eq: hostname } },
|
|
||||||
{ state: ["running"] },
|
{ state: ["running"] },
|
||||||
|
{ node: { eq: hostname } },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const systemUnits = $derived.by(() => {
|
const systemUnits = $derived.by(() => {
|
||||||
|
|||||||
@@ -155,7 +155,6 @@
|
|||||||
jobsStatistics(
|
jobsStatistics(
|
||||||
filter: $jobFilter
|
filter: $jobFilter
|
||||||
page: $paging
|
page: $paging
|
||||||
sortBy: TOTALJOBS
|
|
||||||
groupBy: CLUSTER
|
groupBy: CLUSTER
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
@@ -190,7 +189,7 @@
|
|||||||
from: from.toISOString(),
|
from: from.toISOString(),
|
||||||
to: to.toISOString(),
|
to: to.toISOString(),
|
||||||
clusterFrom: clusterFrom.toISOString(),
|
clusterFrom: clusterFrom.toISOString(),
|
||||||
jobFilter: [{ state: ["running"] }, { cluster: { eq: presetCluster } }],
|
jobFilter: [{ cluster: { eq: presetCluster } }, { state: ["running"] }],
|
||||||
paging: { itemsPerPage: -1, page: 1 }, // Get all: -1
|
paging: { itemsPerPage: -1, page: 1 }, // Get all: -1
|
||||||
sorting: { field: "startTime", type: "col", order: "DESC" }
|
sorting: { field: "startTime", type: "col", order: "DESC" }
|
||||||
},
|
},
|
||||||
@@ -216,7 +215,7 @@
|
|||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
variables: {
|
variables: {
|
||||||
filter: [{ state: ["running"] }, { cluster: { eq: presetCluster} }],
|
filter: [{ cluster: { eq: presetCluster} }, { state: ["running"] }],
|
||||||
paging: pagingState // Top 10
|
paging: pagingState // Top 10
|
||||||
},
|
},
|
||||||
requestPolicy: "network-only"
|
requestPolicy: "network-only"
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
variables: {
|
variables: {
|
||||||
filter: [{ state: ["running"] }, { cluster: { eq: cluster} }],
|
filter: [{ cluster: { eq: cluster} }, { state: ["running"] }],
|
||||||
selectedHistograms: selectedHistograms
|
selectedHistograms: selectedHistograms
|
||||||
},
|
},
|
||||||
requestPolicy: "network-only"
|
requestPolicy: "network-only"
|
||||||
|
|||||||
@@ -163,7 +163,6 @@
|
|||||||
jobsStatistics(
|
jobsStatistics(
|
||||||
filter: $jobFilter
|
filter: $jobFilter
|
||||||
page: $paging
|
page: $paging
|
||||||
sortBy: TOTALJOBS
|
|
||||||
groupBy: SUBCLUSTER
|
groupBy: SUBCLUSTER
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
@@ -179,7 +178,7 @@
|
|||||||
metrics: ["flops_any", "mem_bw"], // Fixed names for roofline and status bars
|
metrics: ["flops_any", "mem_bw"], // Fixed names for roofline and status bars
|
||||||
from: from.toISOString(),
|
from: from.toISOString(),
|
||||||
to: to.toISOString(),
|
to: to.toISOString(),
|
||||||
jobFilter: [{ state: ["running"] }, { cluster: { eq: cluster } }],
|
jobFilter: [{ cluster: { eq: cluster } }, { state: ["running"] }],
|
||||||
nodeFilter: { cluster: { eq: cluster }},
|
nodeFilter: { cluster: { eq: cluster }},
|
||||||
paging: { itemsPerPage: -1, page: 1 }, // Get all: -1
|
paging: { itemsPerPage: -1, page: 1 }, // Get all: -1
|
||||||
sorting: { field: "startTime", type: "col", order: "DESC" }
|
sorting: { field: "startTime", type: "col", order: "DESC" }
|
||||||
|
|||||||
@@ -60,11 +60,11 @@
|
|||||||
const statusFilter = $derived(
|
const statusFilter = $derived(
|
||||||
presetSubCluster
|
presetSubCluster
|
||||||
? [
|
? [
|
||||||
{ state: ["running"] },
|
|
||||||
{ cluster: { eq: presetCluster } },
|
{ cluster: { eq: presetCluster } },
|
||||||
{ subCluster: { eq: presetSubCluster } },
|
{ subCluster: { eq: presetSubCluster } },
|
||||||
|
{ state: ["running"] },
|
||||||
]
|
]
|
||||||
: [{ state: ["running"] }, { cluster: { eq: presetCluster } }],
|
: [{ cluster: { eq: presetCluster } }, { state: ["running"] }],
|
||||||
);
|
);
|
||||||
const topStatsQuery = $derived(
|
const topStatsQuery = $derived(
|
||||||
loadMe
|
loadMe
|
||||||
@@ -585,4 +585,3 @@
|
|||||||
>Cannot render accelerator status charts: No data!</Card
|
>Cannot render accelerator status charts: No data!</Card
|
||||||
>
|
>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
|||||||
@@ -63,8 +63,8 @@
|
|||||||
/* Derived */
|
/* Derived */
|
||||||
const filter = $derived([
|
const filter = $derived([
|
||||||
{ cluster: { eq: cluster } },
|
{ cluster: { eq: cluster } },
|
||||||
{ node: { contains: nodeData.host } },
|
|
||||||
{ state: ["running"] },
|
{ state: ["running"] },
|
||||||
|
{ node: { contains: nodeData.host } },
|
||||||
]);
|
]);
|
||||||
const nodeJobsData = $derived(queryStore({
|
const nodeJobsData = $derived(queryStore({
|
||||||
client: client,
|
client: client,
|
||||||
|
|||||||
Reference in New Issue
Block a user