From 374fed4699c7d98daeef40e4afbc8c8dc18aa918 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 8 Aug 2018 12:57:33 +0000 Subject: [PATCH 1/2] Support --label flag on run-container command --- prog/weaveutil/container.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/prog/weaveutil/container.go b/prog/weaveutil/container.go index cbbc5622a1..151293fadc 100644 --- a/prog/weaveutil/container.go +++ b/prog/weaveutil/container.go @@ -91,6 +91,7 @@ func containerFQDN(args []string) error { func runContainer(args []string) error { env := []string{} + labels := map[string]string{} name := "" net := "" pid := "" @@ -109,6 +110,10 @@ func runContainer(args []string) error { env = append(env, args[i+1]) } args = append(args[:i], args[i+2:]...) + case "-l", "--label": + key, value := parseLabel(args[i+1]) + labels[key] = value + args = append(args[:i], args[i+2:]...) case "--name": name = args[i+1] args = append(args[:i], args[i+2:]...) @@ -166,7 +171,7 @@ func runContainer(args []string) error { return fmt.Errorf("unable to connect to docker: %s", err) } - config := docker.Config{Image: image, Env: env, Cmd: cmds} + config := docker.Config{Image: image, Env: env, Cmd: cmds, Labels: labels} hostConfig := docker.HostConfig{NetworkMode: net, PidMode: pid, Privileged: privileged, RestartPolicy: restart, Binds: volumes, VolumesFrom: volumesFrom} container, err := c.CreateContainer(docker.CreateContainerOptions{Name: name, Config: &config, HostConfig: &hostConfig}) if err != nil { @@ -182,6 +187,14 @@ func runContainer(args []string) error { return nil } +func parseLabel(s string) (key, value string) { + pos := strings.Index(s, "=") + if pos == -1 { // no value - set it to blank + return s, "" + } + return s[:pos], s[pos+1:] +} + func listContainers(args []string) error { if len(args) > 1 { cmdUsage("list-containers", "[