Browse code

Update client code with api changes

Using new methods from engine-api, that make it clearer which element is
required when consuming the API.

Signed-off-by: Vincent Demeester <vincent@sbr.pm>

Vincent Demeester authored on 2016/04/13 17:33:46
Showing 26 changed files
... ...
@@ -48,13 +48,14 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
48 48
 		cli.configFile.DetachKeys = *detachKeys
49 49
 	}
50 50
 
51
+	container := cmd.Arg(0)
52
+
51 53
 	options := types.ContainerAttachOptions{
52
-		ContainerID: cmd.Arg(0),
53
-		Stream:      true,
54
-		Stdin:       !*noStdin && c.Config.OpenStdin,
55
-		Stdout:      true,
56
-		Stderr:      true,
57
-		DetachKeys:  cli.configFile.DetachKeys,
54
+		Stream:     true,
55
+		Stdin:      !*noStdin && c.Config.OpenStdin,
56
+		Stdout:     true,
57
+		Stderr:     true,
58
+		DetachKeys: cli.configFile.DetachKeys,
58 59
 	}
59 60
 
60 61
 	var in io.ReadCloser
... ...
@@ -63,11 +64,11 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
63 63
 	}
64 64
 
65 65
 	if *proxy && !c.Config.Tty {
66
-		sigc := cli.forwardAllSignals(options.ContainerID)
66
+		sigc := cli.forwardAllSignals(container)
67 67
 		defer signal.StopCatch(sigc)
68 68
 	}
69 69
 
70
-	resp, errAttach := cli.client.ContainerAttach(context.Background(), options)
70
+	resp, errAttach := cli.client.ContainerAttach(context.Background(), container, options)
71 71
 	if errAttach != nil && errAttach != httputil.ErrPersistEOF {
72 72
 		// ContainerAttach returns an ErrPersistEOF (connection closed)
73 73
 		// means server met an error and put it in Hijacked connection
... ...
@@ -98,7 +99,7 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
98 98
 		return errAttach
99 99
 	}
100 100
 
101
-	_, status, err := getExitCode(cli, options.ContainerID)
101
+	_, status, err := getExitCode(cli, container)
102 102
 	if err != nil {
103 103
 		return err
104 104
 	}
... ...
@@ -212,7 +212,6 @@ func (cli *DockerCli) CmdBuild(args ...string) error {
212 212
 	}
213 213
 
