diff --git a/api/handlers.go b/api/handlers.go index 66a70e18bc..ce8b96f61d 100644 --- a/api/handlers.go +++ b/api/handlers.go @@ -647,7 +647,7 @@ func postImagesCreate(c *context, w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if image := r.Form.Get("fromImage"); image != "" { //pull - authConfig := dockerclient.AuthConfig{} + authConfig := apitypes.AuthConfig{} buf, err := base64.URLEncoding.DecodeString(r.Header.Get("X-Registry-Auth")) if err == nil { json.Unmarshal(buf, &authConfig) diff --git a/cluster/cluster.go b/cluster/cluster.go index b97a6940c2..55ccb36921 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -57,7 +57,7 @@ type Cluster interface { // `callback` can be called multiple time // `where` is where it is being pulled // `status` is the current status, like "", "in progress" or "downloaded - Pull(name string, authConfig *dockerclient.AuthConfig, callback func(where, status string, err error)) + Pull(name string, authConfig *types.AuthConfig, callback func(where, status string, err error)) // Import image // `callback` can be called multiple time diff --git a/cluster/mesos/cluster.go b/cluster/mesos/cluster.go index 92166c99e3..4e168f66ba 100644 --- a/cluster/mesos/cluster.go +++ b/cluster/mesos/cluster.go @@ -15,6 +15,8 @@ import ( log "github.com/Sirupsen/logrus" "github.com/docker/engine-api/types" + containertypes "github.com/docker/engine-api/types/container" + networktypes "github.com/docker/engine-api/types/network" "github.com/docker/swarm/cluster" "github.com/docker/swarm/cluster/mesos/task" "github.com/docker/swarm/scheduler" @@ -183,14 +185,14 @@ func (c *Cluster) UnregisterEventHandler(h cluster.EventHandler) { func (c *Cluster) StartContainer(container *cluster.Container, hostConfig *dockerclient.HostConfig) error { // if the container was started less than a second ago in detach mode, do not start it if time.Now().Unix()-container.Created > 1 || container.Config.Labels[cluster.SwarmLabelNamespace+".mesos.detach"] != "true" { - return container.Engine.StartContainer(container.Id, hostConfig) + return container.Engine.StartContainer(container.ID, hostConfig) } return nil } // CreateContainer for container creation in Mesos task -func (c *Cluster) CreateContainer(config *cluster.ContainerConfig, name string, authConfig *dockerclient.AuthConfig) (*cluster.Container, error) { - if config.Memory == 0 && config.CpuShares == 0 { +func (c *Cluster) CreateContainer(config *cluster.ContainerConfig, name string, authConfig *types.AuthConfig) (*cluster.Container, error) { + if config.Memory == 0 && config.CPUShares == 0 { return nil, errResourcesNeeded } @@ -263,7 +265,7 @@ func (c *Cluster) CreateNetwork(request *types.NetworkCreate) (*types.NetworkCre if len(parts) == 2 { // a node was specified, create the container only on this node request.Name = parts[1] - config = cluster.BuildContainerConfig(dockerclient.ContainerConfig{Env: []string{"constraint:node==" + parts[0]}}) + config = cluster.BuildContainerConfig(containertypes.Config{Env: []string{"constraint:node==" + parts[0]}}, containertypes.HostConfig{}, networktypes.NetworkingConfig{}) } c.scheduler.Lock() @@ -363,7 +365,7 @@ func (c *Cluster) RemoveImage(image *cluster.Image) ([]types.ImageDelete, error) } // Pull pulls images on the cluster nodes -func (c *Cluster) Pull(name string, authConfig *dockerclient.AuthConfig, callback func(where, status string, err error)) { +func (c *Cluster) Pull(name string, authConfig *types.AuthConfig, callback func(where, status string, err error)) { } @@ -596,7 +598,7 @@ func (c *Cluster) LaunchTask(t *task.Task) bool { // We can use this to find the right container. inspect := []dockerclient.ContainerInfo{} if data != nil && json.Unmarshal(data, &inspect) == nil && len(inspect) == 1 { - container := &cluster.Container{Container: dockerclient.Container{Id: inspect[0].Id}, Engine: s.engine} + container := &cluster.Container{Container: types.Container{ID: inspect[0].Id}, Engine: s.engine} if container, err := container.Refresh(); err == nil { if !t.Stopped() { t.SetContainer(container) @@ -644,10 +646,14 @@ func (c *Cluster) BuildImage(buildImage *types.ImageBuildOptions, out io.Writer) c.scheduler.Lock() // get an engine - config := &cluster.ContainerConfig{dockerclient.ContainerConfig{ - CpuShares: buildImage.CPUShares, - Memory: buildImage.Memory, - }} + config := &cluster.ContainerConfig{ + HostConfig: containertypes.HostConfig{ + Resources: containertypes.Resources{ + CPUShares: buildImage.CPUShares, + Memory: buildImage.Memory, + }, + }, + } nodes, err := c.scheduler.SelectNodesForContainer(c.listNodes(), config) c.scheduler.Unlock() if err != nil { diff --git a/cluster/swarm/cluster.go b/cluster/swarm/cluster.go index f0844837e9..6b40f01f8c 100644 --- a/cluster/swarm/cluster.go +++ b/cluster/swarm/cluster.go @@ -15,6 +15,8 @@ import ( "github.com/docker/docker/pkg/discovery" "github.com/docker/docker/pkg/stringid" "github.com/docker/engine-api/types" + containertypes "github.com/docker/engine-api/types/container" + networktypes "github.com/docker/engine-api/types/network" "github.com/docker/go-units" "github.com/docker/swarm/cluster" "github.com/docker/swarm/scheduler" @@ -30,12 +32,14 @@ type pendingContainer struct { func (p *pendingContainer) ToContainer() *cluster.Container { container := &cluster.Container{ - Container: dockerclient.Container{ + Container: types.Container{ Labels: p.Config.Labels, }, Config: p.Config, - Info: dockerclient.ContainerInfo{ - HostConfig: &dockerclient.HostConfig{}, + Info: types.ContainerJSON{ + ContainerJSONBase: &types.ContainerJSONBase{ + HostConfig: &containertypes.HostConfig{}, + }, }, Engine: p.Engine, } @@ -134,7 +138,7 @@ func (c *Cluster) generateUniqueID() string { // StartContainer starts a container func (c *Cluster) StartContainer(container *cluster.Container, hostConfig *dockerclient.HostConfig) error { - return container.Engine.StartContainer(container.Id, hostConfig) + return container.Engine.StartContainer(container.ID, hostConfig) } // CreateContainer aka schedule a brand new container into the cluster. @@ -178,11 +182,11 @@ func (c *Cluster) createContainer(config *cluster.ContainerConfig, name string, config.SetSwarmID(swarmID) } - if network := c.Networks().Get(config.HostConfig.NetworkMode); network != nil && network.Scope == "local" { + if network := c.Networks().Get(string(config.HostConfig.NetworkMode)); network != nil && network.Scope == "local" { if !config.HaveNodeConstraint() { config.AddConstraint("node==~" + network.Engine.Name) } - config.HostConfig.NetworkMode = network.Name + config.HostConfig.NetworkMode = containertypes.NetworkMode(network.Name) } if withImageAffinity { @@ -475,7 +479,7 @@ func (c *Cluster) CreateNetwork(request *types.NetworkCreate) (response *types.N if len(parts) == 2 { // a node was specified, create the container only on this node request.Name = parts[1] - config = cluster.BuildContainerConfig(dockerclient.ContainerConfig{Env: []string{"constraint:node==" + parts[0]}}) + config = cluster.BuildContainerConfig(containertypes.Config{Env: []string{"constraint:node==" + parts[0]}}, containertypes.HostConfig{}, networktypes.NetworkingConfig{}) } nodes, err := c.scheduler.SelectNodesForContainer(c.listNodes(), config) @@ -536,7 +540,7 @@ func (c *Cluster) CreateVolume(request *types.VolumeCreateRequest) (*cluster.Vol wg.Wait() } else { - config := cluster.BuildContainerConfig(dockerclient.ContainerConfig{Env: []string{"constraint:node==" + parts[0]}}) + config := cluster.BuildContainerConfig(containertypes.Config{Env: []string{"constraint:node==" + parts[0]}}, containertypes.HostConfig{}, networktypes.NetworkingConfig{}) nodes, err := c.scheduler.SelectNodesForContainer(c.listNodes(), config) if err != nil { return nil, err @@ -580,7 +584,7 @@ func (c *Cluster) RemoveVolumes(name string) (bool, error) { } // Pull is exported -func (c *Cluster) Pull(name string, authConfig *dockerclient.AuthConfig, callback func(where, status string, err error)) { +func (c *Cluster) Pull(name string, authConfig *types.AuthConfig, callback func(where, status string, err error)) { var wg sync.WaitGroup c.RLock() @@ -908,11 +912,9 @@ func (c *Cluster) BuildImage(buildImage *types.ImageBuildOptions, out io.Writer) c.scheduler.Lock() // get an engine - config := cluster.BuildContainerConfig(dockerclient.ContainerConfig{ - CpuShares: buildImage.CPUShares, - Memory: buildImage.Memory, - Env: convertMapToKVStrings(buildImage.BuildArgs), - }) + config := cluster.BuildContainerConfig(containertypes.Config{Env: convertMapToKVStrings(buildImage.BuildArgs)}, + containertypes.HostConfig{Resources: containertypes.Resources{CPUShares: buildImage.CPUShares, Memory: buildImage.Memory}}, + networktypes.NetworkingConfig{}) buildImage.BuildArgs = convertKVStringsToMap(config.Env) nodes, err := c.scheduler.SelectNodesForContainer(c.listNodes(), config) c.scheduler.Unlock()