X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6e8c3cc1fe4328b708d5979e27632835f74261fb..refs/heads/test-group-contents-trash-filter:/sdk/go/health/aggregator.go diff --git a/sdk/go/health/aggregator.go b/sdk/go/health/aggregator.go index 297a861708..a6cb8798aa 100644 --- a/sdk/go/health/aggregator.go +++ b/sdk/go/health/aggregator.go @@ -1,3 +1,7 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: Apache-2.0 + package health import ( @@ -83,7 +87,7 @@ type ClusterHealthResponse struct { // exposes problems that can't be expressed in Checks, like // "service S is needed, but isn't configured to run // anywhere." - Services map[string]ServiceHealth `json:"services"` + Services map[arvados.ServiceName]ServiceHealth `json:"services"` } type CheckResult struct { @@ -104,13 +108,13 @@ func (agg *Aggregator) ClusterHealth(cluster *arvados.Cluster) ClusterHealthResp resp := ClusterHealthResponse{ Health: "OK", Checks: make(map[string]CheckResult), - Services: make(map[string]ServiceHealth), + Services: make(map[arvados.ServiceName]ServiceHealth), } mtx := sync.Mutex{} wg := sync.WaitGroup{} - for node, nodeConfig := range cluster.SystemNodes { - for svc, addr := range nodeConfig.ServicePorts() { + for profileName, profile := range cluster.NodeProfiles { + for svc, addr := range profile.ServicePorts() { // Ensure svc is listed in resp.Services. mtx.Lock() if _, ok := resp.Services[svc]; !ok { @@ -124,10 +128,10 @@ func (agg *Aggregator) ClusterHealth(cluster *arvados.Cluster) ClusterHealthResp } wg.Add(1) - go func(node, svc, addr string) { + go func(profileName string, svc arvados.ServiceName, addr string) { defer wg.Done() var result CheckResult - url, err := agg.pingURL(node, addr) + url, err := agg.pingURL(profileName, addr) if err != nil { result = CheckResult{ Health: "ERROR", @@ -139,7 +143,7 @@ func (agg *Aggregator) ClusterHealth(cluster *arvados.Cluster) ClusterHealthResp mtx.Lock() defer mtx.Unlock() - resp.Checks[svc+"+"+url] = result + resp.Checks[fmt.Sprintf("%s+%s", svc, url)] = result if result.Health == "OK" { h := resp.Services[svc] h.N++ @@ -148,7 +152,7 @@ func (agg *Aggregator) ClusterHealth(cluster *arvados.Cluster) ClusterHealthResp } else { resp.Health = "ERROR" } - }(node, svc, addr) + }(profileName, svc, addr) } } wg.Wait()