Merge pull request #1398 from weaveworks/1212-whitelist

Don't merge nodes in the rendering pipeline
This commit is contained in:
Paul Bellamy
2016-05-03 16:27:31 +01:00
5 changed files with 16 additions and 6 deletions

View File

@@ -39,7 +39,7 @@ var ContainerRenderer = MakeFilter(
},
MakeMap(
MapProcess2Container,
ColorConnected(ProcessRenderer),
ProcessRenderer,
),
),
@@ -273,6 +273,8 @@ func MapProcess2Container(n report.Node, _ report.Networks) report.Nodes {
} else {
id = MakePseudoNodeID(UncontainedID, report.ExtractHostID(n))
node = NewDerivedPseudoNode(id, n)
node = propagateLatest(report.HostNodeID, n, node)
node = propagateLatest(IsConnected, n, node)
}
return report.Nodes{id: node}
}

View File

@@ -13,7 +13,7 @@ var HostRenderer = MakeReduce(
),
MakeMap(
MapX2Host,
ColorConnected(ProcessRenderer),
ProcessRenderer,
),
MakeMap(
MapX2Host,

View File

@@ -18,10 +18,11 @@ func MakeGroupNodeTopology(originalTopology, key string) string {
// NewDerivedNode makes a node based on node, but with a new ID
func NewDerivedNode(id string, node report.Node) report.Node {
return node.WithID(id).WithChildren(report.MakeNodeSet(node)).PruneParents()
return report.MakeNode(id).WithChildren(node.Children.Add(node))
}
// NewDerivedPseudoNode makes a new pseudo node with the node as a child
func NewDerivedPseudoNode(id string, node report.Node) report.Node {
return NewDerivedNode(id, node).WithTopology(Pseudo)
output := NewDerivedNode(id, node).WithTopology(Pseudo)
return output
}

View File

@@ -28,13 +28,13 @@ var EndpointRenderer = FilterNonProcspied(SelectEndpoint)
// ProcessRenderer is a Renderer which produces a renderable process
// graph by merging the endpoint graph and the process topology.
var ProcessRenderer = MakeReduce(
var ProcessRenderer = ColorConnected(MakeReduce(
MakeMap(
MapEndpoint2Process,
EndpointRenderer,
),
SelectProcess,
)
))
// processWithContainerNameRenderer is a Renderer which produces a process
// graph enriched with container names where appropriate

View File

@@ -151,3 +151,10 @@ func (ad applyDecorator) Stats(rpt report.Report, dct Decorator) Stats {
func ApplyDecorators(renderer Renderer) Renderer {
return applyDecorator{renderer}
}
func propagateLatest(key string, from, to report.Node) report.Node {
if value, timestamp, ok := from.Latest.LookupEntry(key); ok {
to.Latest = to.Latest.Set(key, timestamp, value)
}
return to
}