Removed runconfig.ParseSubcommand, changed it to runconfig.Parse and editted related tests and modules
Signed-off-by: Oh Jinkyun <tintypemolly@gmail.com>
| ... | ... |
@@ -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 |
} |