Browse code

validate log-opt when creating containers

Signed-off-by: Shijiang Wei <mountkin@gmail.com>

Shijiang Wei authored on 2016/02/28 02:38:26
Showing 2 changed files
... ...
@@ -5,6 +5,7 @@ import (
5 5
 
6 6
 	"github.com/Sirupsen/logrus"
7 7
 	"github.com/docker/docker/container"
8
+	"github.com/docker/docker/daemon/logger"
8 9
 	"github.com/docker/docker/image"
9 10
 	"github.com/docker/docker/layer"
10 11
 	"github.com/docker/docker/pkg/idtools"
... ...
@@ -80,6 +81,11 @@ func (daemon *Daemon) create(params types.ContainerCreateConfig) (retC *containe
80 80
 		}
81 81
 	}()
82 82
 
83
+	logCfg := container.GetLogConfig(daemon.defaultLogConfig)
84
+	if err := logger.ValidateLogOpts(logCfg.Type, logCfg.Config); err != nil {
85
+		return nil, err
86
+	}
87
+
83 88
 	if err := daemon.setSecurityOptions(container, params.HostConfig); err != nil {
84 89
 		return nil, err
85 90
 	}
... ...
@@ -440,3 +440,11 @@ func (s *DockerSuite) TestCreateWithWorkdir(c *check.C) {
440 440
 	dockerCmd(c, "create", "--name", name, "-w", dir, "busybox")
441 441
 	dockerCmd(c, "cp", fmt.Sprintf("%s:%s", name, dir), prefix+slash+"tmp")
442 442
 }
443
+
444
+func (s *DockerSuite) TestCreateWithInvalidLogOpts(c *check.C) {
445
+	name := "test-invalidate-log-opts"
446
+	_, _, err := dockerCmdWithError("create", "--name", name, "--log-opt", "invalid=true")
447
+	c.Assert(err, checker.NotNil)
448
+	out, _ := dockerCmd(c, "ps", "-a")
449
+	c.Assert(out, checker.Not(checker.Contains), name)
450
+}