diff --git a/app/origin_host.go b/app/origin_host.go index 3a5cdfd3b..03e7921aa 100644 --- a/app/origin_host.go +++ b/app/origin_host.go @@ -30,7 +30,7 @@ func getOriginHost(t report.Topology, nodeID string) (OriginHost, bool) { return OriginHost{ Hostname: h.Metadata[host.HostName], OS: h.Metadata[host.OS], - Networks: strings.Split(h.Metadata[host.LocalNetworks], " "), + Networks: h.Sets[host.LocalNetworks], Load: h.Metadata[host.Load], }, true } diff --git a/probe/host/reporter.go b/probe/host/reporter.go index c0226f011..ab4ca9249 100644 --- a/probe/host/reporter.go +++ b/probe/host/reporter.go @@ -2,7 +2,6 @@ package host import ( "runtime" - "strings" "time" "github.com/weaveworks/scope/report" @@ -71,11 +70,12 @@ func (r *Reporter) Report() (report.Report, error) { rep.Host.AddNode(report.MakeHostNodeID(r.hostID), report.MakeNodeWith(map[string]string{ Timestamp: Now(), HostName: r.hostName, - LocalNetworks: strings.Join(localCIDRs, " "), OS: runtime.GOOS, Load: GetLoad(), KernelVersion: kernel, Uptime: uptime.String(), + }).WithSets(report.Sets{ + LocalNetworks: report.MakeStringSet(localCIDRs...), })) return rep, nil diff --git a/probe/host/reporter_test.go b/probe/host/reporter_test.go index d41d47e47..48529294b 100644 --- a/probe/host/reporter_test.go +++ b/probe/host/reporter_test.go @@ -48,11 +48,12 @@ func TestReporter(t *testing.T) { want.Host.AddNode(report.MakeHostNodeID(hostID), report.MakeNodeWith(map[string]string{ host.Timestamp: now, host.HostName: hostname, - host.LocalNetworks: network, host.OS: runtime.GOOS, host.Load: load, host.Uptime: uptime, host.KernelVersion: kernel, + }).WithSets(report.Sets{ + host.LocalNetworks: report.MakeStringSet(network), })) have, _ := host.NewReporter(hostID, hostname, localNets).Report() if !reflect.DeepEqual(want, have) { diff --git a/render/short_lived_connections_test.go b/render/short_lived_connections_test.go index 7461a5bd5..8f36c9507 100644 --- a/render/short_lived_connections_test.go +++ b/render/short_lived_connections_test.go @@ -7,6 +7,7 @@ import ( "github.com/weaveworks/scope/probe/docker" "github.com/weaveworks/scope/probe/endpoint" + "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/render" "github.com/weaveworks/scope/report" "github.com/weaveworks/scope/test" @@ -48,9 +49,9 @@ var ( Container: report.Topology{ Nodes: report.Nodes{ containerNodeID: report.MakeNode().WithMetadata(map[string]string{ - docker.ContainerID: containerID, - docker.ContainerName: containerName, - report.HostNodeID: serverHostNodeID, + docker.ContainerID: containerID, + docker.ContainerName: containerName, + report.HostNodeID: serverHostNodeID, }).WithSets(report.Sets{ docker.ContainerIPs: report.MakeStringSet(containerIP), docker.ContainerPorts: report.MakeStringSet(fmt.Sprintf("%s:%s->%s/tcp", serverIP, serverPort, serverPort)), @@ -60,8 +61,9 @@ var ( Host: report.Topology{ Nodes: report.Nodes{ serverHostNodeID: report.MakeNodeWith(map[string]string{ - "local_networks": "192.168.0.0/16", report.HostNodeID: serverHostNodeID, + }).WithSets(report.Sets{ + host.LocalNetworks: report.MakeStringSet("192.168.0.0/16"), }), }, }, diff --git a/render/theinternet.go b/render/theinternet.go index 4dc291381..4e67bb820 100644 --- a/render/theinternet.go +++ b/render/theinternet.go @@ -2,7 +2,6 @@ package render import ( "net" - "strings" "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/report" @@ -19,11 +18,7 @@ func LocalNetworks(r report.Report) report.Networks { ) for _, md := range r.Host.Nodes { - val, ok := md.Metadata[host.LocalNetworks] - if !ok { - continue - } - for _, s := range strings.Fields(val) { + for _, s := range md.Sets[host.LocalNetworks] { _, ipNet, err := net.ParseCIDR(s) if err != nil { continue diff --git a/render/theinternet_test.go b/render/theinternet_test.go index 6d5744d0d..9abfdcb1f 100644 --- a/render/theinternet_test.go +++ b/render/theinternet_test.go @@ -16,8 +16,9 @@ func TestReportLocalNetworks(t *testing.T) { Host: report.Topology{ Nodes: report.Nodes{ "nonets": report.MakeNode(), - "foo": report.MakeNodeWith(map[string]string{ - host.LocalNetworks: "10.0.0.1/8 192.168.1.1/24 10.0.0.1/8 badnet/33", + "foo": report.MakeNode().WithSets(report.Sets{ + host.LocalNetworks: report.MakeStringSet( + "10.0.0.1/8", "192.168.1.1/24", "10.0.0.1/8", "badnet/33"), }), }, }, diff --git a/test/fixture/report_fixture.go b/test/fixture/report_fixture.go index 7e09d5a88..15b2aab6a 100644 --- a/test/fixture/report_fixture.go +++ b/test/fixture/report_fixture.go @@ -5,6 +5,7 @@ import ( "github.com/weaveworks/scope/probe/docker" "github.com/weaveworks/scope/probe/endpoint" + "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/probe/kubernetes" "github.com/weaveworks/scope/probe/process" "github.com/weaveworks/scope/render" @@ -282,17 +283,19 @@ var ( Nodes: report.Nodes{ ClientHostNodeID: report.MakeNodeWith(map[string]string{ "host_name": ClientHostName, - "local_networks": "10.10.10.0/24", "os": "Linux", "load": "0.01 0.01 0.01", report.HostNodeID: ClientHostNodeID, + }).WithSets(report.Sets{ + host.LocalNetworks: report.MakeStringSet("10.10.10.0/24"), }), ServerHostNodeID: report.MakeNodeWith(map[string]string{ "host_name": ServerHostName, - "local_networks": "10.10.10.0/24", "os": "Linux", "load": "0.01 0.01 0.01", report.HostNodeID: ServerHostNodeID, + }).WithSets(report.Sets{ + host.LocalNetworks: report.MakeStringSet("10.10.10.0/24"), }), }, },