mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
`GET /image/{name}/json` now supports `platform` parameter allowing to
specify which platform variant of a multi-platform image to inspect.
For servers that do not use containerd image store integration, this
option will cause an error if the requested platform doesn't match the
image's actual platform
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
63 lines
2.1 KiB
Go
63 lines
2.1 KiB
Go
package client
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/docker/docker/api/types/image"
|
|
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
|
|
)
|
|
|
|
// ImageInspectOption is a type representing functional options for the image inspect operation.
|
|
type ImageInspectOption interface {
|
|
Apply(*imageInspectOpts) error
|
|
}
|
|
type imageInspectOptionFunc func(opt *imageInspectOpts) error
|
|
|
|
func (f imageInspectOptionFunc) Apply(o *imageInspectOpts) error {
|
|
return f(o)
|
|
}
|
|
|
|
// ImageInspectWithRawResponse instructs the client to additionally store the
|
|
// raw inspect response in the provided buffer.
|
|
func ImageInspectWithRawResponse(raw *bytes.Buffer) ImageInspectOption {
|
|
return imageInspectOptionFunc(func(opts *imageInspectOpts) error {
|
|
opts.raw = raw
|
|
return nil
|
|
})
|
|
}
|
|
|
|
// ImageInspectWithManifests sets manifests API option for the image inspect operation.
|
|
// This option is only available for API version 1.48 and up.
|
|
// With this option set, the image inspect operation response will have the
|
|
// [image.InspectResponse.Manifests] field populated if the server is multi-platform capable.
|
|
func ImageInspectWithManifests(manifests bool) ImageInspectOption {
|
|
return imageInspectOptionFunc(func(clientOpts *imageInspectOpts) error {
|
|
clientOpts.apiOptions.Manifests = manifests
|
|
return nil
|
|
})
|
|
}
|
|
|
|
// ImageInspectWithPlatform sets platform API option for the image inspect operation.
|
|
// This option is only available for API version 1.49 and up.
|
|
// With this option set, the image inspect operation will return information for the
|
|
// specified platform variant of the multi-platform image.
|
|
func ImageInspectWithPlatform(platform *ocispec.Platform) ImageInspectOption {
|
|
return imageInspectOptionFunc(func(clientOpts *imageInspectOpts) error {
|
|
clientOpts.apiOptions.Platform = platform
|
|
return nil
|
|
})
|
|
}
|
|
|
|
// ImageInspectWithAPIOpts sets the API options for the image inspect operation.
|
|
func ImageInspectWithAPIOpts(opts image.InspectOptions) ImageInspectOption {
|
|
return imageInspectOptionFunc(func(clientOpts *imageInspectOpts) error {
|
|
clientOpts.apiOptions = opts
|
|
return nil
|
|
})
|
|
}
|
|
|
|
type imageInspectOpts struct {
|
|
raw *bytes.Buffer
|
|
apiOptions image.InspectOptions
|
|
}
|