diff --git a/backends/forward.go b/backends/forward.go index b0f3ad9ccf..aeeef29716 100644 --- a/backends/forward.go +++ b/backends/forward.go @@ -5,7 +5,6 @@ import ( "fmt" "github.com/docker/libswarm/beam" "github.com/dotcloud/docker/engine" - "github.com/dotcloud/docker/runconfig" "github.com/dotcloud/docker/utils" "io" "io/ioutil" @@ -86,20 +85,10 @@ func (f *forwarder) ls(ctx *beam.Message) error { } func (f *forwarder) spawn(ctx *beam.Message) error { - if len(ctx.Args) < 1 { - return fmt.Errorf("forward: spawn takes at least 1 argument, got %d", len(ctx.Args)) + if len(ctx.Args) != 1 { + return fmt.Errorf("forward: spawn takes exactly 1 argument, got %d", len(ctx.Args)) } - body, err := json.Marshal(&runconfig.Config{ - Image: ctx.Args[0], - Cmd: ctx.Args[1:], - AttachStdin: false, - AttachStdout: true, - AttachStderr: true, - }) - if err != nil { - return err - } - resp, err := f.client.call("POST", "/containers/create", string(body)) + resp, err := f.client.call("POST", "/containers/create", ctx.Args[0]) if err != nil { return err } diff --git a/dockerclient/dockerclient.go b/dockerclient/dockerclient.go index c0d250f37a..b2f7d67edb 100644 --- a/dockerclient/dockerclient.go +++ b/dockerclient/dockerclient.go @@ -1,10 +1,12 @@ package main import ( + "encoding/json" "fmt" "github.com/codegangsta/cli" "github.com/docker/libswarm/backends" "github.com/docker/libswarm/beam" + "github.com/dotcloud/docker/runconfig" "log" "os" "strings" @@ -85,7 +87,17 @@ func doCmd(instance *beam.Object, args []string) error { if len(args) < 3 { return fmt.Errorf("usage: run IMAGE COMMAND...") } - container, err := instance.Spawn(args[1:]...) + containerJson, err := json.Marshal(&runconfig.Config{ + Image: args[1], + Cmd: args[2:], + AttachStdin: false, + AttachStdout: true, + AttachStderr: true, + }) + if err != nil { + return err + } + container, err := instance.Spawn(string(containerJson)) if err != nil { return fmt.Errorf("spawn: %v", err) }