refactor create to not expose internal data structures

- use existing exposed type

Signed-off-by: Morgan Bauer <mbauer@us.ibm.com>
This commit is contained in:
Morgan Bauer 2015-09-22 18:06:09 -07:00
parent 02ae137b1d
commit 93bd57b0b2
No known key found for this signature in database
GPG Key ID: 23F15C502128F348
3 changed files with 23 additions and 19 deletions

View File

@ -366,10 +366,8 @@ func (s *Server) postContainersCreate(ctx context.Context, w http.ResponseWriter
if err := checkForJSON(r); err != nil { if err := checkForJSON(r); err != nil {
return err return err
} }
var (
warnings []string name := r.Form.Get("name")
name = r.Form.Get("name")
)
config, hostConfig, err := runconfig.DecodeContainerConfig(r.Body) config, hostConfig, err := runconfig.DecodeContainerConfig(r.Body)
if err != nil { if err != nil {
@ -378,15 +376,12 @@ func (s *Server) postContainersCreate(ctx context.Context, w http.ResponseWriter
version := ctx.Version() version := ctx.Version()
adjustCPUShares := version.LessThan("1.19") adjustCPUShares := version.LessThan("1.19")
container, warnings, err := s.daemon.ContainerCreate(ctx, name, config, hostConfig, adjustCPUShares) ccr, err := s.daemon.ContainerCreate(ctx, name, config, hostConfig, adjustCPUShares)
if err != nil { if err != nil {
return err return err
} }
return writeJSON(w, http.StatusCreated, &types.ContainerCreateResponse{ return writeJSON(w, http.StatusCreated, ccr)
ID: container.ID,
Warnings: warnings,
})
} }
func (s *Server) deleteContainers(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error { func (s *Server) deleteContainers(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {

View File

@ -233,10 +233,15 @@ func (b *builder) runContextCommand(ctx context.Context, args []string, allowRem
return nil return nil
} }
container, _, err := b.Daemon.ContainerCreate(ctx, "", b.Config, nil, true) ccr, err := b.Daemon.ContainerCreate(ctx, "", b.Config, nil, true)
if err != nil { if err != nil {
return err return err
} }
container, err := b.Daemon.Get(ctx, ccr.ID)
if err != nil {
return err
}
b.TmpContainers[container.ID] = struct{}{} b.TmpContainers[container.ID] = struct{}{}
if err := container.Mount(ctx); err != nil { if err := container.Mount(ctx); err != nil {
@ -621,13 +626,17 @@ func (b *builder) create(ctx context.Context) (*daemon.Container, error) {
config := *b.Config config := *b.Config
// Create the container // Create the container
c, warnings, err := b.Daemon.ContainerCreate(ctx, "", b.Config, hostConfig, true) ccr, err := b.Daemon.ContainerCreate(ctx, "", b.Config, hostConfig, true)
if err != nil { if err != nil {
return nil, err return nil, err
} }
for _, warning := range warnings { for _, warning := range ccr.Warnings {
fmt.Fprintf(b.OutStream, " ---> [Warning] %s\n", warning) fmt.Fprintf(b.OutStream, " ---> [Warning] %s\n", warning)
} }
c, err := b.Daemon.Get(ctx, ccr.ID)
if err != nil {
return nil, err
}
b.TmpContainers[c.ID] = struct{}{} b.TmpContainers[c.ID] = struct{}{}
fmt.Fprintf(b.OutStream, " ---> Running in %s\n", stringid.TruncateID(c.ID)) fmt.Fprintf(b.OutStream, " ---> Running in %s\n", stringid.TruncateID(c.ID))

View File

@ -16,14 +16,14 @@ import (
) )
// ContainerCreate takes configs and creates a container. // ContainerCreate takes configs and creates a container.
func (daemon *Daemon) ContainerCreate(ctx context.Context, name string, config *runconfig.Config, hostConfig *runconfig.HostConfig, adjustCPUShares bool) (*Container, []string, error) { func (daemon *Daemon) ContainerCreate(ctx context.Context, name string, config *runconfig.Config, hostConfig *runconfig.HostConfig, adjustCPUShares bool) (types.ContainerCreateResponse, error) {
if config == nil { if config == nil {
return nil, nil, derr.ErrorCodeEmptyConfig return types.ContainerCreateResponse{}, derr.ErrorCodeEmptyConfig
} }
warnings, err := daemon.verifyContainerSettings(ctx, hostConfig, config) warnings, err := daemon.verifyContainerSettings(ctx, hostConfig, config)
if err != nil { if err != nil {
return nil, warnings, err return types.ContainerCreateResponse{"", warnings}, err
} }
daemon.adaptContainerSettings(hostConfig, adjustCPUShares) daemon.adaptContainerSettings(hostConfig, adjustCPUShares)
@ -32,20 +32,20 @@ func (daemon *Daemon) ContainerCreate(ctx context.Context, name string, config *
if err != nil { if err != nil {
if daemon.Graph(ctx).IsNotExist(err, config.Image) { if daemon.Graph(ctx).IsNotExist(err, config.Image) {
if strings.Contains(config.Image, "@") { if strings.Contains(config.Image, "@") {
return nil, warnings, derr.ErrorCodeNoSuchImageHash.WithArgs(config.Image) return types.ContainerCreateResponse{"", warnings}, derr.ErrorCodeNoSuchImageHash.WithArgs(config.Image)
} }
img, tag := parsers.ParseRepositoryTag(config.Image) img, tag := parsers.ParseRepositoryTag(config.Image)
if tag == "" { if tag == "" {
tag = tags.DefaultTag tag = tags.DefaultTag
} }
return nil, warnings, derr.ErrorCodeNoSuchImageTag.WithArgs(img, tag) return types.ContainerCreateResponse{"", warnings}, derr.ErrorCodeNoSuchImageTag.WithArgs(img, tag)
} }
return nil, warnings, err return types.ContainerCreateResponse{"", warnings}, err
} }
warnings = append(warnings, buildWarnings...) warnings = append(warnings, buildWarnings...)
return container, warnings, nil return types.ContainerCreateResponse{container.ID, warnings}, nil
} }
// Create creates a new container from the given configuration with a given name. // Create creates a new container from the given configuration with a given name.