ソースを参照

User should get error message on wrong config
closes #9501

Signed-off-by: Srini Brahmaroutu <srbrahma@us.ibm.com>

Srini Brahmaroutu 10 年 前
コミット
8dcbd6ab63
3 ファイル変更15 行追加5 行削除
  1. 4 1
      daemon/container.go
  2. 7 3
      daemon/utils.go
  3. 4 1
      daemon/utils_test.go

+ 4 - 1
daemon/container.go

@@ -260,7 +260,10 @@ func populateCommand(c *Container, env []string) error {
 	autoCreatedDevices := append(devices.DefaultAutoCreatedDevices, userSpecifiedDevices...)
 
 	// TODO: this can be removed after lxc-conf is fully deprecated
-	lxcConfig := mergeLxcConfIntoOptions(c.hostConfig)
+	lxcConfig, err := mergeLxcConfIntoOptions(c.hostConfig)
+	if err != nil {
+		return err
+	}
 
 	resources := &execdriver.Resources{
 		Memory:     c.Config.Memory,

+ 7 - 3
daemon/utils.go

@@ -1,6 +1,7 @@
 package daemon
 
 import (
+	"errors"
 	"fmt"
 	"strings"
 
@@ -32,9 +33,9 @@ func migratePortMappings(config *runconfig.Config, hostConfig *runconfig.HostCon
 	return nil
 }
 
-func mergeLxcConfIntoOptions(hostConfig *runconfig.HostConfig) []string {
+func mergeLxcConfIntoOptions(hostConfig *runconfig.HostConfig) ([]string, error) {
 	if hostConfig == nil {
-		return nil
+		return nil, nil
 	}
 
 	out := []string{}
@@ -44,10 +45,13 @@ func mergeLxcConfIntoOptions(hostConfig *runconfig.HostConfig) []string {
 		for _, pair := range lxcConf {
 			// because lxc conf gets the driver name lxc.XXXX we need to trim it off
 			// and let the lxc driver add it back later if needed
+			if !strings.Contains(pair.Key, ".") {
+				return nil, errors.New("Illegal Key passed into LXC Configurations")
+			}
 			parts := strings.SplitN(pair.Key, ".", 2)
 			out = append(out, fmt.Sprintf("%s=%s", parts[1], pair.Value))
 		}
 	}
 
-	return out
+	return out, nil
 }

+ 4 - 1
daemon/utils_test.go

@@ -14,7 +14,10 @@ func TestMergeLxcConfig(t *testing.T) {
 		},
 	}
 
-	out := mergeLxcConfIntoOptions(hostConfig)
+	out, err := mergeLxcConfIntoOptions(hostConfig)
+	if err != nil {
+		t.Fatalf("Failed to merge Lxc Config ", err)
+	}
 
 	cpuset := out[0]
 	if expected := "cgroups.cpuset=1,2"; cpuset != expected {