Skip to content

Commit

Permalink
Expose old config field for api < 1.19
Browse files Browse the repository at this point in the history
Signed-off-by: Antonio Murdaca <me@runcom.ninja>
  • Loading branch information
Antonio Murdaca committed Jun 2, 2015
1 parent 63b5d5f commit 6deaa58
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 5 deletions.
8 changes: 8 additions & 0 deletions api/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -1141,6 +1141,14 @@ func (s *Server) getContainersByName(version version.Version, w http.ResponseWri
return fmt.Errorf("Missing parameter")
}

if version.LessThan("1.19") {
containerJSONRaw, err := s.daemon.ContainerInspectRaw(vars["name"])
if err != nil {
return err
}
return writeJSON(w, http.StatusOK, containerJSONRaw)
}

containerJSON, err := s.daemon.ContainerInspect(vars["name"])
if err != nil {
return err
Expand Down
24 changes: 22 additions & 2 deletions api/types/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,12 +195,11 @@ type ContainerState struct {
}

// GET "/containers/{name:.*}/json"
type ContainerJSON struct {
type ContainerJSONBase struct {
Id string
Created time.Time
Path string
Args []string
Config *runconfig.Config
State *ContainerState
Image string
NetworkSettings *network.Settings
Expand All @@ -220,3 +219,24 @@ type ContainerJSON struct {
ExecIDs []string
HostConfig *runconfig.HostConfig
}

type ContainerJSON struct {
*ContainerJSONBase
Config *runconfig.Config
}

// backcompatibility struct along with ContainerConfig
type ContainerJSONRaw struct {
*ContainerJSONBase
Config *ContainerConfig
}

type ContainerConfig struct {
*runconfig.Config

// backward compatibility, they now live in HostConfig
Memory int64
MemorySwap int64
CpuShares int64
Cpuset string
}
39 changes: 36 additions & 3 deletions daemon/inspect.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,40 @@ func (daemon *Daemon) ContainerInspect(name string) (*types.ContainerJSON, error
container.Lock()
defer container.Unlock()

base, err := daemon.getInspectData(container)
if err != nil {
return nil, err
}

return &types.ContainerJSON{base, container.Config}, nil
}

func (daemon *Daemon) ContainerInspectRaw(name string) (*types.ContainerJSONRaw, error) {
container, err := daemon.Get(name)
if err != nil {
return nil, err
}

container.Lock()
defer container.Unlock()

base, err := daemon.getInspectData(container)
if err != nil {
return nil, err
}

config := &types.ContainerConfig{
container.Config,
container.hostConfig.Memory,
container.hostConfig.MemorySwap,
container.hostConfig.CpuShares,
container.hostConfig.CpusetCpus,
}

return &types.ContainerJSONRaw{base, config}, nil
}

func (daemon *Daemon) getInspectData(container *Container) (*types.ContainerJSONBase, error) {
// make a copy to play with
hostConfig := *container.hostConfig

Expand Down Expand Up @@ -50,12 +84,11 @@ func (daemon *Daemon) ContainerInspect(name string) (*types.ContainerJSON, error
volumesRW[m.Destination] = m.RW
}

contJSON := &types.ContainerJSON{
contJSONBase := &types.ContainerJSONBase{
Id: container.ID,
Created: container.Created,
Path: container.Path,
Args: container.Args,
Config: container.Config,
State: containerState,
Image: container.ImageID,
NetworkSettings: container.NetworkSettings,
Expand All @@ -76,7 +109,7 @@ func (daemon *Daemon) ContainerInspect(name string) (*types.ContainerJSON, error
HostConfig: &hostConfig,
}

return contJSON, nil
return contJSONBase, nil
}

func (daemon *Daemon) ContainerExecInspect(id string) (*execConfig, error) {
Expand Down

0 comments on commit 6deaa58

Please sign in to comment.