mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
move configs structs to remove dependency on daemon
- Moved the following config structs to api/types - ContainerRmConfig - ContainerCommitConfig Signed-off-by: Morgan Bauer <mbauer@us.ibm.com>
This commit is contained in:
parent
a56f258c8a
commit
63fb931a0b
11 changed files with 49 additions and 34 deletions
|
@ -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
|
||||||
|
|
|
@ -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
29
api/types/configs.go
Normal 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
|
||||||
|
}
|
|
@ -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`
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue