From 72bcdba1c3207c6c289979933187f462eb5384e6 Mon Sep 17 00:00:00 2001 From: Mike Lang Date: Mon, 17 Apr 2017 15:13:50 -0700 Subject: [PATCH] swarm service: Capture stack namespace and strip it from name --- probe/docker/reporter.go | 4 +++- probe/docker/tagger.go | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/probe/docker/reporter.go b/probe/docker/reporter.go index 7b68e5eda5..b925b12c83 100644 --- a/probe/docker/reporter.go +++ b/probe/docker/reporter.go @@ -22,6 +22,7 @@ const ( IsInHostNetwork = "docker_is_in_host_network" ImageTableID = "image_table" ServiceName = "service_name" + StackNamespace = "stack_namespace" ) // Exposed for testing @@ -135,7 +136,8 @@ var ( } SwarmServiceMetadataTemplates = report.MetadataTemplates{ - ServiceName: {ID: ServiceName, Label: "Service Name", From: report.FromLatest, Priority: 0}, + ServiceName: {ID: ServiceName, Label: "Service Name", From: report.FromLatest, Priority: 0}, + StackNamespace: {ID: StackNamespace, Label: "Stack Namespace", From: report.FromLatest, Priority: 1}, } ) diff --git a/probe/docker/tagger.go b/probe/docker/tagger.go index df4e009309..8d3d072141 100644 --- a/probe/docker/tagger.go +++ b/probe/docker/tagger.go @@ -57,14 +57,20 @@ func (t *Tagger) Tag(r report.Report) (report.Report, error) { if !ok { continue } + stackNamespace, ok := container.Latest.Lookup(LabelPrefix + "com.docker.stack.namespace") + if !ok { + continue + } - if strings.HasPrefix(serviceName, "dockerswarm_") { - serviceName = serviceName[len("dockerswarm_"):] + prefix := stackNamespace + "_" + if strings.HasPrefix(serviceName, prefix) { + serviceName = serviceName[len(prefix):] } nodeID := report.MakeSwarmServiceNodeID(serviceID) node := report.MakeNodeWith(nodeID, map[string]string{ - ServiceName: serviceName, + ServiceName: serviceName, + StackNamespace: stackNamespace, }) r.SwarmService = r.SwarmService.AddNode(node)