Merge pull request #18442 from MHBauer/move-configs

move configs structs to remove dependency on deamon
This commit is contained in:
Brian Goff 2015-12-07 13:38:43 -05:00
commit 41ae615aa1
11 changed files with 49 additions and 34 deletions

View File

@ -38,7 +38,7 @@ type stateBackend interface {
ContainerRename(oldName, newName string) error ContainerRename(oldName, newName string) error
ContainerResize(name string, height, width int) error ContainerResize(name string, height, width int) error
ContainerRestart(name string, seconds int) error ContainerRestart(name string, seconds int) error
ContainerRm(name string, config *daemon.ContainerRmConfig) error ContainerRm(name string, config *types.ContainerRmConfig) error
ContainerStart(name string, hostConfig *runconfig.HostConfig) error ContainerStart(name string, hostConfig *runconfig.HostConfig) error
ContainerStop(name string, seconds int) error ContainerStop(name string, seconds int) error
ContainerUnpause(name string) error ContainerUnpause(name string) error

View File

@ -358,7 +358,7 @@ func (s *containerRouter) deleteContainers(ctx context.Context, w http.ResponseW
} }
name := vars["name"] name := vars["name"]
config := &daemon.ContainerRmConfig{ config := &types.ContainerRmConfig{
ForceRemove: httputils.BoolValue(r, "force"), ForceRemove: httputils.BoolValue(r, "force"),
RemoveVolume: httputils.BoolValue(r, "v"), RemoveVolume: httputils.BoolValue(r, "v"),
RemoveLink: httputils.BoolValue(r, "link"), RemoveLink: httputils.BoolValue(r, "link"),

29
api/types/configs.go Normal file
View File

@ -0,0 +1,29 @@
package types
// configs holds structs used for internal communication between the
// frontend (such as an http server) and the backend (such as the
// docker daemon).
import (
"github.com/docker/docker/runconfig"
)
// ContainerRmConfig holds arguments for the container remove
// operation. This struct is used to tell the backend what operations
// to perform.
type ContainerRmConfig struct {
ForceRemove, RemoveVolume, RemoveLink bool
}
// ContainerCommitConfig contains build configs for commit operation,
// and is used when making a commit with the current state of the container.
type ContainerCommitConfig struct {
Pause bool
Repo string
Tag string
Author string
Comment string
// merge container config into commit config before commit
MergeConfigs bool
Config *runconfig.Config
}

View File

@ -8,9 +8,8 @@ import (
"io" "io"
"os" "os"
// TODO: remove dependency on daemon "github.com/docker/docker/api/types"
"github.com/docker/docker/container" "github.com/docker/docker/container"
"github.com/docker/docker/daemon"
"github.com/docker/docker/image" "github.com/docker/docker/image"
"github.com/docker/docker/runconfig" "github.com/docker/docker/runconfig"
) )
@ -122,9 +121,9 @@ type Docker interface {
// TODO: put warnings in the error // TODO: put warnings in the error
Create(*runconfig.Config, *runconfig.HostConfig) (*container.Container, []string, error) Create(*runconfig.Config, *runconfig.HostConfig) (*container.Container, []string, error)
// Remove removes a container specified by `id`. // Remove removes a container specified by `id`.
Remove(id string, cfg *daemon.ContainerRmConfig) error Remove(id string, cfg *types.ContainerRmConfig) error
// Commit creates a new Docker image from an existing Docker container. // Commit creates a new Docker image from an existing Docker container.
Commit(string, *daemon.ContainerCommitConfig) (string, error) Commit(string, *types.ContainerCommitConfig) (string, error)
// Copy copies/extracts a source FileInfo to a destination path inside a container // Copy copies/extracts a source FileInfo to a destination path inside a container
// specified by a container object. // specified by a container object.
// TODO: make an Extract method instead of passing `decompress` // TODO: make an Extract method instead of passing `decompress`

View File

@ -10,6 +10,7 @@ import (
"sync" "sync"
"github.com/Sirupsen/logrus" "github.com/Sirupsen/logrus"
"github.com/docker/docker/api/types"
"github.com/docker/docker/builder" "github.com/docker/docker/builder"
"github.com/docker/docker/builder/dockerfile/parser" "github.com/docker/docker/builder/dockerfile/parser"
"github.com/docker/docker/daemon" "github.com/docker/docker/daemon"
@ -267,7 +268,7 @@ func Commit(containerName string, d *daemon.Daemon, c *CommitConfig) (string, er
return "", err return "", err
} }
commitCfg := &daemon.ContainerCommitConfig{ commitCfg := &types.ContainerCommitConfig{
Pause: c.Pause, Pause: c.Pause,
Repo: c.Repo, Repo: c.Repo,
Tag: c.Tag, Tag: c.Tag,

View File

@ -20,10 +20,10 @@ import (
"github.com/Sirupsen/logrus" "github.com/Sirupsen/logrus"
"github.com/docker/docker/api" "github.com/docker/docker/api"
"github.com/docker/docker/api/types"
"github.com/docker/docker/builder" "github.com/docker/docker/builder"
"github.com/docker/docker/builder/dockerfile/parser" "github.com/docker/docker/builder/dockerfile/parser"
"github.com/docker/docker/container" "github.com/docker/docker/container"
"github.com/docker/docker/daemon"
"github.com/docker/docker/image" "github.com/docker/docker/image"
"github.com/docker/docker/pkg/archive" "github.com/docker/docker/pkg/archive"
"github.com/docker/docker/pkg/httputils" "github.com/docker/docker/pkg/httputils"
@ -77,7 +77,7 @@ func (b *Builder) commit(id string, autoCmd *stringutils.StrSlice, comment strin
autoConfig := *b.runConfig autoConfig := *b.runConfig
autoConfig.Cmd = autoCmd autoConfig.Cmd = autoCmd
commitCfg := &daemon.ContainerCommitConfig{ commitCfg := &types.ContainerCommitConfig{
Author: b.maintainer, Author: b.maintainer,
Pause: true, Pause: true,
Config: &autoConfig, Config: &autoConfig,
@ -586,7 +586,7 @@ func (b *Builder) run(c *container.Container) error {
} }
func (b *Builder) removeContainer(c string) error { func (b *Builder) removeContainer(c string) error {
rmConfig := &daemon.ContainerRmConfig{ rmConfig := &types.ContainerRmConfig{
ForceRemove: true, ForceRemove: true,
RemoveVolume: true, RemoveVolume: true,
} }

View File

@ -8,6 +8,7 @@ import (
"time" "time"
"github.com/docker/distribution/reference" "github.com/docker/distribution/reference"
"github.com/docker/docker/api/types"
"github.com/docker/docker/container" "github.com/docker/docker/container"
"github.com/docker/docker/dockerversion" "github.com/docker/docker/dockerversion"
"github.com/docker/docker/image" "github.com/docker/docker/image"
@ -17,22 +18,9 @@ import (
"github.com/docker/docker/runconfig" "github.com/docker/docker/runconfig"
) )
// ContainerCommitConfig contains build configs for commit operation,
// and is used when making a commit with the current state of the container.
type ContainerCommitConfig struct {
Pause bool
Repo string
Tag string
Author string
Comment string
// merge container config into commit config before commit
MergeConfigs bool
Config *runconfig.Config
}
// Commit creates a new filesystem image from the current state of a container. // Commit creates a new filesystem image from the current state of a container.
// The image can optionally be tagged into a repository. // The image can optionally be tagged into a repository.
func (daemon *Daemon) Commit(name string, c *ContainerCommitConfig) (string, error) { func (daemon *Daemon) Commit(name string, c *types.ContainerCommitConfig) (string, error) {
container, err := daemon.Get(name) container, err := daemon.Get(name)
if err != nil { if err != nil {
return "", err return "", err

View File

@ -74,7 +74,7 @@ func (daemon *Daemon) create(params *ContainerCreateConfig) (retC *container.Con
} }
defer func() { defer func() {
if retErr != nil { if retErr != nil {
if err := daemon.ContainerRm(container.ID, &ContainerRmConfig{ForceRemove: true}); err != nil { if err := daemon.ContainerRm(container.ID, &types.ContainerRmConfig{ForceRemove: true}); err != nil {
logrus.Errorf("Clean up Error! Cannot destroy container %s: %v", container.ID, err) logrus.Errorf("Clean up Error! Cannot destroy container %s: %v", container.ID, err)
} }
} }

View File

@ -11,6 +11,7 @@ import (
"github.com/Sirupsen/logrus" "github.com/Sirupsen/logrus"
"github.com/docker/distribution/reference" "github.com/docker/distribution/reference"
"github.com/docker/docker/api" "github.com/docker/docker/api"
"github.com/docker/docker/api/types"
"github.com/docker/docker/builder" "github.com/docker/docker/builder"
"github.com/docker/docker/cliconfig" "github.com/docker/docker/cliconfig"
"github.com/docker/docker/container" "github.com/docker/docker/container"
@ -105,12 +106,12 @@ func (d Docker) Create(cfg *runconfig.Config, hostCfg *runconfig.HostConfig) (*c
} }
// Remove removes a container specified by `id`. // Remove removes a container specified by `id`.
func (d Docker) Remove(id string, cfg *daemon.ContainerRmConfig) error { func (d Docker) Remove(id string, cfg *types.ContainerRmConfig) error {
return d.Daemon.ContainerRm(id, cfg) return d.Daemon.ContainerRm(id, cfg)
} }
// Commit creates a new Docker image from an existing Docker container. // Commit creates a new Docker image from an existing Docker container.
func (d Docker) Commit(name string, cfg *daemon.ContainerCommitConfig) (string, error) { func (d Docker) Commit(name string, cfg *types.ContainerCommitConfig) (string, error) {
return d.Daemon.Commit(name, cfg) return d.Daemon.Commit(name, cfg)
} }

View File

@ -5,22 +5,18 @@ import (
"path" "path"
"github.com/Sirupsen/logrus" "github.com/Sirupsen/logrus"
"github.com/docker/docker/api/types"
"github.com/docker/docker/container" "github.com/docker/docker/container"
derr "github.com/docker/docker/errors" derr "github.com/docker/docker/errors"
"github.com/docker/docker/layer" "github.com/docker/docker/layer"
volumestore "github.com/docker/docker/volume/store" volumestore "github.com/docker/docker/volume/store"
) )
// ContainerRmConfig is a holder for passing in runtime config.
type ContainerRmConfig struct {
ForceRemove, RemoveVolume, RemoveLink bool
}
// ContainerRm removes the container id from the filesystem. An error // ContainerRm removes the container id from the filesystem. An error
// is returned if the container is not found, or if the remove // is returned if the container is not found, or if the remove
// fails. If the remove succeeds, the container name is released, and // fails. If the remove succeeds, the container name is released, and
// network links are removed. // network links are removed.
func (daemon *Daemon) ContainerRm(name string, config *ContainerRmConfig) error { func (daemon *Daemon) ContainerRm(name string, config *types.ContainerRmConfig) error {
container, err := daemon.Get(name) container, err := daemon.Get(name)
if err != nil { if err != nil {
return err return err

View File

@ -5,6 +5,7 @@ import (
"os" "os"
"testing" "testing"
"github.com/docker/docker/api/types"
"github.com/docker/docker/container" "github.com/docker/docker/container"
"github.com/docker/docker/runconfig" "github.com/docker/docker/runconfig"
) )
@ -37,7 +38,7 @@ func TestContainerDoubleDelete(t *testing.T) {
// Try to remove the container when it's start is removalInProgress. // Try to remove the container when it's start is removalInProgress.
// It should ignore the container and not return an error. // It should ignore the container and not return an error.
if err := daemon.ContainerRm(container.ID, &ContainerRmConfig{ForceRemove: true}); err != nil { if err := daemon.ContainerRm(container.ID, &types.ContainerRmConfig{ForceRemove: true}); err != nil {
t.Fatal(err) t.Fatal(err)
} }
} }