Browse Source

Add verify config to verifyContainerSettings

Signed-off-by: Lei Jitang <leijitang@huawei.com>
Lei Jitang 10 years ago
parent
commit
b37832e353
4 changed files with 13 additions and 11 deletions
  1. 1 8
      daemon/create.go
  2. 10 1
      daemon/daemon_unix.go
  3. 1 1
      daemon/daemon_windows.go
  4. 1 1
      daemon/start.go

+ 1 - 8
daemon/create.go

@@ -19,18 +19,11 @@ func (daemon *Daemon) ContainerCreate(name string, config *runconfig.Config, hos
 		return "", nil, fmt.Errorf("Config cannot be empty in order to create a container")
 	}
 
-	warnings, err := daemon.verifyContainerSettings(hostConfig)
+	warnings, err := daemon.verifyContainerSettings(hostConfig, config)
 	if err != nil {
 		return "", warnings, err
 	}
 
-	// The check for a valid workdir path is made on the server rather than in the
-	// client. This is because we don't know the type of path (Linux or Windows)
-	// to validate on the client.
-	if config.WorkingDir != "" && !filepath.IsAbs(config.WorkingDir) {
-		return "", warnings, fmt.Errorf("The working directory '%s' is invalid. It needs to be an absolute path.", config.WorkingDir)
-	}
-
 	container, buildWarnings, err := daemon.Create(config, hostConfig, name)
 	if err != nil {
 		if daemon.Graph().IsNotExist(err, config.Image) {

+ 10 - 1
daemon/daemon_unix.go

@@ -112,9 +112,18 @@ func checkKernel() error {
 	return nil
 }
 
-func (daemon *Daemon) verifyContainerSettings(hostConfig *runconfig.HostConfig) ([]string, error) {
+func (daemon *Daemon) verifyContainerSettings(hostConfig *runconfig.HostConfig, config *runconfig.Config) ([]string, error) {
 	var warnings []string
 
+	if config != nil {
+		// The check for a valid workdir path is made on the server rather than in the
+		// client. This is because we don't know the type of path (Linux or Windows)
+		// to validate on the client.
+		if config.WorkingDir != "" && !filepath.IsAbs(config.WorkingDir) {
+			return warnings, fmt.Errorf("The working directory '%s' is invalid. It needs to be an absolute path.", config.WorkingDir)
+		}
+	}
+
 	if hostConfig == nil {
 		return warnings, nil
 	}

+ 1 - 1
daemon/daemon_windows.go

@@ -42,7 +42,7 @@ func checkKernel() error {
 	return nil
 }
 
-func (daemon *Daemon) verifyContainerSettings(hostConfig *runconfig.HostConfig) ([]string, error) {
+func (daemon *Daemon) verifyContainerSettings(hostConfig *runconfig.HostConfig, config *runconfig.HostConfig) ([]string, error) {
 	// TODO Windows. Verifications TBC
 	return nil, nil
 }

+ 1 - 1
daemon/start.go

@@ -20,7 +20,7 @@ func (daemon *Daemon) ContainerStart(name string, hostConfig *runconfig.HostConf
 		return fmt.Errorf("Container already started")
 	}
 
-	if _, err = daemon.verifyContainerSettings(hostConfig); err != nil {
+	if _, err = daemon.verifyContainerSettings(hostConfig, nil); err != nil {
 		return err
 	}