mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-28 01:31:17 +00:00
memoise shared top-level renderers
and add a comment indicating non-memoisation of other, not shared top-level renderers. This memoisation is effective when the browser requests multiple topologies for the same report.
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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}, "",
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -6,6 +6,8 @@ import (
|
||||
)
|
||||
|
||||
// WeaveRenderer is a Renderer which produces a renderable weave topology.
|
||||
//
|
||||
// not memoised
|
||||
var WeaveRenderer = MakeMap(
|
||||
MapWeaveIdentity,
|
||||
SelectOverlay,
|
||||
|
||||
Reference in New Issue
Block a user