mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2025-04-19 18:21:42 +02:00
fix metricconfig pointer copy, add disabled metric card in jobView
- skips disabled metrics in backend, see cc-backend tries to retrieve "removed" metrics #377
This commit is contained in:
parent
a6784b5549
commit
29ae2423f8
@ -302,6 +302,20 @@ func (ccms *CCMetricStore) buildQueries(
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skip if metric is removed for subcluster
|
||||||
|
if len(mc.SubClusters) != 0 {
|
||||||
|
isRemoved := false
|
||||||
|
for _, scConfig := range mc.SubClusters {
|
||||||
|
if scConfig.Name == job.SubCluster && scConfig.Remove == true {
|
||||||
|
isRemoved = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if isRemoved {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Avoid duplicates...
|
// Avoid duplicates...
|
||||||
handledScopes := make([]schema.MetricScope, 0, 3)
|
handledScopes := make([]schema.MetricScope, 0, 3)
|
||||||
|
|
||||||
@ -985,6 +999,20 @@ func (ccms *CCMetricStore) buildNodeQueries(
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skip if metric is removed for subcluster
|
||||||
|
if mc.SubClusters != nil {
|
||||||
|
isRemoved := false
|
||||||
|
for _, scConfig := range mc.SubClusters {
|
||||||
|
if scConfig.Name == subCluster && scConfig.Remove == true {
|
||||||
|
isRemoved = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if isRemoved {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Avoid duplicates...
|
// Avoid duplicates...
|
||||||
handledScopes := make([]schema.MetricScope, 0, 3)
|
handledScopes := make([]schema.MetricScope, 0, 3)
|
||||||
|
|
||||||
|
@ -68,8 +68,23 @@ func initClusterConfig() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, sc := range cluster.SubClusters {
|
for _, sc := range cluster.SubClusters {
|
||||||
newMetric := mc
|
newMetric := &schema.MetricConfig{
|
||||||
newMetric.SubClusters = nil
|
Unit: mc.Unit,
|
||||||
|
Energy: mc.Energy,
|
||||||
|
Name: mc.Name,
|
||||||
|
Scope: mc.Scope,
|
||||||
|
Aggregation: mc.Aggregation,
|
||||||
|
Peak: mc.Peak,
|
||||||
|
Caution: mc.Caution,
|
||||||
|
Alert: mc.Alert,
|
||||||
|
Timestep: mc.Timestep,
|
||||||
|
Normal: mc.Normal,
|
||||||
|
LowerIsBetter: mc.LowerIsBetter,
|
||||||
|
}
|
||||||
|
|
||||||
|
if mc.Footprint != "" {
|
||||||
|
newMetric.Footprint = mc.Footprint
|
||||||
|
}
|
||||||
|
|
||||||
if cfg, ok := scLookup[sc.Name]; ok {
|
if cfg, ok := scLookup[sc.Name]; ok {
|
||||||
if !cfg.Remove {
|
if !cfg.Remove {
|
||||||
|
@ -129,8 +129,7 @@
|
|||||||
ccconfig[`job_view_selectedMetrics:${job.cluster}:${job.subCluster}`] ||
|
ccconfig[`job_view_selectedMetrics:${job.cluster}:${job.subCluster}`] ||
|
||||||
ccconfig[`job_view_selectedMetrics:${job.cluster}`]
|
ccconfig[`job_view_selectedMetrics:${job.cluster}`]
|
||||||
) ||
|
) ||
|
||||||
$initq.data.globalMetrics
|
$initq.data.globalMetrics.reduce((names, gm) => {
|
||||||
.reduce((names, gm) => {
|
|
||||||
if (gm.availability.find((av) => av.cluster === job.cluster && av.subClusters.includes(job.subCluster))) {
|
if (gm.availability.find((av) => av.cluster === job.cluster && av.subClusters.includes(job.subCluster))) {
|
||||||
names.push(gm.name);
|
names.push(gm.name);
|
||||||
}
|
}
|
||||||
@ -338,10 +337,25 @@
|
|||||||
scopes={item.data.map((x) => x.scope)}
|
scopes={item.data.map((x) => x.scope)}
|
||||||
isShared={$initq.data.job.exclusive != 1}
|
isShared={$initq.data.job.exclusive != 1}
|
||||||
/>
|
/>
|
||||||
|
{:else if item.disabled == true}
|
||||||
|
<Card color="info">
|
||||||
|
<CardHeader class="mb-0">
|
||||||
|
<b>Disabled Metric</b>
|
||||||
|
</CardHeader>
|
||||||
|
<CardBody>
|
||||||
|
<p>Metric <b>{item.metric}</b> is disabled for subcluster <b>{$initq.data.job.subCluster}</b>.</p>
|
||||||
|
<p class="mb-1">To remove this card, open metric selection and press "Close and Apply".</p>
|
||||||
|
</CardBody>
|
||||||
|
</Card>
|
||||||
{:else}
|
{:else}
|
||||||
<Card body color="warning" class="mt-2"
|
<Card color="warning" class="mt-2">
|
||||||
>No dataset returned for <code>{item.metric}</code></Card
|
<CardHeader class="mb-0">
|
||||||
>
|
<b>Missing Metric</b>
|
||||||
|
</CardHeader>
|
||||||
|
<CardBody>
|
||||||
|
<p class="mb-1">No dataset returned for <b>{item.metric}</b>.</p>
|
||||||
|
</CardBody>
|
||||||
|
</Card>
|
||||||
{/if}
|
{/if}
|
||||||
</PlotGrid>
|
</PlotGrid>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import {
|
import {
|
||||||
getContext,
|
getContext,
|
||||||
createEventDispatcher
|
|
||||||
} from "svelte";
|
} from "svelte";
|
||||||
import {
|
import {
|
||||||
queryStore,
|
queryStore,
|
||||||
@ -56,7 +55,6 @@
|
|||||||
let pendingZoomState = null;
|
let pendingZoomState = null;
|
||||||
let thresholdState = null;
|
let thresholdState = null;
|
||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
|
||||||
const statsPattern = /(.*)-stat$/;
|
const statsPattern = /(.*)-stat$/;
|
||||||
const unit = (metricUnit?.prefix ? metricUnit.prefix : "") + (metricUnit?.base ? metricUnit.base : "");
|
const unit = (metricUnit?.prefix ? metricUnit.prefix : "") + (metricUnit?.base ? metricUnit.base : "");
|
||||||
const client = getContextClient();
|
const client = getContextClient();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user