// NodeTables produces a list of tables (to be consumed directly by the UI) based // on the report and the node. It uses the report to get the templates for the node's // topology. func NodeTables(r report.Report, n report.Node) []report.Table { if _, ok := n.Counters.Lookup(n.Topology); ok { // This is a group of nodes, so no tables! return nil } if topology, ok := r.Topology(n.Topology); ok { return topology.TableTemplates.Tables(n) } return nil }
// NodeMetadata produces a table (to be consumed directly by the UI) based on // an a report.Node, which is (hopefully) a node in one of our topologies. func NodeMetadata(r report.Report, n report.Node) []report.MetadataRow { if _, ok := n.Counters.Lookup(n.Topology); ok { // This is a group of nodes, so no metadata! return nil } if topology, ok := r.Topology(n.Topology); ok { return topology.MetadataTemplates.MetadataRows(n) } return nil }
// NodeMetrics produces a table (to be consumed directly by the UI) based on // an a report.Node, which is (hopefully) a node in one of our topologies. func NodeMetrics(r report.Report, n report.Node) []report.MetricRow { if _, ok := n.Counters.Lookup(n.Topology); ok { // This is a group of nodes, so no metrics! return nil } topology, ok := r.Topology(n.Topology) if !ok { return nil } return topology.MetricTemplates.MetricRows(n) }
// Render implements Renderer func (t TopologySelector) Render(r report.Report, _ Decorator) report.Nodes { topology, _ := r.Topology(string(t)) return topology.Nodes }
func controls(r report.Report, n report.Node) []ControlInstance { if t, ok := r.Topology(n.Topology); ok { return controlsFor(t, n.ID) } return []ControlInstance{} }