diff --git a/pkg/archive/clusterConfig.go b/pkg/archive/clusterConfig.go index 3e27e415..48fc5e48 100644 --- a/pkg/archive/clusterConfig.go +++ b/pkg/archive/clusterConfig.go @@ -198,36 +198,19 @@ func GetSubCluster(cluster, subcluster string) (*schema.SubCluster, error) { func GetMetricConfigSubCluster(cluster, subcluster string) map[string]*schema.Metric { metrics := make(map[string]*schema.Metric) - for _, c := range Clusters { - if c.Name == cluster { - for _, m := range c.MetricConfig { - for _, s := range m.SubClusters { - if s.Name == subcluster { - metrics[m.Name] = &schema.Metric{ - Name: m.Name, - Unit: s.Unit, - Peak: s.Peak, - Normal: s.Normal, - Caution: s.Caution, - Alert: s.Alert, - } - break - } - } + sc, err := GetSubCluster(cluster, subcluster) + if err != nil { + return metrics + } - _, ok := metrics[m.Name] - if !ok { - metrics[m.Name] = &schema.Metric{ - Name: m.Name, - Unit: m.Unit, - Peak: m.Peak, - Normal: m.Normal, - Caution: m.Caution, - Alert: m.Alert, - } - } - } - break + for _, m := range sc.MetricConfig { + metrics[m.Name] = &schema.Metric{ + Name: m.Name, + Unit: m.Unit, + Peak: m.Peak, + Normal: m.Normal, + Caution: m.Caution, + Alert: m.Alert, } } diff --git a/pkg/archive/clusterConfig_test.go b/pkg/archive/clusterConfig_test.go index 510c1747..7c3d8bea 100644 --- a/pkg/archive/clusterConfig_test.go +++ b/pkg/archive/clusterConfig_test.go @@ -37,3 +37,27 @@ func TestClusterConfig(t *testing.T) { // spew.Dump(archive.GlobalMetricList) // t.Fail() } + +func TestGetMetricConfigSubClusterRespectsRemovedMetrics(t *testing.T) { + if err := archive.Init(json.RawMessage(`{"kind": "file","path": "testdata/archive"}`)); err != nil { + t.Fatal(err) + } + + sc, err := archive.GetSubCluster("fritz", "spr2tb") + if err != nil { + t.Fatal(err) + } + + metrics := archive.GetMetricConfigSubCluster("fritz", "spr2tb") + if len(metrics) != len(sc.MetricConfig) { + t.Fatalf("GetMetricConfigSubCluster() returned %d metrics, want %d", len(metrics), len(sc.MetricConfig)) + } + + if _, ok := metrics["flops_any"]; ok { + t.Fatalf("GetMetricConfigSubCluster() returned removed metric flops_any for subcluster spr2tb") + } + + if _, ok := metrics["cpu_power"]; !ok { + t.Fatalf("GetMetricConfigSubCluster() missing active metric cpu_power for subcluster spr2tb") + } +}