Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 21 additions & 18 deletions pkg/api/handlers/compat/images.go
Original file line number Diff line number Diff line change
Expand Up @@ -390,31 +390,34 @@ func imageDataToImageInspect(ctx context.Context, l *libimage.Image, r *http.Req
cc.Volumes = info.Config.Volumes

dockerImageInspect := dockerImage.InspectResponse{
Architecture: info.Architecture,
Author: info.Author,
Comment: info.Comment,
Config: &config,
ContainerConfig: cc,
Created: l.Created().Format(time.RFC3339Nano),
DockerVersion: info.Version,
GraphDriver: graphDriver,
ID: "sha256:" + l.ID(),
Metadata: dockerImage.Metadata{},
Os: info.Os,
OsVersion: info.Version,
Parent: info.Parent,
RepoDigests: info.RepoDigests,
RepoTags: info.RepoTags,
RootFS: rootfs,
Size: info.Size,
Variant: "",
Architecture: info.Architecture,
Author: info.Author,
Comment: info.Comment,
Config: &config,
Created: l.Created().Format(time.RFC3339Nano),
DockerVersion: info.Version,
GraphDriver: graphDriver,
ID: "sha256:" + l.ID(),
Metadata: dockerImage.Metadata{},
Os: info.Os,
OsVersion: info.Version,
Parent: info.Parent,
RepoDigests: info.RepoDigests,
RepoTags: info.RepoTags,
RootFS: rootfs,
Size: info.Size,
Variant: "",
}

if _, err := apiutil.SupportedVersion(r, "<1.44.0"); err == nil {
//nolint:staticcheck // Deprecated field
dockerImageInspect.VirtualSize = info.VirtualSize
}

if _, err := apiutil.SupportedVersion(r, "<1.45.0"); err == nil {
dockerImageInspect.ContainerConfig = cc //nolint:staticcheck // Deprecated field
}

return &handlers.ImageInspect{InspectResponse: dockerImageInspect}, nil
}

Expand Down
9 changes: 7 additions & 2 deletions pkg/api/handlers/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,13 @@ type AuthConfig struct {

type ImageInspect struct {
dockerImage.InspectResponse
// Container is for backwards compat but is basically unused
Container string
// When you embed a struct, the fields of the embedded struct are "promoted" to the outer struct.
// If a field in the outer struct has the same name as a field in the embedded struct,
// the outer struct's field will shadow or override the embedded one allowing for a clean way to
// hide fields from the swagger spec that still exist in the libraries struct.
Container string `json:"-"`
ContainerConfig string `json:"-"`
VirtualSize string `json:"-"`
}

type ContainerConfig struct {
Expand Down
8 changes: 8 additions & 0 deletions test/apiv2/10-images.at
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@ t GET /v1.43/images/$iid/json 200 \
t GET /v1.44/images/$iid/json 200 \
.VirtualSize=null

# Test ContainerConfig fields are present in API v1.44 (backward compatibility)
t GET /v1.44/images/$iid/json 200 \
.ContainerConfig.Hostname~[0-9a-f]

# Test ContainerConfig fields are no longer present in API >= v1.45 (deprecated since API v1.44, omitted since API v1.45)
t GET /v1.45/images/$iid/json 200 \
.ContainerConfig=null

t POST "images/create?fromImage=alpine" 200 .error~null .status~".*Download complete.*"
t POST "libpod/images/pull?reference=alpine&compatMode=true" 200 .error~null .status~".*Download complete.*"

Expand Down
2 changes: 0 additions & 2 deletions test/apiv2/python/rest_api/test_v2_0_0_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ def test_list(self):
"SharedSize",
"VirtualSize",
"Labels",
"Containers",
)
images = r.json()
self.assertIsInstance(images, list)
Expand All @@ -45,7 +44,6 @@ def test_inspect(self):
"Parent",
"Comment",
"Created",
"Container",
"DockerVersion",
"Author",
"Architecture",
Expand Down