diff --git a/render/container.go b/render/container.go index 83eec193c..e72e55c40 100644 --- a/render/container.go +++ b/render/container.go @@ -182,11 +182,11 @@ func (r containerWithImageNameRenderer) Render(rpt report.Report, dct Decorator) // ContainerWithImageNameRenderer is a Renderer which produces a container // graph where the ranks are the image names, not their IDs -var ContainerWithImageNameRenderer = containerWithImageNameRenderer{ContainerRenderer} +var ContainerWithImageNameRenderer = Memoise(containerWithImageNameRenderer{ContainerRenderer}) // ContainerImageRenderer is a Renderer which produces a renderable container // image graph by merging the container graph and the container image topology. -var ContainerImageRenderer = FilterEmpty(report.Container, +var ContainerImageRenderer = Memoise(FilterEmpty(report.Container, MakeMap( MapContainerImage2Name, MakeReduce( @@ -197,10 +197,12 @@ var ContainerImageRenderer = FilterEmpty(report.Container, SelectContainerImage, ), ), -) +)) // ContainerHostnameRenderer is a Renderer which produces a renderable container // by hostname graph.. +// +// not memoised var ContainerHostnameRenderer = FilterEmpty(report.Container, MakeReduce( MakeMap( diff --git a/render/ecs.go b/render/ecs.go index e36f3dc52..365b8fb28 100644 --- a/render/ecs.go +++ b/render/ecs.go @@ -5,7 +5,7 @@ import ( ) // ECSTaskRenderer is a Renderer for Amazon ECS tasks. -var ECSTaskRenderer = ConditionalRenderer(renderECSTopologies, +var ECSTaskRenderer = Memoise(ConditionalRenderer(renderECSTopologies, renderParents( report.Container, []string{report.ECSTask}, UnmanagedID, MakeFilter( @@ -13,9 +13,11 @@ var ECSTaskRenderer = ConditionalRenderer(renderECSTopologies, ContainerWithImageNameRenderer, ), ), -) +)) // ECSServiceRenderer is a Renderer for Amazon ECS services. +// +// not memoised var ECSServiceRenderer = ConditionalRenderer(renderECSTopologies, renderParents( report.ECSTask, []string{report.ECSService}, "", diff --git a/render/host.go b/render/host.go index 1bd0ec1d4..8983eb05a 100644 --- a/render/host.go +++ b/render/host.go @@ -6,6 +6,8 @@ import ( // HostRenderer is a Renderer which produces a renderable host // graph from the host topology. +// +// not memoised var HostRenderer = MakeReduce( MakeMap( MapEndpoint2Host, diff --git a/render/pod.go b/render/pod.go index 6277dba18..30c012c4a 100644 --- a/render/pod.go +++ b/render/pod.go @@ -42,7 +42,7 @@ func isPauseContainer(n report.Node) bool { // PodRenderer is a Renderer which produces a renderable kubernetes // graph by merging the container graph and the pods topology. -var PodRenderer = ConditionalRenderer(renderKubernetesTopologies, +var PodRenderer = Memoise(ConditionalRenderer(renderKubernetesTopologies, MakeFilter( func(n report.Node) bool { state, ok := n.Latest.Lookup(kubernetes.State) @@ -65,10 +65,12 @@ var PodRenderer = ConditionalRenderer(renderKubernetesTopologies, ConnectionJoin(MapPod2IP, selectPodsWithDeployments{}), ), ), -) +)) // PodServiceRenderer is a Renderer which produces a renderable kubernetes services // graph by merging the pods graph and the services topology. +// +// not memoised var PodServiceRenderer = ConditionalRenderer(renderKubernetesTopologies, renderParents( report.Pod, []string{report.Service}, "", @@ -80,6 +82,8 @@ var PodServiceRenderer = ConditionalRenderer(renderKubernetesTopologies, // Pods with no controller are mapped to 'Unmanaged' // We can't simply combine the rendered graphs of the high level objects as they would never // have connections to each other. +// +// not memoised var KubeControllerRenderer = ConditionalRenderer(renderKubernetesTopologies, renderParents( report.Pod, []string{report.Deployment, report.DaemonSet, report.StatefulSet, report.CronJob}, UnmanagedID, diff --git a/render/process.go b/render/process.go index d38cc610e..8900f2235 100644 --- a/render/process.go +++ b/render/process.go @@ -74,10 +74,14 @@ func (r processWithContainerNameRenderer) Render(rpt report.Report, dct Decorato // ProcessWithContainerNameRenderer is a Renderer which produces a process // graph enriched with container names where appropriate +// +// not memoised var ProcessWithContainerNameRenderer = processWithContainerNameRenderer{ProcessRenderer} // ProcessNameRenderer is a Renderer which produces a renderable process // name graph by munging the progess graph. +// +// not memoised var ProcessNameRenderer = ConditionalRenderer(renderProcesses, MakeMap( MapProcess2Name, diff --git a/render/swarm.go b/render/swarm.go index da6306914..28db6d96f 100644 --- a/render/swarm.go +++ b/render/swarm.go @@ -5,6 +5,8 @@ import ( ) // SwarmServiceRenderer is a Renderer for Docker Swarm services +// +// not memoised var SwarmServiceRenderer = ConditionalRenderer(renderSwarmTopologies, renderParents( report.Container, []string{report.SwarmService}, UnmanagedID, diff --git a/render/weave.go b/render/weave.go index 216a0cf1c..404acaae3 100644 --- a/render/weave.go +++ b/render/weave.go @@ -6,6 +6,8 @@ import ( ) // WeaveRenderer is a Renderer which produces a renderable weave topology. +// +// not memoised var WeaveRenderer = MakeMap( MapWeaveIdentity, SelectOverlay,