Browse code

Removed runconfig.ParseSubcommand

Removed runconfig.ParseSubcommand, changed it to runconfig.Parse and editted related tests and modules

Signed-off-by: Oh Jinkyun <tintypemolly@gmail.com>

Oh Jinkyun authored on 2014/09/04 15:21:51
Showing 8 changed files
... ...
@@ -2062,7 +2062,6 @@ func (cli *DockerCli) createContainer(config *runconfig.Config, hostConfig *runc
2062 2062
 }
2063 2063
 
2064 2064
 func (cli *DockerCli) CmdCreate(args ...string) error {
2065
-	// FIXME: just use runconfig.Parse already
2066 2065
 	cmd := cli.Subcmd("create", "IMAGE [COMMAND] [ARG...]", "Create a new container")
2067 2066
 
2068 2067
 	// These are flags not stored in Config/HostConfig
... ...
@@ -2070,7 +2069,7 @@ func (cli *DockerCli) CmdCreate(args ...string) error {
2070 2070
 		flName = cmd.String([]string{"-name"}, "", "Assign a name to the container")
2071 2071
 	)
2072 2072
 
2073
-	config, hostConfig, cmd, err := runconfig.ParseSubcommand(cmd, args, nil)
2073
+	config, hostConfig, cmd, err := runconfig.Parse(cmd, args, nil)
2074 2074
 	if err != nil {
2075 2075
 		return err
2076 2076
 	}
... ...
@@ -2106,7 +2105,7 @@ func (cli *DockerCli) CmdRun(args ...string) error {
2106 2106
 		ErrConflictDetachAutoRemove           = fmt.Errorf("Conflicting options: --rm and -d")
2107 2107
 	)
2108 2108
 
2109
-	config, hostConfig, cmd, err := runconfig.ParseSubcommand(cmd, args, nil)
2109
+	config, hostConfig, cmd, err := runconfig.Parse(cmd, args, nil)
2110 2110
 	if err != nil {
2111 2111
 		return err
2112 2112
 	}
... ...
@@ -9,11 +9,13 @@ package builder
9 9
 
10 10
 import (
11 11
 	"fmt"
12
+	"io/ioutil"
12 13
 	"path/filepath"
13 14
 	"strings"
14 15
 
15 16
 	"github.com/docker/docker/nat"
16 17
 	"github.com/docker/docker/pkg/log"
18
+	flag "github.com/docker/docker/pkg/mflag"
17 19
 	"github.com/docker/docker/runconfig"
18 20
 )
19 21
 
... ...
@@ -176,9 +178,11 @@ func run(b *Builder, args []string, attributes map[string]bool) error {
176 176
 		args = append([]string{"/bin/sh", "-c"}, args[0])
177 177
 	}
178 178
 
179
-	args = append([]string{b.image}, args...)
179
+	runCmd := flag.NewFlagSet("run", flag.ContinueOnError)
180
+	runCmd.SetOutput(ioutil.Discard)
181
+	runCmd.Usage = nil
180 182
 
181
-	config, _, _, err := runconfig.Parse(args, nil)
183
+	config, _, _, err := runconfig.Parse(runCmd, append([]string{b.image}, args...), nil)
182 184
 	if err != nil {
183 185
 		return err
184 186
 	}
... ...
@@ -663,7 +663,7 @@ func TestDefaultContainerName(t *testing.T) {
663 663
 	daemon := mkDaemonFromEngine(eng, t)
664 664
 	defer nuke(daemon)
665 665
 
666
-	config, _, _, err := runconfig.Parse([]string{unitTestImageID, "echo test"}, nil)
666
+	config, _, _, err := parseRun([]string{unitTestImageID, "echo test"}, nil)
667 667
 	if err != nil {
668 668
 		t.Fatal(err)
669 669
 	}
... ...
@@ -687,7 +687,7 @@ func TestRandomContainerName(t *testing.T) {
687 687
 	daemon := mkDaemonFromEngine(eng, t)
688 688
 	defer nuke(daemon)
689 689
 
690
-	config, _, _, err := runconfig.Parse([]string{GetTestImage(daemon).ID, "echo test"}, nil)
690
+	config, _, _, err := parseRun([]string{GetTestImage(daemon).ID, "echo test"}, nil)
691 691
 	if err != nil {
692 692
 		t.Fatal(err)
693 693
 	}
... ...
@@ -718,7 +718,7 @@ func TestContainerNameValidation(t *testing.T) {
718 718
 		{"abc-123_AAA.1", true},
719 719
 		{"\000asdf", false},
720 720
 	} {
721
-		config, _, _, err := runconfig.Parse([]string{unitTestImageID, "echo test"}, nil)
721
+		config, _, _, err := parseRun([]string{unitTestImageID, "echo test"}, nil)
722 722
 		if err != nil {
723 723
 			if !test.Valid {
724 724
 				continue
... ...
@@ -759,7 +759,7 @@ func TestLinkChildContainer(t *testing.T) {
759 759
 	daemon := mkDaemonFromEngine(eng, t)
760 760
 	defer nuke(daemon)
761 761
 
762
-	config, _, _, err := runconfig.Parse([]string{unitTestImageID, "echo test"}, nil)
762
+	config, _, _, err := parseRun([]string{unitTestImageID, "echo test"}, nil)
763 763
 	if err != nil {
764 764
 		t.Fatal(err)
765 765
 	}
... ...
@@ -775,7 +775,7 @@ func TestLinkChildContainer(t *testing.T) {
775 775
 		t.Fatalf("Expect webapp id to match container id: %s != %s", webapp.ID, container.ID)
776 776
 	}
777 777
 
778
-	config, _, _, err = runconfig.Parse([]string{GetTestImage(daemon).ID, "echo test"}, nil)
778
+	config, _, _, err = parseRun([]string{GetTestImage(daemon).ID, "echo test"}, nil)
779 779
 	if err != nil {
780 780
 		t.Fatal(err)
781 781
 	}
... ...
@@ -801,7 +801,7 @@ func TestGetAllChildren(t *testing.T) {
801 801
 	daemon := mkDaemonFromEngine(eng, t)
802 802
 	defer nuke(daemon)
803 803
 
804
-	config, _, _, err := runconfig.Parse([]string{unitTestImageID, "echo test"}, nil)
804
+	config, _, _, err := parseRun([]string{unitTestImageID, "echo test"}, nil)
805 805
 	if err != nil {
806 806
 		t.Fatal(err)
807 807
 	}
... ...
@@ -817,7 +817,7 @@ func TestGetAllChildren(t *testing.T) {
817 817
 		t.Fatalf("Expect webapp id to match container id: %s != %s", webapp.ID, container.ID)
818 818
 	}
819 819
 
820
-	config, _, _, err = runconfig.Parse([]string{unitTestImageID, "echo test"}, nil)
820
+	config, _, _, err = parseRun([]string{unitTestImageID, "echo test"}, nil)
821 821
 	if err != nil {
822 822
 		t.Fatal(err)
823 823
 	}
... ...
@@ -6,14 +6,13 @@ import (
6 6
 	"time"
7 7
 
8 8
 	"github.com/docker/docker/engine"
9
-	"github.com/docker/docker/runconfig"
10 9
 )
11 10
 
12 11
 func TestCreateNumberHostname(t *testing.T) {
13 12
 	eng := NewTestEngine(t)
14 13
 	defer mkDaemonFromEngine(eng, t).Nuke()
15 14
 
16
-	config, _, _, err := runconfig.Parse([]string{"-h", "web.0", unitTestImageID, "echo test"}, nil)
15
+	config, _, _, err := parseRun([]string{"-h", "web.0", unitTestImageID, "echo test"}, nil)
17 16
 	if err != nil {
18 17
 		t.Fatal(err)
19 18
 	}
... ...
@@ -25,7 +24,7 @@ func TestCommit(t *testing.T) {
25 25
 	eng := NewTestEngine(t)
26 26
 	defer mkDaemonFromEngine(eng, t).Nuke()
27 27
 
28
-	config, _, _, err := runconfig.Parse([]string{unitTestImageID, "/bin/cat"}, nil)
28
+	config, _, _, err := parseRun([]string{unitTestImageID, "/bin/cat"}, nil)
29 29
 	if err != nil {
30 30
 		t.Fatal(err)
31 31
 	}
... ...
@@ -49,7 +48,7 @@ func TestMergeConfigOnCommit(t *testing.T) {
49 49
 	container1, _, _ := mkContainer(runtime, []string{"-e", "FOO=bar", unitTestImageID, "echo test > /tmp/foo"}, t)
50 50
 	defer runtime.Destroy(container1)
51 51
 
52
-	config, _, _, err := runconfig.Parse([]string{container1.ID, "cat /tmp/foo"}, nil)
52
+	config, _, _, err := parseRun([]string{container1.ID, "cat /tmp/foo"}, nil)
53 53
 	if err != nil {
54 54
 		t.Error(err)
55 55
 	}
... ...
@@ -103,7 +102,7 @@ func TestRestartKillWait(t *testing.T) {
103 103
 	runtime := mkDaemonFromEngine(eng, t)
104 104
 	defer runtime.Nuke()
105 105
 
106
-	config, hostConfig, _, err := runconfig.Parse([]string{"-i", unitTestImageID, "/bin/cat"}, nil)
106
+	config, hostConfig, _, err := parseRun([]string{"-i", unitTestImageID, "/bin/cat"}, nil)
107 107
 	if err != nil {
108 108
 		t.Fatal(err)
109 109
 	}
... ...
@@ -164,7 +163,7 @@ func TestCreateStartRestartStopStartKillRm(t *testing.T) {
164 164
 	eng := NewTestEngine(t)
165 165
 	defer mkDaemonFromEngine(eng, t).Nuke()
166 166
 
167
-	config, hostConfig, _, err := runconfig.Parse([]string{"-i", unitTestImageID, "/bin/cat"}, nil)
167
+	config, hostConfig, _, err := parseRun([]string{"-i", unitTestImageID, "/bin/cat"}, nil)
168 168
 	if err != nil {
169 169
 		t.Fatal(err)
170 170
 	}
... ...
@@ -19,6 +19,8 @@ import (
19 19
 	"github.com/docker/docker/daemon"
20 20
 	"github.com/docker/docker/engine"
21 21
 	"github.com/docker/docker/pkg/log"
22
+	flag "github.com/docker/docker/pkg/mflag"
23
+	"github.com/docker/docker/pkg/sysinfo"
22 24
 	"github.com/docker/docker/runconfig"
23 25
 	"github.com/docker/docker/utils"
24 26
 )
... ...
@@ -248,7 +250,7 @@ func readFile(src string, t *testing.T) (content string) {
248 248
 // The caller is responsible for destroying the container.
249 249
 // Call t.Fatal() at the first error.
250 250
 func mkContainer(r *daemon.Daemon, args []string, t *testing.T) (*daemon.Container, *runconfig.HostConfig, error) {
251
-	config, hc, _, err := runconfig.Parse(args, nil)
251
+	config, hc, _, err := parseRun(args, nil)
252 252
 	defer func() {
253 253
 		if err != nil && t != nil {
254 254
 			t.Fatal(err)
... ...
@@ -348,3 +350,10 @@ func getImages(eng *engine.Engine, t *testing.T, all bool, filter string) *engin
348 348
 	return images
349 349
 
350 350
 }
351
+
352
+func parseRun(args []string, sysInfo *sysinfo.SysInfo) (*runconfig.Config, *runconfig.HostConfig, *flag.FlagSet, error) {
353
+	cmd := flag.NewFlagSet("run", flag.ContinueOnError)
354
+	cmd.SetOutput(ioutil.Discard)
355
+	cmd.Usage = nil
356
+	return runconfig.Parse(cmd, args, sysInfo)
357
+}
... ...
@@ -9,7 +9,7 @@ import (
9 9
 )
10 10
 
11 11
 func parse(t *testing.T, args string) (*Config, *HostConfig, error) {
12
-	config, hostConfig, _, err := Parse(strings.Split(args+" ubuntu bash", " "), nil)
12
+	config, hostConfig, _, err := parseRun(strings.Split(args+" ubuntu bash", " "), nil)
13 13
 	return config, hostConfig, err
14 14
 }
15 15
 
... ...
@@ -2,7 +2,6 @@ package runconfig
2 2
 
3 3
 import (
4 4
 	"fmt"
5
-	"io/ioutil"
6 5
 	"path"
7 6
 	"strconv"
8 7
 	"strings"
... ...
@@ -25,20 +24,7 @@ var (
25 25
 	ErrConflictHostNetworkAndLinks      = fmt.Errorf("Conflicting options: --net=host can't be used with links. This would result in undefined behavior.")
26 26
 )
27 27
 
28
-// FIXME Only used in tests
29
-func Parse(args []string, sysInfo *sysinfo.SysInfo) (*Config, *HostConfig, *flag.FlagSet, error) {
30
-	cmd := flag.NewFlagSet("run", flag.ContinueOnError)
31
-	cmd.SetOutput(ioutil.Discard)
32
-	cmd.Usage = nil
33
-	return parseRun(cmd, args, sysInfo)
34
-}
35
-
36
-// FIXME: this maps the legacy commands.go code. It should be merged with Parse to only expose a single parse function.
37
-func ParseSubcommand(cmd *flag.FlagSet, args []string, sysInfo *sysinfo.SysInfo) (*Config, *HostConfig, *flag.FlagSet, error) {
38
-	return parseRun(cmd, args, sysInfo)
39
-}
40
-
41
-func parseRun(cmd *flag.FlagSet, args []string, sysInfo *sysinfo.SysInfo) (*Config, *HostConfig, *flag.FlagSet, error) {
28
+func Parse(cmd *flag.FlagSet, args []string, sysInfo *sysinfo.SysInfo) (*Config, *HostConfig, *flag.FlagSet, error) {
42 29
 	var (
43 30
 		// FIXME: use utils.ListOpts for attach and volumes?
44 31
 		flAttach  = opts.NewListOpts(opts.ValidateAttach)
... ...
@@ -1,11 +1,21 @@
1 1
 package runconfig
2 2
 
3 3
 import (
4
+	"io/ioutil"
4 5
 	"testing"
5 6
 
7
+	flag "github.com/docker/docker/pkg/mflag"
6 8
 	"github.com/docker/docker/pkg/parsers"
9
+	"github.com/docker/docker/pkg/sysinfo"
7 10
 )
8 11
 
12
+func parseRun(args []string, sysInfo *sysinfo.SysInfo) (*Config, *HostConfig, *flag.FlagSet, error) {
13
+	cmd := flag.NewFlagSet("run", flag.ContinueOnError)
14
+	cmd.SetOutput(ioutil.Discard)
15
+	cmd.Usage = nil
16
+	return Parse(cmd, args, sysInfo)
17
+}
18
+
9 19
 func TestParseLxcConfOpt(t *testing.T) {
10 20
 	opts := []string{"lxc.utsname=docker", "lxc.utsname = docker "}
11 21
 
... ...
@@ -24,27 +34,27 @@ func TestParseLxcConfOpt(t *testing.T) {
24 24
 }
25 25
 
26 26
 func TestNetHostname(t *testing.T) {
27
-	if _, _, _, err := Parse([]string{"-h=name", "img", "cmd"}, nil); err != nil {
27
+	if _, _, _, err := parseRun([]string{"-h=name", "img", "cmd"}, nil); err != nil {
28 28
 		t.Fatalf("Unexpected error: %s", err)
29 29
 	}
30 30
 
31
-	if _, _, _, err := Parse([]string{"--net=host", "img", "cmd"}, nil); err != nil {
31
+	if _, _, _, err := parseRun([]string{"--net=host", "img", "cmd"}, nil); err != nil {
32 32
 		t.Fatalf("Unexpected error: %s", err)
33 33
 	}
34 34
 
35
-	if _, _, _, err := Parse([]string{"-h=name", "--net=bridge", "img", "cmd"}, nil); err != nil {
35
+	if _, _, _, err := parseRun([]string{"-h=name", "--net=bridge", "img", "cmd"}, nil); err != nil {
36 36
 		t.Fatalf("Unexpected error: %s", err)
37 37
 	}
38 38
 
39
-	if _, _, _, err := Parse([]string{"-h=name", "--net=none", "img", "cmd"}, nil); err != nil {
39
+	if _, _, _, err := parseRun([]string{"-h=name", "--net=none", "img", "cmd"}, nil); err != nil {
40 40
 		t.Fatalf("Unexpected error: %s", err)
41 41
 	}
42 42
 
43
-	if _, _, _, err := Parse([]string{"-h=name", "--net=host", "img", "cmd"}, nil); err != ErrConflictNetworkHostname {
43
+	if _, _, _, err := parseRun([]string{"-h=name", "--net=host", "img", "cmd"}, nil); err != ErrConflictNetworkHostname {
44 44
 		t.Fatalf("Expected error ErrConflictNetworkHostname, got: %s", err)
45 45
 	}
46 46
 
47
-	if _, _, _, err := Parse([]string{"-h=name", "--net=container:other", "img", "cmd"}, nil); err != ErrConflictNetworkHostname {
47
+	if _, _, _, err := parseRun([]string{"-h=name", "--net=container:other", "img", "cmd"}, nil); err != ErrConflictNetworkHostname {
48 48
 		t.Fatalf("Expected error ErrConflictNetworkHostname, got: %s", err)
49 49
 	}
50 50
 }