Add report topologies for Stateful Sets, Cron Jobs

This commit is contained in:
Mike Lang
2017-07-11 17:55:03 -07:00
parent 57f2e6a083
commit 9fb6c46467
5 changed files with 48 additions and 2 deletions

View File

@@ -25,6 +25,8 @@ var (
report.Pod: kubernetesParentLabel,
report.Deployment: kubernetesParentLabel,
report.DaemonSet: kubernetesParentLabel,
report.StatefulSet: kubernetesParentLabel,
report.CronJob: kubernetesParentLabel,
report.Service: kubernetesParentLabel,
report.ECSTask: latestLookup(awsecs.TaskFamily),
report.ECSService: ecsServiceParentLabel,

View File

@@ -68,6 +68,8 @@ var renderers = map[string]func(NodeSummary, report.Node) (NodeSummary, bool){
report.Service: podGroupNodeSummary,
report.Deployment: podGroupNodeSummary,
report.DaemonSet: podGroupNodeSummary,
report.StatefulSet: podGroupNodeSummary,
report.CronJob: podGroupNodeSummary,
report.ECSTask: ecsTaskNodeSummary,
report.ECSService: ecsServiceNodeSummary,
report.SwarmService: swarmServiceNodeSummary,
@@ -90,6 +92,8 @@ var primaryAPITopology = map[string]string{
report.Pod: "pods",
report.Deployment: "kube-controllers",
report.DaemonSet: "kube-controllers",
report.StatefulSet: "kube-controllers",
report.CronJob: "kube-controllers",
report.Service: "services",
report.ECSTask: "ecs-tasks",
report.ECSService: "ecs-services",
@@ -256,8 +260,10 @@ func podNodeSummary(base NodeSummary, n report.Node) (NodeSummary, bool) {
}
var podGroupNodeTypeName = map[string]string{
report.Deployment: "Deployment",
report.DaemonSet: "Daemon Set",
report.Deployment: "Deployment",
report.DaemonSet: "Daemon Set",
report.StatefulSet: "Stateful Set",
report.CronJob: "Cron Job",
}
func podGroupNodeSummary(base NodeSummary, n report.Node) (NodeSummary, bool) {

View File

@@ -31,6 +31,8 @@ var (
SelectService = TopologySelector(report.Service)
SelectDeployment = TopologySelector(report.Deployment)
SelectDaemonSet = TopologySelector(report.DaemonSet)
SelectStatefulSet = TopologySelector(report.StatefulSet)
SelectCronJob = TopologySelector(report.CronJob)
SelectECSTask = TopologySelector(report.ECSTask)
SelectECSService = TopologySelector(report.ECSService)
SelectSwarmService = TopologySelector(report.SwarmService)

View File

@@ -131,6 +131,18 @@ var (
// ParseDaemonSetNodeID parses a daemon set node ID
ParseDaemonSetNodeID = parseSingleComponentID("daemonset")
// MakeStatefulSetNodeID produces a replica set node ID from its composite parts.
MakeStatefulSetNodeID = makeSingleComponentID("statefulset")
// ParseStatefulSetNodeID parses a daemon set node ID
ParseStatefulSetNodeID = parseSingleComponentID("statefulset")
// MakeCronJobNodeID produces a replica set node ID from its composite parts.
MakeCronJobNodeID = makeSingleComponentID("cronjob")
// ParseCronJobNodeID parses a daemon set node ID
ParseCronJobNodeID = parseSingleComponentID("cronjob")
// MakeECSTaskNodeID produces a replica set node ID from its composite parts.
MakeECSTaskNodeID = makeSingleComponentID("ecs_task")

View File

@@ -20,6 +20,8 @@ const (
Deployment = "deployment"
ReplicaSet = "replica_set"
DaemonSet = "daemon_set"
StatefulSet = "stateful_set"
CronJob = "cron_job"
ContainerImage = "container_image"
Host = "host"
Overlay = "overlay"
@@ -83,6 +85,16 @@ type Report struct {
// present.
DaemonSet Topology
// StatefulSet nodes represent all Kubernetes Stateful Sets running on hosts running probes.
// Metadata includes things like Stateful Set id, name, etc. Edges are not
// present.
StatefulSet Topology
// CronJob nodes represent all Kubernetes Cron Jobs running on hosts running probes.
// Metadata includes things like Cron Job id, name, etc. Edges are not
// present.
CronJob Topology
// ContainerImages nodes represent all Docker containers images on
// hosts running probes. Metadata includes things like image id, name etc.
// Edges are not present.
@@ -177,6 +189,14 @@ func MakeReport() Report {
WithShape(Pentagon).
WithLabel("daemonset", "daemonsets"),
StatefulSet: MakeTopology().
WithShape(Triangle).
WithLabel("stateful set", "stateful sets"),
CronJob: MakeTopology().
WithShape(Triangle).
WithLabel("cron job", "cron jobs"),
Overlay: MakeTopology().
WithShape(Circle).
WithLabel("peer", "peers"),
@@ -212,6 +232,8 @@ func (r *Report) TopologyMap() map[string]*Topology {
Deployment: &r.Deployment,
ReplicaSet: &r.ReplicaSet,
DaemonSet: &r.DaemonSet,
StatefulSet: &r.StatefulSet,
CronJob: &r.CronJob,
Host: &r.Host,
Overlay: &r.Overlay,
ECSTask: &r.ECSTask,
@@ -275,6 +297,8 @@ func (r *Report) WalkPairedTopologies(o *Report, f func(*Topology, *Topology)) {
f(&r.Deployment, &o.Deployment)
f(&r.ReplicaSet, &o.ReplicaSet)
f(&r.DaemonSet, &o.DaemonSet)
f(&r.StatefulSet, &o.StatefulSet)
f(&r.CronJob, &o.CronJob)
f(&r.Host, &o.Host)
f(&r.Overlay, &o.Overlay)
f(&r.ECSTask, &o.ECSTask)