214 214
 	options := types.ImageBuildOptions{
215
-		Context:        body,
216 215
 		Memory:         memory,
217 216
 		MemorySwap:     memorySwap,
218 217
 		Tags:           flTags.GetAll(),
... ...
@@ -236,7 +235,7 @@ func (cli *DockerCli) CmdBuild(args ...string) error {
236 236
 		Labels:         runconfigopts.ConvertKVStringsToMap(flLabels.GetAll()),
237 237
 	}
238 238
 
239
-	response, err := cli.client.ImageBuild(context.Background(), options)
239
+	response, err := cli.client.ImageBuild(context.Background(), body, options)
240 240
 	if err != nil {
241 241
 		return err
242 242
 	}
... ...
@@ -2,7 +2,6 @@ package client
2 2
 
3 3
 import (
4 4
 	"encoding/json"
5
-	"errors"
6 5
 	"fmt"
7 6
 
8 7
 	"golang.org/x/net/context"
... ...
@@ -10,7 +9,6 @@ import (
10 10
 	Cli "github.com/docker/docker/cli"
11 11
 	"github.com/docker/docker/opts"
12 12
 	flag "github.com/docker/docker/pkg/mflag"
13
-	"github.com/docker/docker/reference"
14 13
 	"github.com/docker/engine-api/types"
15 14
 	"github.com/docker/engine-api/types/container"
16 15
 )
... ...
@@ -33,29 +31,10 @@ func (cli *DockerCli) CmdCommit(args ...string) error {
33 33
 	cmd.ParseFlags(args, true)
34 34
 
35 35
 	var (
36
-		name             = cmd.Arg(0)
37
-		repositoryAndTag = cmd.Arg(1)
38
-		repositoryName   string
39
-		tag              string
36
+		name      = cmd.Arg(0)
37
+		reference = cmd.Arg(1)
40 38
 	)
41 39
 
42
-	//Check if the given image name can be resolved
43
-	if repositoryAndTag != "" {
44
-		ref, err := reference.ParseNamed(repositoryAndTag)
45
-		if err != nil {
46
-			return err
47
-		}
48
-
49
-		repositoryName = ref.Name()
50
-
51
-		switch x := ref.(type) {
52
-		case reference.Canonical:
53
-			return errors.New("cannot commit to digest reference")
54
-		case reference.NamedTagged:
55
-			tag = x.Tag()
56
-		}
57
-	}
58
-
59 40
 	var config *container.Config
60 41
 	if *flConfig != "" {
61 42
 		config = &container.Config{}
... ...
@@ -65,17 +44,15 @@ func (cli *DockerCli) CmdCommit(args ...string) error {
65 65
 	}
66 66
 
67 67
 	options := types.ContainerCommitOptions{
68
-		ContainerID:    name,
69
-		RepositoryName: repositoryName,
70
-		Tag:            tag,
71
-		Comment:        *flComment,
72
-		Author:         *flAuthor,
73
-		Changes:        flChanges.GetAll(),
74
-		Pause:          *flPause,
75
-		Config:         config,
68
+		Reference: reference,
69
+		Comment:   *flComment,
70
+		Author:    *flAuthor,
71
+		Changes:   flChanges.GetAll(),
72
+		Pause:     *flPause,
73
+		Config:    config,
76 74
 	}
77 75
 
78
-	response, err := cli.client.ContainerCommit(context.Background(), options)
76
+	response, err := cli.client.ContainerCommit(context.Background(), name, options)
79 77
 	if err != nil {
80 78
 		return err
81 79
 	}
... ...
@@ -9,6 +9,7 @@ import (
9 9
 
10 10
 	Cli "github.com/docker/docker/cli"
11 11
 	"github.com/docker/docker/pkg/jsonmessage"
12
+	// FIXME migrate to docker/distribution/reference
12 13
 	"github.com/docker/docker/reference"
13 14
 	"github.com/docker/docker/registry"
14 15
 	runconfigopts "github.com/docker/docker/runconfig/opts"
... ...
@@ -24,14 +25,6 @@ func (cli *DockerCli) pullImage(image string, out io.Writer) error {
24 24
 		return err
25 25
 	}
26 26
 
27
-	var tag string
28
-	switch x := reference.WithDefaultTag(ref).(type) {
29
-	case reference.Canonical:
30
-		tag = x.Digest().String()
31
-	case reference.NamedTagged:
32
-		tag = x.Tag()
33
-	}
34
-
35 27
 	// Resolve the Repository name from fqn to RepositoryInfo
36 28
 	repoInfo, err := registry.ParseRepositoryInfo(ref)
37 29
 	if err != nil {
... ...
@@ -45,12 +38,10 @@ func (cli *DockerCli) pullImage(image string, out io.Writer) error {
45 45
 	}
46 46
 
47 47
 	options := types.ImageCreateOptions{
48
-		Parent:       ref.Name(),
49
-		Tag:          tag,
50 48
 		RegistryAuth: encodedAuth,
51 49
 	}
52 50
 
53
-	responseBody, err := cli.client.ImageCreate(context.Background(), options)
51
+	responseBody, err := cli.client.ImageCreate(context.Background(), image, options)
54 52
 	if err != nil {
55 53
 		return err
56 54
 	}
... ...
@@ -21,8 +21,9 @@ func (cli *DockerCli) CmdExec(args ...string) error {
21 21
 	detachKeys := cmd.String([]string{"-detach-keys"}, "", "Override the key sequence for detaching a container")
22 22
 
23 23
 	execConfig, err := ParseExec(cmd, args)
24
+	container := cmd.Arg(0)
24 25
 	// just in case the ParseExec does not exit
25
-	if execConfig.Container == "" || err != nil {
26
+	if container == "" || err != nil {
26 27
 		return Cli.StatusError{StatusCode: 1}
27 28
 	}
28 29
 
... ...
@@ -33,7 +34,7 @@ func (cli *DockerCli) CmdExec(args ...string) error {
33 33
 	// Send client escape keys
34 34
 	execConfig.DetachKeys = cli.configFile.DetachKeys
35 35
 
36
-	response, err := cli.client.ContainerExecCreate(context.Background(), *execConfig)
36
+	response, err := cli.client.ContainerExecCreate(context.Background(), container, *execConfig)
37 37
 	if err != nil {
38 38
 		return err
39 39
 	}
... ...
@@ -128,13 +129,11 @@ func ParseExec(cmd *flag.FlagSet, args []string) (*types.ExecConfig, error) {
128 128
 		flUser       = cmd.String([]string{"u", "-user"}, "", "Username or UID (format: <name|uid>[:<group|gid>])")
129 129
 		flPrivileged = cmd.Bool([]string{"-privileged"}, false, "Give extended privileges to the command")
130 130
 		execCmd      []string
131
-		container    string
132 131
 	)
133 132
 	cmd.Require(flag.Min, 2)
134 133
 	if err := cmd.ParseFlags(args, true); err != nil {
135 134
 		return nil, err
136 135
 	}
137
-	container = cmd.Arg(0)
138 136
 	parsedArgs := cmd.Args()
139 137
 	execCmd = parsedArgs[1:]
140 138
 
... ...
@@ -143,7 +142,6 @@ func ParseExec(cmd *flag.FlagSet, args []string) (*types.ExecConfig, error) {
143 143
 		Privileged: *flPrivileged,
144 144
 		Tty:        *flTty,
145 145
 		Cmd:        execCmd,
146
-		Container:  container,
147 146
 		Detach:     *flDetach,
148 147
 	}
149 148
 
... ...
@@ -23,7 +23,6 @@ func TestParseExec(t *testing.T) {
23 23
 		&arguments{
24 24
 			[]string{"container", "command"},
25 25
 		}: {
26
-			Container:    "container",
27 26
 			Cmd:          []string{"command"},
28 27
 			AttachStdout: true,
29 28
 			AttachStderr: true,
... ...
@@ -31,7 +30,6 @@ func TestParseExec(t *testing.T) {
31 31
 		&arguments{
32 32
 			[]string{"container", "command1", "command2"},
33 33
 		}: {
34
-			Container:    "container",
35 34
 			Cmd:          []string{"command1", "command2"},
36 35
 			AttachStdout: true,
37 36
 			AttachStderr: true,
... ...
@@ -44,7 +42,6 @@ func TestParseExec(t *testing.T) {
44 44
 			AttachStdout: true,
45 45
 			AttachStderr: true,
46 46
 			Tty:          true,
47
-			Container:    "container",
48 47
 			Cmd:          []string{"command"},
49 48
 		},
50 49
 		&arguments{
... ...
@@ -54,7 +51,6 @@ func TestParseExec(t *testing.T) {
54 54
 			AttachStdout: false,
55 55
 			AttachStderr: false,
56 56
 			Detach:       true,
57
-			Container:    "container",
58 57
 			Cmd:          []string{"command"},
59 58
 		},
60 59
 		&arguments{
... ...
@@ -65,7 +61,6 @@ func TestParseExec(t *testing.T) {
65 65
 			AttachStderr: false,
66 66
 			Detach:       true,
67 67
 			Tty:          true,
68
-			Container:    "container",
69 68
 			Cmd:          []string{"command"},
70 69
 		},
71 70
 	}
... ...
@@ -103,9 +98,6 @@ func compareExecConfig(config1 *types.ExecConfig, config2 *types.ExecConfig) boo
103 103
 	if config1.AttachStdout != config2.AttachStdout {
104 104
 		return false
105 105
 	}
106
-	if config1.Container != config2.Container {
107
-		return false
108
-	}
109 106
 	if config1.Detach != config2.Detach {
110 107
 		return false
111 108
 	}
... ...
@@ -12,7 +12,6 @@ import (
12 12
 	"github.com/docker/docker/pkg/jsonmessage"
13 13
 	flag "github.com/docker/docker/pkg/mflag"
14 14
 	"github.com/docker/docker/pkg/urlutil"
15
-	"github.com/docker/docker/reference"
16 15
 	"github.com/docker/engine-api/types"
17 16
 )
18 17
 
... ...
@@ -31,26 +30,20 @@ func (cli *DockerCli) CmdImport(args ...string) error {
31 31
 	cmd.ParseFlags(args, true)
32 32
 
33 33
 	var (
34
-		in         io.Reader
35
-		tag        string
36
-		src        = cmd.Arg(0)
37
-		srcName    = src
38
-		repository = cmd.Arg(1)
39
-		changes    = flChanges.GetAll()
34
+		in      io.Reader
35
+		tag     string
36
+		src     = cmd.Arg(0)
37
+		srcName = src
38
+		ref     = cmd.Arg(1)
39
+		changes = flChanges.GetAll()
40 40
 	)
41 41
 
42 42
 	if cmd.NArg() == 3 {
43
+		// FIXME(vdemeester) Which version has this been deprecated ? should we remove it ?
43 44
 		fmt.Fprintf(cli.err, "[DEPRECATED] The format 'file|URL|- [REPOSITORY [TAG]]' has been deprecated. Please use file|URL|- [REPOSITORY[:TAG]]\n")
44 45
 		tag = cmd.Arg(2)
45 46
 	}
46 47
 
47
-	if repository != "" {
48
-		//Check if the given image name can be resolved
49
-		if _, err := reference.ParseNamed(repository); err != nil {
50
-			return err
51
-		}
52
-	}
53
-
54 48
 	if src == "-" {
55 49
 		in = cli.in
56 50
 	} else if !urlutil.IsURL(src) {
... ...
@@ -63,16 +56,18 @@ func (cli *DockerCli) CmdImport(args ...string) error {
63 63
 		in = file
64 64
 	}
65 65
 
66
+	source := types.ImageImportSource{
67
+		Source:     in,
68
+		SourceName: srcName,
69
+	}
70
+
66 71
 	options := types.ImageImportOptions{
67
-		Source:         in,
68
-		SourceName:     srcName,
69
-		RepositoryName: repository,
70
-		Message:        *message,
71
-		Tag:            tag,
72
-		Changes:        changes,
72
+		Message: *message,
73
+		Tag:     tag,
74
+		Changes: changes,
73 75
 	}
74 76
 
75
-	responseBody, err := cli.client.ImageImport(context.Background(), options)
77
+	responseBody, err := cli.client.ImageImport(context.Background(), source, ref, options)
76 78
 	if err != nil {
77 79
 		return err
78 80
 	}
... ...
@@ -42,15 +42,14 @@ func (cli *DockerCli) CmdLogs(args ...string) error {
42 42
 	}
43 43
 
44 44
 	options := types.ContainerLogsOptions{
45
-		ContainerID: name,
46
-		ShowStdout:  true,
47
-		ShowStderr:  true,
48
-		Since:       *since,
49
-		Timestamps:  *times,
50
-		Follow:      *follow,
51
-		Tail:        *tail,
45
+		ShowStdout: true,
46
+		ShowStderr: true,
47
+		Since:      *since,
48
+		Timestamps: *times,
49
+		Follow:     *follow,
50
+		Tail:       *tail,
52 51
 	}
53
-	responseBody, err := cli.client.ContainerLogs(context.Background(), options)
52
+	responseBody, err := cli.client.ContainerLogs(context.Background(), name, options)
54 53
 	if err != nil {
55 54
 		return err
56 55
 	}
... ...
@@ -77,7 +77,6 @@ func (cli *DockerCli) CmdNetworkCreate(args ...string) error {
77 77
 
78 78
 	// Construct network create request body
79 79
 	nc := types.NetworkCreate{
80
-		Name:           cmd.Arg(0),
81 80
 		Driver:         driver,
82 81
 		IPAM:           network.IPAM{Driver: *flIpamDriver, Config: ipamCfg, Options: flIpamOpt.GetAll()},
83 82
 		Options:        flOpts.GetAll(),
... ...
@@ -87,7 +86,7 @@ func (cli *DockerCli) CmdNetworkCreate(args ...string) error {
87 87
 		Labels:         runconfigopts.ConvertKVStringsToMap(flLabels.GetAll()),
88 88
 	}
89 89
 
90
-	resp, err := cli.client.NetworkCreate(context.Background(), nc)
90
+	resp, err := cli.client.NetworkCreate(context.Background(), cmd.Arg(0), nc)
91 91
 	if err != nil {
92 92
 		return err
93 93
 	}
... ...
@@ -11,7 +11,6 @@ import (
11 11
 	flag "github.com/docker/docker/pkg/mflag"
12 12
 	"github.com/docker/docker/reference"
13 13
 	"github.com/docker/docker/registry"
14
-	"github.com/docker/engine-api/client"
15 14
 	"github.com/docker/engine-api/types"
16 15
 )
17 16
 
... ...
@@ -48,7 +47,7 @@ func (cli *DockerCli) CmdPull(args ...string) error {
48 48
 		tag = x.Tag()
49 49
 	}
50 50
 
51
-	ref := registry.ParseReference(tag)
51
+	registryRef := registry.ParseReference(tag)
52 52
 
53 53
 	// Resolve the Repository name from fqn to RepositoryInfo
54 54
 	repoInfo, err := registry.ParseRepositoryInfo(distributionRef)
... ...
@@ -59,27 +58,26 @@ func (cli *DockerCli) CmdPull(args ...string) error {
59 59
 	authConfig := cli.resolveAuthConfig(repoInfo.Index)
60 60
 	requestPrivilege := cli.registryAuthenticationPrivilegedFunc(repoInfo.Index, "pull")
61 61
 
62
-	if isTrusted() && !ref.HasDigest() {
62
+	if isTrusted() && !registryRef.HasDigest() {
63 63
 		// Check if tag is digest
64
-		return cli.trustedPull(repoInfo, ref, authConfig, requestPrivilege)
64
+		return cli.trustedPull(repoInfo, registryRef, authConfig, requestPrivilege)
65 65
 	}
66 66
 
67
-	return cli.imagePullPrivileged(authConfig, distributionRef.String(), "", requestPrivilege)
67
+	return cli.imagePullPrivileged(authConfig, distributionRef.String(), requestPrivilege)
68 68
 }
69 69
 
70
-func (cli *DockerCli) imagePullPrivileged(authConfig types.AuthConfig, imageID, tag string, requestPrivilege client.RequestPrivilegeFunc) error {
70
+func (cli *DockerCli) imagePullPrivileged(authConfig types.AuthConfig, ref string, requestPrivilege types.RequestPrivilegeFunc) error {
71 71
 
72 72
 	encodedAuth, err := encodeAuthToBase64(authConfig)
73 73
 	if err != nil {
74 74
 		return err
75 75
 	}
76 76
 	options := types.ImagePullOptions{
77
-		ImageID:      imageID,
78
-		Tag:          tag,
79
-		RegistryAuth: encodedAuth,
77
+		RegistryAuth:  encodedAuth,
78
+		PrivilegeFunc: requestPrivilege,
80 79
 	}
81 80
 
82
-	responseBody, err := cli.client.ImagePull(context.Background(), options, requestPrivilege)
81
+	responseBody, err := cli.client.ImagePull(context.Background(), ref, options)
83 82
 	if err != nil {
84 83
 		return err
85 84
 	}
... ...
@@ -1,7 +1,6 @@
1 1
 package client
2 2
 
3 3
 import (
4
-	"errors"
5 4
 	"io"
6 5
 
7 6
 	"golang.org/x/net/context"
... ...
@@ -11,7 +10,6 @@ import (
11 11
 	flag "github.com/docker/docker/pkg/mflag"
12 12
 	"github.com/docker/docker/reference"
13 13
 	"github.com/docker/docker/registry"
14
-	"github.com/docker/engine-api/client"
15 14
 	"github.com/docker/engine-api/types"
16 15
 )
17 16
 
... ...
@@ -30,14 +28,6 @@ func (cli *DockerCli) CmdPush(args ...string) error {
30 30
 		return err
31 31
 	}
32 32
 
33
-	var tag string
34
-	switch x := ref.(type) {
35
-	case reference.Canonical:
36
-		return errors.New("cannot push a digest reference")
37
-	case reference.NamedTagged:
38
-		tag = x.Tag()
39
-	}
40
-
41 33
 	// Resolve the Repository name from fqn to RepositoryInfo
42 34
 	repoInfo, err := registry.ParseRepositoryInfo(ref)
43 35
 	if err != nil {
... ...
@@ -48,10 +38,10 @@ func (cli *DockerCli) CmdPush(args ...string) error {
48 48
 
49 49
 	requestPrivilege := cli.registryAuthenticationPrivilegedFunc(repoInfo.Index, "push")
50 50
 	if isTrusted() {
51
-		return cli.trustedPush(repoInfo, tag, authConfig, requestPrivilege)
51
+		return cli.trustedPush(repoInfo, ref, authConfig, requestPrivilege)
52 52
 	}
53 53
 
54
-	responseBody, err := cli.imagePushPrivileged(authConfig, ref.Name(), tag, requestPrivilege)
54
+	responseBody, err := cli.imagePushPrivileged(authConfig, ref.String(), requestPrivilege)
55 55
 	if err != nil {
56 56
 		return err
57 57
 	}
... ...
@@ -61,16 +51,15 @@ func (cli *DockerCli) CmdPush(args ...string) error {
61 61
 	return jsonmessage.DisplayJSONMessagesStream(responseBody, cli.out, cli.outFd, cli.isTerminalOut, nil)
62 62
 }
63 63
 
64
-func (cli *DockerCli) imagePushPrivileged(authConfig types.AuthConfig, imageID, tag string, requestPrivilege client.RequestPrivilegeFunc) (io.ReadCloser, error) {
64
+func (cli *DockerCli) imagePushPrivileged(authConfig types.AuthConfig, ref string, requestPrivilege types.RequestPrivilegeFunc) (io.ReadCloser, error) {
65 65
 	encodedAuth, err := encodeAuthToBase64(authConfig)
66 66
 	if err != nil {
67 67
 		return nil, err
68 68
 	}
69 69
 	options := types.ImagePushOptions{
70
-		ImageID:      imageID,
71
-		Tag:          tag,
72
-		RegistryAuth: encodedAuth,
70
+		RegistryAuth:  encodedAuth,
71
+		PrivilegeFunc: requestPrivilege,
73 72
 	}
74 73
 
75
-	return cli.client.ImagePush(context.Background(), options, requestPrivilege)
74
+	return cli.client.ImagePush(context.Background(), ref, options)
76 75
 }
... ...
@@ -42,14 +42,13 @@ func (cli *DockerCli) CmdRm(args ...string) error {
42 42
 	return nil
43 43
 }
44 44
 
45
-func (cli *DockerCli) removeContainer(containerID string, removeVolumes, removeLinks, force bool) error {
45
+func (cli *DockerCli) removeContainer(container string, removeVolumes, removeLinks, force bool) error {
46 46
 	options := types.ContainerRemoveOptions{
47
-		ContainerID:   containerID,
48 47
 		RemoveVolumes: removeVolumes,
49 48
 		RemoveLinks:   removeLinks,
50 49
 		Force:         force,
51 50
 	}
52
-	if err := cli.client.ContainerRemove(context.Background(), options); err != nil {
51
+	if err := cli.client.ContainerRemove(context.Background(), container, options); err != nil {
53 52
 		return err
54 53
 	}
55 54
 	return nil
... ...
@@ -32,14 +32,13 @@ func (cli *DockerCli) CmdRmi(args ...string) error {
32 32
 	}
33 33
 
34 34
 	var errs []string
35
-	for _, name := range cmd.Args() {
35
+	for _, image := range cmd.Args() {
36 36
 		options := types.ImageRemoveOptions{
37
-			ImageID:       name,
38 37
 			Force:         *force,
39 38
 			PruneChildren: !*noprune,
40 39
 		}
41 40
 
42
-		dels, err := cli.client.ImageRemove(context.Background(), options)
41
+		dels, err := cli.client.ImageRemove(context.Background(), image, options)
43 42
 		if err != nil {
44 43
 			errs = append(errs, err.Error())
45 44
 		} else {
... ...
@@ -198,15 +198,14 @@ func (cli *DockerCli) CmdRun(args ...string) error {
198 198
 		}
199 199
 
200 200
 		options := types.ContainerAttachOptions{
201
-			ContainerID: createResponse.ID,
202
-			Stream:      true,
203
-			Stdin:       config.AttachStdin,
204
-			Stdout:      config.AttachStdout,
205
-			Stderr:      config.AttachStderr,
206
-			DetachKeys:  cli.configFile.DetachKeys,
201
+			Stream:     true,
202
+			Stdin:      config.AttachStdin,
203
+			Stdout:     config.AttachStdout,
204
+			Stderr:     config.AttachStderr,
205
+			DetachKeys: cli.configFile.DetachKeys,
207 206
 		}
208 207
 
209
-		resp, errAttach := cli.client.ContainerAttach(context.Background(), options)
208
+		resp, errAttach := cli.client.ContainerAttach(context.Background(), createResponse.ID, options)
210 209
 		if errAttach != nil && errAttach != httputil.ErrPersistEOF {
211 210
 			// ContainerAttach returns an ErrPersistEOF (connection closed)
212 211
 			// means server met an error and put it in Hijacked connection
... ...
@@ -47,11 +47,11 @@ func (cli *DockerCli) CmdSearch(args ...string) error {
47 47
 	}
48 48
 
49 49
 	options := types.ImageSearchOptions{
50
-		Term:         name,
51
-		RegistryAuth: encodedAuth,
50
+		RegistryAuth:  encodedAuth,
51
+		PrivilegeFunc: requestPrivilege,
52 52
 	}
53 53
 
54
-	unorderedResults, err := cli.client.ImageSearch(context.Background(), options, requestPrivilege)
54
+	unorderedResults, err := cli.client.ImageSearch(context.Background(), name, options)
55 55
 	if err != nil {
56 56
 		return err
57 57
 	}
... ...
@@ -65,14 +65,14 @@ func (cli *DockerCli) CmdStart(args ...string) error {
65 65
 		}
66 66
 
67 67
 		// 2. Attach to the container.
68
-		containerID := cmd.Arg(0)
69
-		c, err := cli.client.ContainerInspect(context.Background(), containerID)
68
+		container := cmd.Arg(0)
69
+		c, err := cli.client.ContainerInspect(context.Background(), container)
70 70
 		if err != nil {
71 71
 			return err
72 72
 		}
73 73
 
74 74
 		if !c.Config.Tty {
75
-			sigc := cli.forwardAllSignals(containerID)
75
+			sigc := cli.forwardAllSignals(container)
76 76
 			defer signal.StopCatch(sigc)
77 77
 		}
78 78
 
... ...
@@ -81,12 +81,11 @@ func (cli *DockerCli) CmdStart(args ...string) error {
81 81
 		}
82 82
 
83 83
 		options := types.ContainerAttachOptions{
84
-			ContainerID: containerID,
85
-			Stream:      true,
86
-			Stdin:       *openStdin && c.Config.OpenStdin,
87
-			Stdout:      true,
88
-			Stderr:      true,
89
-			DetachKeys:  cli.configFile.DetachKeys,
84
+			Stream:     true,
85
+			Stdin:      *openStdin && c.Config.OpenStdin,
86
+			Stdout:     true,
87
+			Stderr:     true,
88
+			DetachKeys: cli.configFile.DetachKeys,
90 89
 		}
91 90
 
92 91
 		var in io.ReadCloser
... ...
@@ -95,7 +94,7 @@ func (cli *DockerCli) CmdStart(args ...string) error {
95 95
 			in = cli.in
96 96
 		}
97 97
 
98
-		resp, errAttach := cli.client.ContainerAttach(context.Background(), options)
98
+		resp, errAttach := cli.client.ContainerAttach(context.Background(), container, options)
99 99
 		if errAttach != nil && errAttach != httputil.ErrPersistEOF {
100 100
 			// ContainerAttach return an ErrPersistEOF (connection closed)
101 101
 			// means server met an error and put it in Hijacked connection
... ...
@@ -113,7 +112,7 @@ func (cli *DockerCli) CmdStart(args ...string) error {
113 113
 		})
114 114
 
115 115
 		// 3. Start the container.
116
-		if err := cli.client.ContainerStart(context.Background(), containerID); err != nil {
116
+		if err := cli.client.ContainerStart(context.Background(), container); err != nil {
117 117
 			cancelFun()
118 118
 			<-cErr
119 119
 			return err
... ...
@@ -121,14 +120,14 @@ func (cli *DockerCli) CmdStart(args ...string) error {
121 121
 
122 122
 		// 4. Wait for attachment to break.
123 123
 		if c.Config.Tty && cli.isTerminalOut {
124
-			if err := cli.monitorTtySize(containerID, false); err != nil {
124
+			if err := cli.monitorTtySize(container, false); err != nil {
125 125
 				fmt.Fprintf(cli.err, "Error monitoring TTY size: %s\n", err)
126 126
 			}
127 127
 		}
128 128
 		if attchErr := <-cErr; attchErr != nil {
129 129
 			return attchErr
130 130
 		}
131
-		_, status, err := getExitCode(cli, containerID)
131
+		_, status, err := getExitCode(cli, container)
132 132
 		if err != nil {
133 133
 			return err
134 134
 		}
... ...
@@ -144,14 +143,14 @@ func (cli *DockerCli) CmdStart(args ...string) error {
144 144
 	return nil
145 145
 }
146 146
 
147
-func (cli *DockerCli) startContainersWithoutAttachments(containerIDs []string) error {
147
+func (cli *DockerCli) startContainersWithoutAttachments(containers []string) error {
148 148
 	var failedContainers []string
149
-	for _, containerID := range containerIDs {
150
-		if err := cli.client.ContainerStart(context.Background(), containerID); err != nil {
149
+	for _, container := range containers {
150
+		if err := cli.client.ContainerStart(context.Background(), container); err != nil {
151 151
 			fmt.Fprintf(cli.err, "%s\n", err)
152
-			failedContainers = append(failedContainers, containerID)
152
+			failedContainers = append(failedContainers, container)
153 153
 		} else {
154
-			fmt.Fprintf(cli.out, "%s\n", containerID)
154
+			fmt.Fprintf(cli.out, "%s\n", container)
155 155
 		}
156 156
 	}
157 157
 
... ...
@@ -1,13 +1,10 @@
1 1
 package client
2 2
 
3 3
 import (
4
-	"errors"
5
-
6 4
 	"golang.org/x/net/context"
7 5
 
8 6
 	Cli "github.com/docker/docker/cli"
9 7
 	flag "github.com/docker/docker/pkg/mflag"
10
-	"github.com/docker/docker/reference"
11 8
 	"github.com/docker/engine-api/types"
12 9
 )
13 10
 
... ...
@@ -21,26 +18,9 @@ func (cli *DockerCli) CmdTag(args ...string) error {
21 21
 
22 22
 	cmd.ParseFlags(args, true)
23 23
 
24
-	ref, err := reference.ParseNamed(cmd.Arg(1))
25
-	if err != nil {
26
-		return err
27
-	}
28
-
29
-	if _, isCanonical := ref.(reference.Canonical); isCanonical {
30
-		return errors.New("refusing to create a tag with a digest reference")
31
-	}
32
-
33
-	var tag string
34
-	if tagged, isTagged := ref.(reference.NamedTagged); isTagged {
35
-		tag = tagged.Tag()
36
-	}
37
-
38 24
 	options := types.ImageTagOptions{
39
-		ImageID:        cmd.Arg(0),
40
-		RepositoryName: ref.Name(),
41
-		Tag:            tag,
42
-		Force:          *force,
25
+		Force: *force,
43 26
 	}
44 27
 
45
-	return cli.client.ImageTag(context.Background(), options)
28
+	return cli.client.ImageTag(context.Background(), cmd.Arg(0), cmd.Arg(1), options)
46 29
 }
... ...
@@ -27,7 +27,6 @@ import (
27 27
 	flag "github.com/docker/docker/pkg/mflag"
28 28
 	"github.com/docker/docker/reference"
29 29
 	"github.com/docker/docker/registry"
30
-	apiclient "github.com/docker/engine-api/client"
31 30
 	"github.com/docker/engine-api/types"
32 31
 	registrytypes "github.com/docker/engine-api/types/registry"
33 32
 	"github.com/docker/go-connections/tlsconfig"
... ...
@@ -280,13 +279,10 @@ func (cli *DockerCli) tagTrusted(trustedRef reference.Canonical, ref reference.N
280 280
 	fmt.Fprintf(cli.out, "Tagging %s as %s\n", trustedRef.String(), ref.String())
281 281
 
282 282
 	options := types.ImageTagOptions{
283
-		ImageID:        trustedRef.String(),
284
-		RepositoryName: trustedRef.Name(),
285
-		Tag:            ref.Tag(),
286
-		Force:          true,
283
+		Force: true,
287 284
 	}
288 285
 
289
-	return cli.client.ImageTag(context.Background(), options)
286
+	return cli.client.ImageTag(context.Background(), trustedRef.String(), ref.String(), options)
290 287
 }
291 288
 
292 289
 func notaryError(repoName string, err error) error {
... ...
@@ -319,7 +315,7 @@ func notaryError(repoName string, err error) error {
319 319
 	return err
320 320
 }
321 321
 
322
-func (cli *DockerCli) trustedPull(repoInfo *registry.RepositoryInfo, ref registry.Reference, authConfig types.AuthConfig, requestPrivilege apiclient.RequestPrivilegeFunc) error {
322
+func (cli *DockerCli) trustedPull(repoInfo *registry.RepositoryInfo, ref registry.Reference, authConfig types.AuthConfig, requestPrivilege types.RequestPrivilegeFunc) error {
323 323
 	var refs []target
324 324
 
325 325
 	notaryRepo, err := cli.getNotaryRepository(repoInfo, authConfig, "pull")
... ...
@@ -377,7 +373,11 @@ func (cli *DockerCli) trustedPull(repoInfo *registry.RepositoryInfo, ref registr
377 377
 		}
378 378
 		fmt.Fprintf(cli.out, "Pull (%d of %d): %s%s@%s\n", i+1, len(refs), repoInfo.Name(), displayTag, r.digest)
379 379
 
380
-		if err := cli.imagePullPrivileged(authConfig, repoInfo.Name(), r.digest.String(), requestPrivilege); err != nil {
380
+		ref, err := reference.WithDigest(repoInfo, r.digest)
381
+		if err != nil {
382
+			return err
383
+		}
384
+		if err := cli.imagePullPrivileged(authConfig, ref.String(), requestPrivilege); err != nil {
381 385
 			return err
382 386
 		}
383 387
 
... ...
@@ -399,8 +399,8 @@ func (cli *DockerCli) trustedPull(repoInfo *registry.RepositoryInfo, ref registr
399 399
 	return nil
400 400
 }
401 401
 
402
-func (cli *DockerCli) trustedPush(repoInfo *registry.RepositoryInfo, tag string, authConfig types.AuthConfig, requestPrivilege apiclient.RequestPrivilegeFunc) error {
403
-	responseBody, err := cli.imagePushPrivileged(authConfig, repoInfo.Name(), tag, requestPrivilege)
402
+func (cli *DockerCli) trustedPush(repoInfo *registry.RepositoryInfo, ref reference.Named, authConfig types.AuthConfig, requestPrivilege types.RequestPrivilegeFunc) error {
403
+	responseBody, err := cli.imagePushPrivileged(authConfig, ref.String(), requestPrivilege)
404 404
 	if err != nil {
405 405
 		return err
406 406
 	}
... ...
@@ -434,6 +434,14 @@ func (cli *DockerCli) trustedPush(repoInfo *registry.RepositoryInfo, tag string,
434 434
 		}
435 435
 	}
436 436
 
437
+	var tag string
438
+	switch x := ref.(type) {
439
+	case reference.Canonical:
440
+		return errors.New("cannot push a digest reference")
441
+	case reference.NamedTagged:
442
+		tag = x.Tag()
443
+	}
444
+
437 445
 	// We want trust signatures to always take an explicit tag,
438 446
 	// otherwise it will act as an untrusted push.
439 447
 	if tag == "" {
... ...
@@ -46,7 +46,7 @@ func encodeAuthToBase64(authConfig types.AuthConfig) (string, error) {
46 46
 	return base64.URLEncoding.EncodeToString(buf), nil
47 47
 }
48 48
 
49
-func (cli *DockerCli) registryAuthenticationPrivilegedFunc(index *registrytypes.IndexInfo, cmdName string) client.RequestPrivilegeFunc {
49
+func (cli *DockerCli) registryAuthenticationPrivilegedFunc(index *registrytypes.IndexInfo, cmdName string) types.RequestPrivilegeFunc {
50 50
 	return func() (string, error) {
51 51
 		fmt.Fprintf(cli.out, "\nPlease login prior to %s:\n", cmdName)
52 52
 		indexServer := registry.GetAuthConfigKey(index)
... ...
@@ -69,16 +69,15 @@ func (cli *DockerCli) resizeTtyTo(id string, height, width int, isExec bool) {
69 69
 	}
70 70
 
71 71
 	options := types.ResizeOptions{
72
-		ID:     id,
73 72
 		Height: height,
74 73
 		Width:  width,
75 74
 	}
76 75
 
77 76
 	var err error
78 77
 	if isExec {
79
-		err = cli.client.ContainerExecResize(context.Background(), options)
78
+		err = cli.client.ContainerExecResize(context.Background(), id, options)
80 79
 	} else {
81
-		err = cli.client.ContainerResize(context.Background(), options)
80
+		err = cli.client.ContainerResize(context.Background(), id, options)
82 81
 	}
83 82
 
84 83
 	if err != nil {
... ...
@@ -15,7 +15,7 @@ import (
15 15
 
16 16
 // execBackend includes functions to implement to provide exec functionality.
17 17
 type execBackend interface {
18
-	ContainerExecCreate(config *types.ExecConfig) (string, error)
18
+	ContainerExecCreate(name string, config *types.ExecConfig) (string, error)
19 19
 	ContainerExecInspect(id string) (*backend.ExecInspect, error)
20 20
 	ContainerExecResize(name string, height, width int) error
21 21
 	ContainerExecStart(name string, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer) error
... ...
@@ -36,14 +36,13 @@ func (s *containerRouter) postContainerExecCreate(ctx context.Context, w http.Re
36 36
 	if err := json.NewDecoder(r.Body).Decode(execConfig); err != nil {
37 37
 		return err
38 38
 	}
39
-	execConfig.Container = name
40 39
 
41 40
 	if len(execConfig.Cmd) == 0 {
42 41
 		return fmt.Errorf("No exec command specified")
43 42
 	}
44 43
 
45 44
 	// Register an instance of Exec in container.
46
-	id, err := s.backend.ContainerExecCreate(execConfig)
45
+	id, err := s.backend.ContainerExecCreate(name, execConfig)
47 46
 	if err != nil {
48 47
 		logrus.Errorf("Error setting up exec command in container %s: %v", name, err)
49 48
 		return err
... ...
@@ -14,7 +14,7 @@ type Backend interface {
14 14
 	GetNetworkByName(idName string) (libnetwork.Network, error)
15 15
 	GetNetworksByID(partialID string) []libnetwork.Network
16 16
 	FilterNetworks(netFilters filters.Args) ([]libnetwork.Network, error)
17
-	CreateNetwork(types.NetworkCreate) (*types.NetworkCreateResponse, error)
17
+	CreateNetwork(nc types.NetworkCreateRequest) (*types.NetworkCreateResponse, error)
18 18
 	ConnectContainerToNetwork(containerName, networkName string, endpointConfig *network.EndpointSettings) error
19 19
 	DisconnectContainerFromNetwork(containerName string, network libnetwork.Network, force bool) error
20 20
 	DeleteNetwork(name string) error
... ...
@@ -51,7 +51,7 @@ func (n *networkRouter) getNetwork(ctx context.Context, w http.ResponseWriter, r
51 51
 }
52 52
 
53 53
 func (n *networkRouter) postNetworkCreate(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
54
-	var create types.NetworkCreate
54
+	var create types.NetworkCreateRequest
55 55
 
56 56
 	if err := httputils.ParseForm(r); err != nil {
57 57
 		return err
... ...
@@ -88,8 +88,8 @@ func (d *Daemon) getActiveContainer(name string) (*container.Container, error) {
88 88
 }
89 89
 
90 90
 // ContainerExecCreate sets up an exec in a running container.
91
-func (d *Daemon) ContainerExecCreate(config *types.ExecConfig) (string, error) {
92
-	container, err := d.getActiveContainer(config.Container)
91
+func (d *Daemon) ContainerExecCreate(name string, config *types.ExecConfig) (string, error) {
92
+	container, err := d.getActiveContainer(name)
93 93
 	if err != nil {
94 94
 		return "", err
95 95
 	}
... ...
@@ -94,7 +94,7 @@ func (daemon *Daemon) getAllNetworks() []libnetwork.Network {
94 94
 }
95 95
 
96 96
 // CreateNetwork creates a network with the given name, driver and other optional parameters
97
-func (daemon *Daemon) CreateNetwork(create types.NetworkCreate) (*types.NetworkCreateResponse, error) {
97
+func (daemon *Daemon) CreateNetwork(create types.NetworkCreateRequest) (*types.NetworkCreateResponse, error) {
98 98
 	if runconfig.IsPreDefinedNetwork(create.Name) {
99 99
 		err := fmt.Errorf("%s is a pre-defined network and cannot be created", create.Name)
100 100
 		return nil, errors.NewErrorWithStatusCode(err, http.StatusForbidden)
... ...
@@ -28,9 +28,11 @@ func (s *DockerSuite) TestApiNetworkCreateDelete(c *check.C) {
28 28
 	testRequires(c, DaemonIsLinux)
29 29
 	// Create a network
30 30
 	name := "testnetwork"
31
-	config := types.NetworkCreate{
32
-		Name:           name,
33
-		CheckDuplicate: true,
31
+	config := types.NetworkCreateRequest{
32
+		Name: name,
33
+		NetworkCreate: types.NetworkCreate{
34
+			CheckDuplicate: true,
35
+		},
34 36
 	}
35 37
 	id := createNetwork(c, config, true)
36 38
 	c.Assert(isNetworkAvailable(c, name), checker.Equals, true)
... ...
@@ -43,13 +45,17 @@ func (s *DockerSuite) TestApiNetworkCreateDelete(c *check.C) {
43 43
 func (s *DockerSuite) TestApiNetworkCreateCheckDuplicate(c *check.C) {
44 44
 	testRequires(c, DaemonIsLinux)
45 45
 	name := "testcheckduplicate"
46
-	configOnCheck := types.NetworkCreate{
47
-		Name:           name,
48
-		CheckDuplicate: true,
46
+	configOnCheck := types.NetworkCreateRequest{
47
+		Name: name,
48
+		NetworkCreate: types.NetworkCreate{
49
+			CheckDuplicate: true,
50
+		},
49 51
 	}
50
-	configNotCheck := types.NetworkCreate{
51
-		Name:           name,
52
-		CheckDuplicate: false,
52
+	configNotCheck := types.NetworkCreateRequest{
53
+		Name: name,
54
+		NetworkCreate: types.NetworkCreate{
55
+			CheckDuplicate: false,
56
+		},
53 57
 	}
54 58
 
55 59
 	// Creating a new network first
... ...
@@ -99,11 +105,13 @@ func (s *DockerSuite) TestApiNetworkInspect(c *check.C) {
99 99
 		Driver: "default",
100 100
 		Config: []network.IPAMConfig{{Subnet: "172.28.0.0/16", IPRange: "172.28.5.0/24", Gateway: "172.28.5.254"}},
101 101
 	}
102
-	config := types.NetworkCreate{
103
-		Name:    "br0",
104
-		Driver:  "bridge",
105
-		IPAM:    ipam,
106
-		Options: map[string]string{"foo": "bar", "opts": "dopts"},
102
+	config := types.NetworkCreateRequest{
103
+		Name: "br0",
104
+		NetworkCreate: types.NetworkCreate{
105
+			Driver:  "bridge",
106
+			IPAM:    ipam,
107
+			Options: map[string]string{"foo": "bar", "opts": "dopts"},
108
+		},
107 109
 	}
108 110
 	id0 := createNetwork(c, config, true)
109 111
 	c.Assert(isNetworkAvailable(c, "br0"), checker.Equals, true)
... ...
@@ -125,7 +133,7 @@ func (s *DockerSuite) TestApiNetworkConnectDisconnect(c *check.C) {
125 125
 	testRequires(c, DaemonIsLinux)
126 126
 	// Create test network
127 127
 	name := "testnetwork"
128
-	config := types.NetworkCreate{
128
+	config := types.NetworkCreateRequest{
129 129
 		Name: name,
130 130
 	}
131 131
 	id := createNetwork(c, config, true)
... ...
@@ -169,10 +177,12 @@ func (s *DockerSuite) TestApiNetworkIpamMultipleBridgeNetworks(c *check.C) {
169 169
 		Driver: "default",
170 170
 		Config: []network.IPAMConfig{{Subnet: "192.178.0.0/16", IPRange: "192.178.128.0/17", Gateway: "192.178.138.100"}},
171 171
 	}
172
-	config0 := types.NetworkCreate{
173
-		Name:   "test0",
174
-		Driver: "bridge",
175
-		IPAM:   ipam0,
172
+	config0 := types.NetworkCreateRequest{
173
+		Name: "test0",
174
+		NetworkCreate: types.NetworkCreate{
175
+			Driver: "bridge",
176
+			IPAM:   ipam0,
177
+		},
176 178
 	}
177 179
 	id0 := createNetwork(c, config0, true)
178 180
 	c.Assert(isNetworkAvailable(c, "test0"), checker.Equals, true)
... ...
@@ -182,10 +192,12 @@ func (s *DockerSuite) TestApiNetworkIpamMultipleBridgeNetworks(c *check.C) {
182 182
 		Config: []network.IPAMConfig{{Subnet: "192.178.128.0/17", Gateway: "192.178.128.1"}},
183 183
 	}
184 184
 	// test1 bridge network overlaps with test0
185
-	config1 := types.NetworkCreate{
186
-		Name:   "test1",
187
-		Driver: "bridge",
188
-		IPAM:   ipam1,
185
+	config1 := types.NetworkCreateRequest{
186
+		Name: "test1",
187
+		NetworkCreate: types.NetworkCreate{
188
+			Driver: "bridge",
189
+			IPAM:   ipam1,
190
+		},
189 191
 	}
190 192
 	createNetwork(c, config1, false)
191 193
 	c.Assert(isNetworkAvailable(c, "test1"), checker.Equals, false)
... ...
@@ -195,10 +207,12 @@ func (s *DockerSuite) TestApiNetworkIpamMultipleBridgeNetworks(c *check.C) {
195 195
 		Config: []network.IPAMConfig{{Subnet: "192.169.0.0/16", Gateway: "192.169.100.100"}},
196 196
 	}
197 197
 	// test2 bridge network does not overlap
198
-	config2 := types.NetworkCreate{
199
-		Name:   "test2",
200
-		Driver: "bridge",
201
-		IPAM:   ipam2,
198
+	config2 := types.NetworkCreateRequest{
199
+		Name: "test2",
200
+		NetworkCreate: types.NetworkCreate{
201
+			Driver: "bridge",
202
+			IPAM:   ipam2,
203
+		},
202 204
 	}
203 205
 	createNetwork(c, config2, true)
204 206
 	c.Assert(isNetworkAvailable(c, "test2"), checker.Equals, true)
... ...
@@ -209,11 +223,11 @@ func (s *DockerSuite) TestApiNetworkIpamMultipleBridgeNetworks(c *check.C) {
209 209
 	c.Assert(isNetworkAvailable(c, "test1"), checker.Equals, true)
210 210
 
211 211
 	// for networks w/o ipam specified, docker will choose proper non-overlapping subnets
212
-	createNetwork(c, types.NetworkCreate{Name: "test3"}, true)
212
+	createNetwork(c, types.NetworkCreateRequest{Name: "test3"}, true)
213 213
 	c.Assert(isNetworkAvailable(c, "test3"), checker.Equals, true)
214
-	createNetwork(c, types.NetworkCreate{Name: "test4"}, true)
214
+	createNetwork(c, types.NetworkCreateRequest{Name: "test4"}, true)
215 215
 	c.Assert(isNetworkAvailable(c, "test4"), checker.Equals, true)
216
-	createNetwork(c, types.NetworkCreate{Name: "test5"}, true)
216
+	createNetwork(c, types.NetworkCreateRequest{Name: "test5"}, true)
217 217
 	c.Assert(isNetworkAvailable(c, "test5"), checker.Equals, true)
218 218
 
219 219
 	for i := 1; i < 6; i++ {
... ...
@@ -230,9 +244,11 @@ func (s *DockerSuite) TestApiCreateDeletePredefinedNetworks(c *check.C) {
230 230
 
231 231
 func createDeletePredefinedNetwork(c *check.C, name string) {
232 232
 	// Create pre-defined network
233
-	config := types.NetworkCreate{
234
-		Name:           name,
235
-		CheckDuplicate: true,
233
+	config := types.NetworkCreateRequest{
234
+		Name: name,
235
+		NetworkCreate: types.NetworkCreate{
236
+			CheckDuplicate: true,
237
+		},
236 238
 	}
237 239
 	shouldSucceed := false
238 240
 	createNetwork(c, config, shouldSucceed)
... ...
@@ -289,7 +305,7 @@ func getNetworkResource(c *check.C, id string) *types.NetworkResource {
289 289
 	return &nr
290 290
 }
291 291
 
292
-func createNetwork(c *check.C, config types.NetworkCreate, shouldSucceed bool) string {
292
+func createNetwork(c *check.C, config types.NetworkCreateRequest, shouldSucceed bool) string {
293 293
 	status, resp, err := sockRequest("POST", "/networks/create", config)
294 294
 	if !shouldSucceed {
295 295
 		c.Assert(status, checker.Not(checker.Equals), http.StatusCreated)