From 15467d73106cef57858e9436f6faf1b577e78517 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Thu, 12 Sep 2019 13:21:32 +0000 Subject: [PATCH] Move host-related names out of probe code Reduce the dependency on low-level libraries --- app/api_report.go | 5 ++--- probe/docker/reporter.go | 3 +-- probe/docker/reporter_test.go | 3 +-- probe/host/reporter.go | 20 ++++++++++---------- probe/overlay/weave.go | 3 +-- probe/overlay/weave_test.go | 3 +-- render/detailed/node_test.go | 7 +++---- render/detailed/summary_test.go | 9 ++++----- render/expected/expected.go | 3 +-- render/short_lived_connections_test.go | 3 +-- render/theinternet.go | 3 +-- render/theinternet_test.go | 5 ++--- report/map_keys.go | 22 ++++++++++++++++++++++ test/fixture/report_fixture.go | 16 ++++++++-------- 14 files changed, 58 insertions(+), 47 deletions(-) diff --git a/app/api_report.go b/app/api_report.go index 5c8b0dff6..82852a18e 100644 --- a/app/api_report.go +++ b/app/api_report.go @@ -6,7 +6,6 @@ import ( "context" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/report" ) @@ -52,8 +51,8 @@ func makeProbeHandler(rep Reporter) CtxHandlerFunc { result := []probeDesc{} for _, n := range rpt.Host.Nodes { id, _ := n.Latest.Lookup(report.ControlProbeID) - hostname, _ := n.Latest.Lookup(host.HostName) - version, dt, _ := n.Latest.LookupEntry(host.ScopeVersion) + hostname, _ := n.Latest.Lookup(report.HostName) + version, dt, _ := n.Latest.LookupEntry(report.ScopeVersion) result = append(result, probeDesc{ ID: id, Hostname: hostname, diff --git a/probe/docker/reporter.go b/probe/docker/reporter.go index be7345b62..9ab95da66 100644 --- a/probe/docker/reporter.go +++ b/probe/docker/reporter.go @@ -8,7 +8,6 @@ import ( docker_client "github.com/fsouza/go-dockerclient" "github.com/weaveworks/scope/probe" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/report" ) @@ -306,7 +305,7 @@ func (r *Reporter) overlayTopology() report.Topology { // Add both local and global networks to the LocalNetworks Set // since we treat container IPs as local node := report.MakeNode(report.MakeOverlayNodeID(report.DockerOverlayPeerPrefix, r.hostID)).WithSets( - report.MakeSets().Add(host.LocalNetworks, report.MakeStringSet(subnets...))) + report.MakeSets().Add(report.HostLocalNetworks, report.MakeStringSet(subnets...))) t := report.MakeTopology() t.AddNode(node) return t diff --git a/probe/docker/reporter_test.go b/probe/docker/reporter_test.go index a6d48bb72..9bd49cf2a 100644 --- a/probe/docker/reporter_test.go +++ b/probe/docker/reporter_test.go @@ -6,7 +6,6 @@ import ( client "github.com/fsouza/go-dockerclient" "github.com/weaveworks/scope/probe/docker" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/report" ) @@ -141,7 +140,7 @@ func TestReporter(t *testing.T) { } want := "5.6.7.8/24" - if have, ok := node.Sets.Lookup(host.LocalNetworks); !ok || len(have) != 1 || have[0] != want { + if have, ok := node.Sets.Lookup(report.HostLocalNetworks); !ok || len(have) != 1 || have[0] != want { t.Fatalf("Expected node to have exactly local network %v but found %v", want, have) } diff --git a/probe/host/reporter.go b/probe/host/reporter.go index fd9502ea4..cb53841b0 100644 --- a/probe/host/reporter.go +++ b/probe/host/reporter.go @@ -14,16 +14,16 @@ import ( // Keys for use in Node.Latest. const ( - Timestamp = "ts" - HostName = "host_name" - LocalNetworks = "local_networks" - OS = "os" - KernelVersion = "kernel_version" - Uptime = "uptime" - Load1 = "load1" - CPUUsage = "host_cpu_usage_percent" - MemoryUsage = "host_mem_usage_bytes" - ScopeVersion = "host_scope_version" + Timestamp = report.Timestamp + HostName = report.HostName + LocalNetworks = report.HostLocalNetworks + OS = report.OS + KernelVersion = report.KernelVersion + Uptime = report.Uptime + Load1 = report.Load1 + CPUUsage = report.CPUUsage + MemoryUsage = report.MemoryUsage + ScopeVersion = report.ScopeVersion ) // Exposed for testing. diff --git a/probe/overlay/weave.go b/probe/overlay/weave.go index 37b0e88a4..cdea569de 100644 --- a/probe/overlay/weave.go +++ b/probe/overlay/weave.go @@ -10,7 +10,6 @@ import ( "github.com/weaveworks/common/backoff" "github.com/weaveworks/scope/common/weave" "github.com/weaveworks/scope/probe/docker" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/report" ) @@ -249,7 +248,7 @@ func (w *Weave) Report() (report.Report, error) { if w.statusCache.IPAM != nil { r.Overlay.AddNode( report.MakeNode(report.MakeOverlayNodeID(report.WeaveOverlayPeerPrefix, w.statusCache.Router.Name)). - WithSet(host.LocalNetworks, report.MakeStringSet(w.statusCache.IPAM.DefaultSubnet)), + WithSet(report.HostLocalNetworks, report.MakeStringSet(w.statusCache.IPAM.DefaultSubnet)), ) } return r, nil diff --git a/probe/overlay/weave_test.go b/probe/overlay/weave_test.go index 5e248a0c7..0428a3fdc 100644 --- a/probe/overlay/weave_test.go +++ b/probe/overlay/weave_test.go @@ -5,7 +5,6 @@ import ( "time" "github.com/weaveworks/scope/probe/docker" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/probe/overlay" "github.com/weaveworks/scope/report" "github.com/weaveworks/scope/test" @@ -82,7 +81,7 @@ func TestOverlayTopology(t *testing.T) { if peerNick, ok := node.Latest.Lookup(overlay.WeavePeerNickName); !ok || peerNick != weave.MockWeavePeerNickName { t.Errorf("Expected weave peer nickname %q, got %q", weave.MockWeavePeerNickName, peerNick) } - if localNetworks, ok := node.Sets.Lookup(host.LocalNetworks); !ok || !reflect.DeepEqual(localNetworks, report.MakeStringSet(weave.MockWeaveDefaultSubnet)) { + if localNetworks, ok := node.Sets.Lookup(report.HostLocalNetworks); !ok || !reflect.DeepEqual(localNetworks, report.MakeStringSet(weave.MockWeaveDefaultSubnet)) { t.Errorf("Expected weave node local_networks %q, got %q", report.MakeStringSet(weave.MockWeaveDefaultSubnet), localNetworks) } // The weave proxy container is running diff --git a/render/detailed/node_test.go b/render/detailed/node_test.go index 5e5f9e635..9bf3ffba9 100644 --- a/render/detailed/node_test.go +++ b/render/detailed/node_test.go @@ -7,7 +7,6 @@ import ( "github.com/weaveworks/common/test" "github.com/weaveworks/scope/probe/docker" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/probe/kubernetes" "github.com/weaveworks/scope/probe/process" "github.com/weaveworks/scope/render" @@ -74,7 +73,7 @@ func TestMakeDetailedHostNode(t *testing.T) { }, Metrics: []report.MetricRow{ { - ID: host.CPUUsage, + ID: report.CPUUsage, Label: "CPU", Format: "percent", Value: 0.07, @@ -82,7 +81,7 @@ func TestMakeDetailedHostNode(t *testing.T) { Metric: &fixture.ClientHostCPUMetric, }, { - ID: host.MemoryUsage, + ID: report.MemoryUsage, Label: "Memory", Format: "filesize", Value: 0.08, @@ -90,7 +89,7 @@ func TestMakeDetailedHostNode(t *testing.T) { Metric: &fixture.ClientHostMemoryMetric, }, { - ID: host.Load1, + ID: report.Load1, Label: "Load (1m)", Group: "load", Value: 0.09, diff --git a/render/detailed/summary_test.go b/render/detailed/summary_test.go index 814597880..e465cbb45 100644 --- a/render/detailed/summary_test.go +++ b/render/detailed/summary_test.go @@ -9,7 +9,6 @@ import ( "github.com/weaveworks/common/mtime" "github.com/weaveworks/common/test" "github.com/weaveworks/scope/probe/docker" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/probe/process" "github.com/weaveworks/scope/render" "github.com/weaveworks/scope/render/detailed" @@ -173,7 +172,7 @@ func TestMakeNodeSummary(t *testing.T) { Tag: "", }, Metadata: []report.MetadataRow{ - {ID: host.HostName, Label: "Hostname", Value: fixture.ClientHostName, Priority: 11}, + {ID: report.HostName, Label: "Hostname", Value: fixture.ClientHostName, Priority: 11}, }, Adjacency: report.MakeIDList(fixture.ServerHostNodeID), }, @@ -337,7 +336,7 @@ func TestNodeMetrics(t *testing.T) { node: fixture.Report.Host.Nodes[fixture.ClientHostNodeID], want: []report.MetricRow{ { - ID: host.CPUUsage, + ID: report.CPUUsage, Label: "CPU", Format: "percent", Group: "", @@ -346,7 +345,7 @@ func TestNodeMetrics(t *testing.T) { Metric: &fixture.ClientHostCPUMetric, }, { - ID: host.MemoryUsage, + ID: report.MemoryUsage, Label: "Memory", Format: "filesize", Group: "", @@ -355,7 +354,7 @@ func TestNodeMetrics(t *testing.T) { Metric: &fixture.ClientHostMemoryMetric, }, { - ID: host.Load1, + ID: report.Load1, Label: "Load (1m)", Group: "load", Value: 0.09, diff --git a/render/expected/expected.go b/render/expected/expected.go index adac162bb..f5f478de0 100644 --- a/render/expected/expected.go +++ b/render/expected/expected.go @@ -2,7 +2,6 @@ package expected import ( "github.com/weaveworks/scope/probe/docker" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/probe/kubernetes" "github.com/weaveworks/scope/probe/process" "github.com/weaveworks/scope/render" @@ -345,7 +344,7 @@ var ( RenderedHosts = report.Nodes{ fixture.ClientHostNodeID: hostNode(fixture.ClientHostNodeID, fixture.ServerHostNodeID). WithLatests(map[string]string{ - host.HostName: fixture.ClientHostName, + report.HostName: fixture.ClientHostName, }). WithChildren(report.MakeNodeSet( RenderedEndpoints[fixture.Client54001NodeID], diff --git a/render/short_lived_connections_test.go b/render/short_lived_connections_test.go index 673fdc5dd..f367a3d57 100644 --- a/render/short_lived_connections_test.go +++ b/render/short_lived_connections_test.go @@ -8,7 +8,6 @@ import ( "github.com/weaveworks/common/mtime" "github.com/weaveworks/scope/probe/docker" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/render" "github.com/weaveworks/scope/report" "github.com/weaveworks/scope/test/utils" @@ -102,7 +101,7 @@ var ( report.HostNodeID: serverHostNodeID, }). WithSets(report.MakeSets(). - Add(host.LocalNetworks, report.MakeStringSet("192.168.0.0/16")), + Add(report.HostLocalNetworks, report.MakeStringSet("192.168.0.0/16")), ).WithTopology(report.Host), }, }, diff --git a/render/theinternet.go b/render/theinternet.go index d0bc5e4f8..7d477f37e 100644 --- a/render/theinternet.go +++ b/render/theinternet.go @@ -7,7 +7,6 @@ import ( "github.com/camlistore/camlistore/pkg/lru" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/report" ) @@ -77,7 +76,7 @@ func LocalNetworks(r report.Report) report.Networks { for _, topology := range []report.Topology{r.Host, r.Overlay} { for _, md := range topology.Nodes { - nets, _ := md.Sets.Lookup(host.LocalNetworks) + nets, _ := md.Sets.Lookup(report.HostLocalNetworks) for _, s := range nets { networks.AddCIDR(s) } diff --git a/render/theinternet_test.go b/render/theinternet_test.go index dd650d163..a040d6772 100644 --- a/render/theinternet_test.go +++ b/render/theinternet_test.go @@ -5,7 +5,6 @@ import ( "testing" "github.com/weaveworks/common/test" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/render" "github.com/weaveworks/scope/report" ) @@ -16,7 +15,7 @@ func TestReportLocalNetworks(t *testing.T) { Nodes: report.Nodes{ "nonets": report.MakeNode("nonets"), "foo": report.MakeNode("foo").WithSets(report.MakeSets(). - Add(host.LocalNetworks, report.MakeStringSet( + Add(report.HostLocalNetworks, report.MakeStringSet( "10.0.0.1/8", "192.168.1.1/24", "10.0.0.1/8", "badnet/33")), ), }, @@ -24,7 +23,7 @@ func TestReportLocalNetworks(t *testing.T) { Overlay: report.Topology{ Nodes: report.Nodes{ "router": report.MakeNode("router").WithSets(report.MakeSets(). - Add(host.LocalNetworks, report.MakeStringSet("10.32.0.1/12")), + Add(report.HostLocalNetworks, report.MakeStringSet("10.32.0.1/12")), ), }, }, diff --git a/report/map_keys.go b/report/map_keys.go index 9e4eb3d64..dc9a30349 100644 --- a/report/map_keys.go +++ b/report/map_keys.go @@ -97,6 +97,17 @@ const ( ECSServiceRunningCount = "ecs_service_running_count" ECSScaleUp = "ecs_scale_up" ECSScaleDown = "ecs_scale_down" + // probe/host + Timestamp = "ts" + HostName = "host_name" + HostLocalNetworks = "local_networks" + OS = "os" + KernelVersion = "kernel_version" + Uptime = "uptime" + Load1 = "load1" + CPUUsage = "host_cpu_usage_percent" + MemoryUsage = "host_mem_usage_bytes" + ScopeVersion = "host_scope_version" ) /* Lookup table to allow msgpack/json decoder to avoid heap allocation @@ -208,6 +219,17 @@ var commonKeys = map[string]string{ ECSServiceRunningCount: ECSServiceRunningCount, ECSScaleUp: ECSScaleUp, ECSScaleDown: ECSScaleDown, + + Timestamp: Timestamp, + HostName: HostName, + HostLocalNetworks: HostLocalNetworks, + OS: OS, + KernelVersion: KernelVersion, + Uptime: Uptime, + Load1: Load1, + CPUUsage: CPUUsage, + MemoryUsage: MemoryUsage, + ScopeVersion: ScopeVersion, } func lookupCommonKey(b []byte) string { diff --git a/test/fixture/report_fixture.go b/test/fixture/report_fixture.go index 2ea0608bb..771ff9338 100644 --- a/test/fixture/report_fixture.go +++ b/test/fixture/report_fixture.go @@ -297,11 +297,11 @@ var ( report.HostNodeID: ClientHostNodeID, }). WithTopology(report.Host).WithSets(report.MakeSets(). - Add(host.LocalNetworks, report.MakeStringSet("10.10.10.0/24")), + Add(report.HostLocalNetworks, report.MakeStringSet("10.10.10.0/24")), ).WithMetrics(report.Metrics{ - host.CPUUsage: ClientHostCPUMetric, - host.MemoryUsage: ClientHostMemoryMetric, - host.Load1: ClientHostLoad1Metric, + report.CPUUsage: ClientHostCPUMetric, + report.MemoryUsage: ClientHostMemoryMetric, + report.Load1: ClientHostLoad1Metric, }), ServerHostNodeID: report.MakeNodeWith( @@ -311,11 +311,11 @@ var ( report.HostNodeID: ServerHostNodeID, }). WithTopology(report.Host).WithSets(report.MakeSets(). - Add(host.LocalNetworks, report.MakeStringSet("10.10.10.0/24")), + Add(report.HostLocalNetworks, report.MakeStringSet("10.10.10.0/24")), ).WithMetrics(report.Metrics{ - host.CPUUsage: ServerHostCPUMetric, - host.MemoryUsage: ServerHostMemoryMetric, - host.Load1: ServerHostLoad1Metric, + report.CPUUsage: ServerHostCPUMetric, + report.MemoryUsage: ServerHostMemoryMetric, + report.Load1: ServerHostLoad1Metric, }), }, MetadataTemplates: host.MetadataTemplates,