mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-27 17:21:34 +00:00
get rid of Node.Copy()
A shallow copy is sufficient. Which we get for free in most cases since Node is passed around by value.
This commit is contained in:
committed by
Alfonso Acosta
parent
e42444c2e5
commit
1091225bf6
@@ -17,7 +17,7 @@ func TestTagger(t *testing.T) {
|
||||
r := report.MakeReport()
|
||||
r.Process.AddNode(node)
|
||||
rpt, _ := host.NewTagger(hostID).Tag(r)
|
||||
have := rpt.Process.Nodes[endpointNodeID].Copy()
|
||||
have := rpt.Process.Nodes[endpointNodeID]
|
||||
|
||||
// It should now have the host ID
|
||||
wantHostID := report.MakeHostNodeID(hostID)
|
||||
|
||||
@@ -191,13 +191,12 @@ func (r containerWithImageNameRenderer) Render(rpt report.Report, dct Decorator)
|
||||
imageNameWithoutVersion := docker.ImageNameWithoutVersion(imageName)
|
||||
imageNodeID := report.MakeContainerImageNodeID(imageNameWithoutVersion)
|
||||
|
||||
output := c.Copy()
|
||||
output = propagateLatest(docker.ImageName, image, output)
|
||||
output = propagateLatest(docker.ImageLabelPrefix+"works.weave.role", image, output)
|
||||
output.Parents = output.Parents.
|
||||
c = propagateLatest(docker.ImageName, image, c)
|
||||
c = propagateLatest(docker.ImageLabelPrefix+"works.weave.role", image, c)
|
||||
c.Parents = c.Parents.
|
||||
Delete(report.ContainerImage).
|
||||
Add(report.ContainerImage, report.MakeStringSet(imageNodeID))
|
||||
outputs[id] = output
|
||||
outputs[id] = c
|
||||
}
|
||||
return outputs
|
||||
}
|
||||
@@ -365,14 +364,13 @@ func MapContainerImage2Name(n report.Node, _ report.Networks) report.Nodes {
|
||||
}
|
||||
|
||||
imageNameWithoutVersion := docker.ImageNameWithoutVersion(imageName)
|
||||
output := n.Copy()
|
||||
output.ID = report.MakeContainerImageNodeID(imageNameWithoutVersion)
|
||||
n.ID = report.MakeContainerImageNodeID(imageNameWithoutVersion)
|
||||
|
||||
if imageID, ok := report.ParseContainerImageNodeID(n.ID); ok {
|
||||
output.Sets = output.Sets.Add(docker.ImageID, report.EmptyStringSet.Add(imageID))
|
||||
n.Sets = n.Sets.Add(docker.ImageID, report.EmptyStringSet.Add(imageID))
|
||||
}
|
||||
|
||||
return report.Nodes{output.ID: output}
|
||||
return report.Nodes{n.ID: n}
|
||||
}
|
||||
|
||||
// MapContainer2Hostname maps container Nodes to 'hostname' renderabled nodes..
|
||||
|
||||
@@ -75,7 +75,6 @@ func incomingConnectionsSummary(topologyID string, r report.Report, n report.Nod
|
||||
if !node.Adjacency.Contains(n.ID) {
|
||||
continue
|
||||
}
|
||||
remoteNode := node.Copy()
|
||||
|
||||
// Work out what port they are talking to, and count the number of
|
||||
// connections to that port.
|
||||
@@ -91,7 +90,7 @@ func incomingConnectionsSummary(topologyID string, r report.Report, n report.Nod
|
||||
}
|
||||
key := connection{
|
||||
localNode: &n,
|
||||
remoteNode: &remoteNode,
|
||||
remoteNode: &node,
|
||||
port: port,
|
||||
}
|
||||
if isInternetNode(n) {
|
||||
@@ -127,8 +126,7 @@ func outgoingConnectionsSummary(topologyID string, r report.Report, n report.Nod
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
remoteNode := node.Copy()
|
||||
remoteEndpointIDs := endpointChildIDsOf(remoteNode)
|
||||
remoteEndpointIDs := endpointChildIDsOf(node)
|
||||
|
||||
for _, localEndpoint := range localEndpoints {
|
||||
_, localAddr, _, ok := report.ParseEndpointNodeID(localEndpoint.ID)
|
||||
@@ -143,7 +141,7 @@ func outgoingConnectionsSummary(topologyID string, r report.Report, n report.Nod
|
||||
}
|
||||
key := connection{
|
||||
localNode: &n,
|
||||
remoteNode: &remoteNode,
|
||||
remoteNode: &node,
|
||||
port: port,
|
||||
}
|
||||
if isInternetNode(n) {
|
||||
|
||||
@@ -63,12 +63,11 @@ func (r processWithContainerNameRenderer) Render(rpt report.Report, dct Decorato
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
output := p.Copy()
|
||||
output.Latest = output.Latest.Set(docker.ContainerID, timestamp, containerID)
|
||||
p.Latest = p.Latest.Set(docker.ContainerID, timestamp, containerID)
|
||||
if containerName, timestamp, ok := container.Latest.LookupEntry(docker.ContainerName); ok {
|
||||
output.Latest = output.Latest.Set(docker.ContainerName, timestamp, containerName)
|
||||
p.Latest = p.Latest.Set(docker.ContainerName, timestamp, containerName)
|
||||
}
|
||||
outputs[id] = output
|
||||
outputs[id] = p
|
||||
}
|
||||
return outputs
|
||||
}
|
||||
|
||||
@@ -45,16 +45,14 @@ func MakeNodeWith(id string, m map[string]string) Node {
|
||||
|
||||
// WithID returns a fresh copy of n, with ID changed.
|
||||
func (n Node) WithID(id string) Node {
|
||||
result := n.Copy()
|
||||
result.ID = id
|
||||
return result
|
||||
n.ID = id
|
||||
return n
|
||||
}
|
||||
|
||||
// WithTopology returns a fresh copy of n, with ID changed.
|
||||
func (n Node) WithTopology(topology string) Node {
|
||||
result := n.Copy()
|
||||
result.Topology = topology
|
||||
return result
|
||||
n.Topology = topology
|
||||
return n
|
||||
}
|
||||
|
||||
// Before is used for sorting nodes by topology and id
|
||||
@@ -74,121 +72,92 @@ func (n Node) After(other Node) bool {
|
||||
|
||||
// WithLatests returns a fresh copy of n, with Metadata m merged in.
|
||||
func (n Node) WithLatests(m map[string]string) Node {
|
||||
result := n.Copy()
|
||||
ts := mtime.Now()
|
||||
for k, v := range m {
|
||||
result.Latest = result.Latest.Set(k, ts, v)
|
||||
n.Latest = n.Latest.Set(k, ts, v)
|
||||
}
|
||||
return result
|
||||
return n
|
||||
}
|
||||
|
||||
// WithLatest produces a new Node with k mapped to v in the Latest metadata.
|
||||
func (n Node) WithLatest(k string, ts time.Time, v string) Node {
|
||||
result := n.Copy()
|
||||
result.Latest = result.Latest.Set(k, ts, v)
|
||||
return result
|
||||
n.Latest = n.Latest.Set(k, ts, v)
|
||||
return n
|
||||
}
|
||||
|
||||
// WithCounters returns a fresh copy of n, with Counters c merged in.
|
||||
func (n Node) WithCounters(c map[string]int) Node {
|
||||
result := n.Copy()
|
||||
result.Counters = result.Counters.Merge(Counters{}.fromIntermediate(c))
|
||||
return result
|
||||
n.Counters = n.Counters.Merge(Counters{}.fromIntermediate(c))
|
||||
return n
|
||||
}
|
||||
|
||||
// WithSet returns a fresh copy of n, with set merged in at key.
|
||||
func (n Node) WithSet(key string, set StringSet) Node {
|
||||
result := n.Copy()
|
||||
result.Sets = result.Sets.Add(key, set)
|
||||
return result
|
||||
n.Sets = n.Sets.Add(key, set)
|
||||
return n
|
||||
}
|
||||
|
||||
// WithSets returns a fresh copy of n, with sets merged in.
|
||||
func (n Node) WithSets(sets Sets) Node {
|
||||
result := n.Copy()
|
||||
result.Sets = result.Sets.Merge(sets)
|
||||
return result
|
||||
n.Sets = n.Sets.Merge(sets)
|
||||
return n
|
||||
}
|
||||
|
||||
// WithMetric returns a fresh copy of n, with metric merged in at key.
|
||||
func (n Node) WithMetric(key string, metric Metric) Node {
|
||||
result := n.Copy()
|
||||
result.Metrics[key] = n.Metrics[key].Merge(metric)
|
||||
return result
|
||||
n.Metrics = n.Metrics.Copy()
|
||||
n.Metrics[key] = n.Metrics[key].Merge(metric)
|
||||
return n
|
||||
}
|
||||
|
||||
// WithMetrics returns a fresh copy of n, with metrics merged in.
|
||||
func (n Node) WithMetrics(metrics Metrics) Node {
|
||||
result := n.Copy()
|
||||
result.Metrics = result.Metrics.Merge(metrics)
|
||||
return result
|
||||
n.Metrics = n.Metrics.Merge(metrics)
|
||||
return n
|
||||
}
|
||||
|
||||
// WithAdjacent returns a fresh copy of n, with 'a' added to Adjacency
|
||||
func (n Node) WithAdjacent(a ...string) Node {
|
||||
result := n.Copy()
|
||||
result.Adjacency = result.Adjacency.Add(a...)
|
||||
return result
|
||||
n.Adjacency = n.Adjacency.Add(a...)
|
||||
return n
|
||||
}
|
||||
|
||||
// WithEdge returns a fresh copy of n, with 'dst' added to Adjacency and md
|
||||
// added to EdgeMetadata.
|
||||
func (n Node) WithEdge(dst string, md EdgeMetadata) Node {
|
||||
result := n.Copy()
|
||||
result.Adjacency = result.Adjacency.Add(dst)
|
||||
result.Edges = result.Edges.Add(dst, md)
|
||||
return result
|
||||
n.Adjacency = n.Adjacency.Add(dst)
|
||||
n.Edges = n.Edges.Add(dst, md)
|
||||
return n
|
||||
}
|
||||
|
||||
// WithControls returns a fresh copy of n, with cs added to Controls.
|
||||
func (n Node) WithControls(cs ...string) Node {
|
||||
result := n.Copy()
|
||||
result.Controls = result.Controls.Add(cs...)
|
||||
return result
|
||||
n.Controls = n.Controls.Add(cs...)
|
||||
return n
|
||||
}
|
||||
|
||||
// WithParents returns a fresh copy of n, with sets merged in.
|
||||
func (n Node) WithParents(parents Sets) Node {
|
||||
result := n.Copy()
|
||||
result.Parents = result.Parents.Merge(parents)
|
||||
return result
|
||||
n.Parents = n.Parents.Merge(parents)
|
||||
return n
|
||||
}
|
||||
|
||||
// PruneParents returns a fresh copy of n, without any parents.
|
||||
func (n Node) PruneParents() Node {
|
||||
result := n.Copy()
|
||||
result.Parents = EmptySets
|
||||
return result
|
||||
n.Parents = EmptySets
|
||||
return n
|
||||
}
|
||||
|
||||
// WithChildren returns a fresh copy of n, with children merged in.
|
||||
func (n Node) WithChildren(children NodeSet) Node {
|
||||
result := n.Copy()
|
||||
result.Children = result.Children.Merge(children)
|
||||
return result
|
||||
n.Children = n.Children.Merge(children)
|
||||
return n
|
||||
}
|
||||
|
||||
// WithChild returns a fresh copy of n, with one child merged in.
|
||||
func (n Node) WithChild(child Node) Node {
|
||||
result := n.Copy()
|
||||
result.Children = result.Children.Merge(MakeNodeSet(child))
|
||||
return result
|
||||
}
|
||||
|
||||
// Copy returns a value copy of the Node.
|
||||
func (n Node) Copy() Node {
|
||||
cp := MakeNode(n.ID)
|
||||
cp.Topology = n.Topology
|
||||
cp.Counters = n.Counters.Copy()
|
||||
cp.Sets = n.Sets.Copy()
|
||||
cp.Adjacency = n.Adjacency.Copy()
|
||||
cp.Edges = n.Edges.Copy()
|
||||
cp.Controls = n.Controls.Copy()
|
||||
cp.Latest = n.Latest.Copy()
|
||||
cp.Metrics = n.Metrics.Copy()
|
||||
cp.Parents = n.Parents.Copy()
|
||||
cp.Children = n.Children.Copy()
|
||||
return cp
|
||||
n.Children = n.Children.Merge(MakeNodeSet(child))
|
||||
return n
|
||||
}
|
||||
|
||||
// Merge mergses the individual components of a node and returns a
|
||||
|
||||
@@ -167,7 +167,7 @@ type Nodes map[string]Node
|
||||
func (n Nodes) Copy() Nodes {
|
||||
cp := make(Nodes, len(n))
|
||||
for k, v := range n {
|
||||
cp[k] = v.Copy()
|
||||
cp[k] = v
|
||||
}
|
||||
return cp
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user