swarm service: Capture stack namespace and strip it from name

This commit is contained in:
Mike Lang
2017-04-17 15:13:50 -07:00
parent e8ecfe1c76
commit 72bcdba1c3
2 changed files with 12 additions and 4 deletions

View File

@@ -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},
}
)

View File

@@ -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)