bindings: images uses entities/types

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano
2024-01-25 14:54:08 +01:00
parent 08cd7ce41b
commit 5ddc82f7a2
10 changed files with 246 additions and 192 deletions

View File

@ -18,11 +18,11 @@ import (
"strings"
"github.com/containers/buildah/define"
"github.com/containers/image/v5/types"
imageTypes "github.com/containers/image/v5/types"
ldefine "github.com/containers/podman/v4/libpod/define"
"github.com/containers/podman/v4/pkg/auth"
"github.com/containers/podman/v4/pkg/bindings"
"github.com/containers/podman/v4/pkg/domain/entities"
"github.com/containers/podman/v4/pkg/domain/entities/types"
"github.com/containers/podman/v4/pkg/util"
"github.com/containers/storage/pkg/fileutils"
"github.com/containers/storage/pkg/ioutils"
@ -50,7 +50,7 @@ type BuildResponse struct {
}
// Build creates an image using a containerfile reference
func Build(ctx context.Context, containerFiles []string, options entities.BuildOptions) (*entities.BuildReport, error) {
func Build(ctx context.Context, containerFiles []string, options types.BuildOptions) (*types.BuildReport, error) {
if options.CommonBuildOpts == nil {
options.CommonBuildOpts = new(define.CommonBuildOptions)
}
@ -255,9 +255,9 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
}
switch options.SkipUnusedStages {
case types.OptionalBoolTrue:
case imageTypes.OptionalBoolTrue:
params.Set("skipunusedstages", "1")
case types.OptionalBoolFalse:
case imageTypes.OptionalBoolFalse:
params.Set("skipunusedstages", "0")
}
@ -342,9 +342,9 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
params.Set("pullpolicy", options.PullPolicy.String())
switch options.CommonBuildOpts.IdentityLabel {
case types.OptionalBoolTrue:
case imageTypes.OptionalBoolTrue:
params.Set("identitylabel", "1")
case types.OptionalBoolFalse:
case imageTypes.OptionalBoolFalse:
params.Set("identitylabel", "0")
}
if options.Quiet {
@ -416,7 +416,7 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
} else {
headers, err = auth.MakeXRegistryConfigHeader(options.SystemContext, "", "")
}
if options.SystemContext.DockerInsecureSkipTLSVerify == types.OptionalBoolTrue {
if options.SystemContext.DockerInsecureSkipTLSVerify == imageTypes.OptionalBoolTrue {
params.Set("tlsVerify", "false")
}
}
@ -618,7 +618,7 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
// even when the server quit but it seems desirable to
// distinguish a proper build from a transient EOF.
case <-response.Request.Context().Done():
return &entities.BuildReport{ID: id, SaveFormat: saveFormat}, nil
return &types.BuildReport{ID: id, SaveFormat: saveFormat}, nil
default:
// non-blocking select
}
@ -632,7 +632,7 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
if errors.Is(err, io.EOF) && id != "" {
break
}
return &entities.BuildReport{ID: id, SaveFormat: saveFormat}, fmt.Errorf("decoding stream: %w", err)
return &types.BuildReport{ID: id, SaveFormat: saveFormat}, fmt.Errorf("decoding stream: %w", err)
}
switch {
@ -645,12 +645,12 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
case s.Error != nil:
// If there's an error, return directly. The stream
// will be closed on return.
return &entities.BuildReport{ID: id, SaveFormat: saveFormat}, errors.New(s.Error.Message)
return &types.BuildReport{ID: id, SaveFormat: saveFormat}, errors.New(s.Error.Message)
default:
return &entities.BuildReport{ID: id, SaveFormat: saveFormat}, errors.New("failed to parse build results stream, unexpected input")
return &types.BuildReport{ID: id, SaveFormat: saveFormat}, errors.New("failed to parse build results stream, unexpected input")
}
}
return &entities.BuildReport{ID: id, SaveFormat: saveFormat}, nil
return &types.BuildReport{ID: id, SaveFormat: saveFormat}, nil
}
func nTar(excludes []string, sources ...string) (io.ReadCloser, error) {

View File

@ -10,11 +10,11 @@ import (
"strconv"
imageTypes "github.com/containers/image/v5/types"
"github.com/containers/podman/v4/pkg/api/handlers/types"
handlersTypes "github.com/containers/podman/v4/pkg/api/handlers/types"
"github.com/containers/podman/v4/pkg/auth"
"github.com/containers/podman/v4/pkg/bindings"
"github.com/containers/podman/v4/pkg/domain/entities"
"github.com/containers/podman/v4/pkg/domain/entities/reports"
"github.com/containers/podman/v4/pkg/domain/entities/types"
)
// Exists a lightweight way to determine if an image exists in local storage. It returns a
@ -35,11 +35,11 @@ func Exists(ctx context.Context, nameOrID string, options *ExistsOptions) (bool,
// List returns a list of images in local storage. The all boolean and filters parameters are optional
// ways to alter the image query.
func List(ctx context.Context, options *ListOptions) ([]*entities.ImageSummary, error) {
func List(ctx context.Context, options *ListOptions) ([]*types.ImageSummary, error) {
if options == nil {
options = new(ListOptions)
}
var imageSummary []*entities.ImageSummary
var imageSummary []*types.ImageSummary
conn, err := bindings.GetClient(ctx)
if err != nil {
return nil, err
@ -59,7 +59,7 @@ func List(ctx context.Context, options *ListOptions) ([]*entities.ImageSummary,
// Get performs an image inspect. To have the on-disk size of the image calculated, you can
// use the optional size parameter.
func GetImage(ctx context.Context, nameOrID string, options *GetOptions) (*entities.ImageInspectReport, error) {
func GetImage(ctx context.Context, nameOrID string, options *GetOptions) (*types.ImageInspectReport, error) {
if options == nil {
options = new(GetOptions)
}
@ -71,7 +71,7 @@ func GetImage(ctx context.Context, nameOrID string, options *GetOptions) (*entit
if err != nil {
return nil, err
}
inspectedData := entities.ImageInspectReport{}
inspectedData := types.ImageInspectReport{}
response, err := conn.DoRequest(ctx, nil, http.MethodGet, "/images/%s/json", params, nil, nameOrID)
if err != nil {
return &inspectedData, err
@ -82,11 +82,11 @@ func GetImage(ctx context.Context, nameOrID string, options *GetOptions) (*entit
}
// Tree retrieves a "tree" based representation of the given image
func Tree(ctx context.Context, nameOrID string, options *TreeOptions) (*entities.ImageTreeReport, error) {
func Tree(ctx context.Context, nameOrID string, options *TreeOptions) (*types.ImageTreeReport, error) {
if options == nil {
options = new(TreeOptions)
}
var report entities.ImageTreeReport
var report types.ImageTreeReport
conn, err := bindings.GetClient(ctx)
if err != nil {
return nil, err
@ -105,12 +105,12 @@ func Tree(ctx context.Context, nameOrID string, options *TreeOptions) (*entities
}
// History returns the parent layers of an image.
func History(ctx context.Context, nameOrID string, options *HistoryOptions) ([]*types.HistoryResponse, error) {
func History(ctx context.Context, nameOrID string, options *HistoryOptions) ([]*handlersTypes.HistoryResponse, error) {
if options == nil {
options = new(HistoryOptions)
}
_ = options
var history []*types.HistoryResponse
var history []*handlersTypes.HistoryResponse
conn, err := bindings.GetClient(ctx)
if err != nil {
return nil, err
@ -124,8 +124,8 @@ func History(ctx context.Context, nameOrID string, options *HistoryOptions) ([]*
return history, response.Process(&history)
}
func Load(ctx context.Context, r io.Reader) (*entities.ImageLoadReport, error) {
var report entities.ImageLoadReport
func Load(ctx context.Context, r io.Reader) (*types.ImageLoadReport, error) {
var report types.ImageLoadReport
conn, err := bindings.GetClient(ctx)
if err != nil {
return nil, err
@ -242,11 +242,11 @@ func Untag(ctx context.Context, nameOrID, tag, repo string, options *UntagOption
// Import adds the given image to the local image store. This can be done by file and the given reader
// or via the url parameter. Additional metadata can be associated with the image by using the changes and
// message parameters. The image can also be tagged given a reference. One of url OR r must be provided.
func Import(ctx context.Context, r io.Reader, options *ImportOptions) (*entities.ImageImportReport, error) {
func Import(ctx context.Context, r io.Reader, options *ImportOptions) (*types.ImageImportReport, error) {
if options == nil {
options = new(ImportOptions)
}
var report entities.ImageImportReport
var report types.ImageImportReport
if r != nil && options.URL != nil {
return nil, errors.New("url and r parameters cannot be used together")
}
@ -268,7 +268,7 @@ func Import(ctx context.Context, r io.Reader, options *ImportOptions) (*entities
}
// Search is the binding for libpod's v2 endpoints for Search images.
func Search(ctx context.Context, term string, options *SearchOptions) ([]entities.ImageSearchReport, error) {
func Search(ctx context.Context, term string, options *SearchOptions) ([]types.ImageSearchReport, error) {
if options == nil {
options = new(SearchOptions)
}
@ -299,7 +299,7 @@ func Search(ctx context.Context, term string, options *SearchOptions) ([]entitie
}
defer response.Body.Close()
results := []entities.ImageSearchReport{}
results := []types.ImageSearchReport{}
if err := response.Process(&results); err != nil {
return nil, err
}

View File

@ -10,10 +10,10 @@ import (
"os"
"strconv"
"github.com/containers/image/v5/types"
imgTypes "github.com/containers/image/v5/types"
"github.com/containers/podman/v4/pkg/auth"
"github.com/containers/podman/v4/pkg/bindings"
"github.com/containers/podman/v4/pkg/domain/entities"
"github.com/containers/podman/v4/pkg/domain/entities/types"
"github.com/containers/podman/v4/pkg/errorhandling"
)
@ -41,7 +41,7 @@ func Pull(ctx context.Context, rawImage string, options *PullOptions) ([]string,
params.Set("tlsVerify", strconv.FormatBool(!options.GetSkipTLSVerify()))
}
header, err := auth.MakeXRegistryAuthHeader(&types.SystemContext{AuthFilePath: options.GetAuthfile()}, options.GetUsername(), options.GetPassword())
header, err := auth.MakeXRegistryAuthHeader(&imgTypes.SystemContext{AuthFilePath: options.GetAuthfile()}, options.GetUsername(), options.GetPassword())
if err != nil {
return nil, err
}
@ -71,7 +71,7 @@ func Pull(ctx context.Context, rawImage string, options *PullOptions) ([]string,
var pullErrors []error
LOOP:
for {
var report entities.ImagePullReport
var report types.ImagePullReport
if err := dec.Decode(&report); err != nil {
if errors.Is(err, io.EOF) {
break

View File

@ -13,7 +13,7 @@ import (
imageTypes "github.com/containers/image/v5/types"
"github.com/containers/podman/v4/pkg/auth"
"github.com/containers/podman/v4/pkg/bindings"
"github.com/containers/podman/v4/pkg/domain/entities"
"github.com/containers/podman/v4/pkg/domain/entities/types"
)
// Push is the binding for libpod's endpoints for push images. Note that
@ -69,7 +69,7 @@ func Push(ctx context.Context, source string, destination string, options *PushO
dec := json.NewDecoder(response.Body)
LOOP:
for {
var report entities.ImagePushStream
var report types.ImagePushStream
if err := dec.Decode(&report); err != nil {
if errors.Is(err, io.EOF) {
break

View File

@ -4,19 +4,19 @@ import (
"context"
"net/http"
"github.com/containers/podman/v4/pkg/api/handlers/types"
handlersTypes "github.com/containers/podman/v4/pkg/api/handlers/types"
"github.com/containers/podman/v4/pkg/bindings"
"github.com/containers/podman/v4/pkg/domain/entities"
"github.com/containers/podman/v4/pkg/domain/entities/types"
"github.com/containers/podman/v4/pkg/errorhandling"
)
// Remove removes one or more images from the local storage. Use optional force option to remove an
// image, even if it's used by containers.
func Remove(ctx context.Context, images []string, options *RemoveOptions) (*entities.ImageRemoveReport, []error) {
func Remove(ctx context.Context, images []string, options *RemoveOptions) (*types.ImageRemoveReport, []error) {
if options == nil {
options = new(RemoveOptions)
}
var report types.LibpodImagesRemoveReport
var report handlersTypes.LibpodImagesRemoveReport
conn, err := bindings.GetClient(ctx)
if err != nil {
return nil, []error{err}

View File

@ -3,7 +3,7 @@ package images
import (
"io"
buildahDefine "github.com/containers/buildah/define"
"github.com/containers/podman/v4/pkg/domain/entities/types"
)
// RemoveOptions are optional options for image removal
@ -226,9 +226,7 @@ type PullOptions struct {
}
// BuildOptions are optional options for building images
type BuildOptions struct {
buildahDefine.BuildOptions
}
type BuildOptions = types.BuildOptions
// ExistsOptions are optional options for checking if an image exists
//

View File

@ -3,15 +3,13 @@ package entities
import (
"io"
"net/url"
"time"
"github.com/containers/common/pkg/config"
"github.com/containers/image/v5/manifest"
"github.com/containers/image/v5/signature/signer"
"github.com/containers/image/v5/types"
encconfig "github.com/containers/ocicrypt/config"
"github.com/containers/podman/v4/pkg/inspect"
"github.com/containers/podman/v4/pkg/trust"
entitiesTypes "github.com/containers/podman/v4/pkg/domain/entities/types"
"github.com/docker/docker/api/types/container"
"github.com/opencontainers/go-digest"
v1 "github.com/opencontainers/image-spec/specs-go/v1"
@ -54,37 +52,7 @@ func (i *Image) Id() string { //nolint:revive,stylecheck
}
// swagger:model LibpodImageSummary
type ImageSummary struct {
ID string `json:"Id"`
ParentId string //nolint:revive,stylecheck
RepoTags []string
RepoDigests []string
Created int64
Size int64
SharedSize int
VirtualSize int64
Labels map[string]string
Containers int
ReadOnly bool `json:",omitempty"`
Dangling bool `json:",omitempty"`
// Podman extensions
Names []string `json:",omitempty"`
Digest string `json:",omitempty"`
History []string `json:",omitempty"`
}
func (i *ImageSummary) Id() string { //nolint:revive,stylecheck
return i.ID
}
func (i *ImageSummary) IsReadOnly() bool {
return i.ReadOnly
}
func (i *ImageSummary) IsDangling() bool {
return i.Dangling
}
type ImageSummary = entitiesTypes.ImageSummary
// ImageRemoveOptions can be used to alter image removal.
type ImageRemoveOptions struct {
@ -102,30 +70,12 @@ type ImageRemoveOptions struct {
// ImageRemoveReport is the response for removing one or more image(s) from storage
// and images what was untagged vs actually removed.
type ImageRemoveReport struct {
// Deleted images.
Deleted []string `json:",omitempty"`
// Untagged images. Can be longer than Deleted.
Untagged []string `json:",omitempty"`
// ExitCode describes the exit codes as described in the `podman rmi`
// man page.
ExitCode int
}
type ImageRemoveReport = entitiesTypes.ImageRemoveReport
type ImageHistoryOptions struct{}
type ImageHistoryLayer struct {
ID string `json:"id"`
Created time.Time `json:"created,omitempty"`
CreatedBy string `json:",omitempty"`
Tags []string `json:"tags,omitempty"`
Size int64 `json:"size"`
Comment string `json:"comment,omitempty"`
}
type ImageHistoryReport struct {
Layers []ImageHistoryLayer
}
type ImageHistoryLayer = entitiesTypes.ImageHistoryLayer
type ImageHistoryReport = entitiesTypes.ImageHistoryReport
// ImagePullOptions are the arguments for pulling images.
type ImagePullOptions struct {
@ -166,16 +116,7 @@ type ImagePullOptions struct {
}
// ImagePullReport is the response from pulling one or more images.
type ImagePullReport struct {
// Stream used to provide output from c/image
Stream string `json:"stream,omitempty"`
// Error contains text of errors from c/image
Error string `json:"error,omitempty"`
// Images contains the ID's of the images pulled
Images []string `json:"images,omitempty"`
// ID contains image id (retained for backwards compatibility)
ID string `json:"id,omitempty"`
}
type ImagePullReport = entitiesTypes.ImagePullReport
// ImagePushOptions are the arguments for pushing images.
type ImagePushOptions struct {
@ -261,14 +202,7 @@ type ImagePushReport struct {
// ImagePushStream is the response from pushing an image. Only used in the
// remote API.
type ImagePushStream struct {
// ManifestDigest is the digest of the manifest of the pushed image.
ManifestDigest string `json:"manifestdigest,omitempty"`
// Stream used to provide push progress
Stream string `json:"stream,omitempty"`
// Error contains text of errors from pushing
Error string `json:"error,omitempty"`
}
type ImagePushStream = entitiesTypes.ImagePushStream
// ImageSearchOptions are the arguments for searching images.
type ImageSearchOptions struct {
@ -296,22 +230,7 @@ type ImageSearchOptions struct {
}
// ImageSearchReport is the response from searching images.
type ImageSearchReport struct {
// Index is the image index (e.g., "docker.io" or "quay.io")
Index string
// Name is the canonical name of the image (e.g., "docker.io/library/alpine").
Name string
// Description of the image.
Description string
// Stars is the number of stars of the image.
Stars int
// Official indicates if it's an official image.
Official string
// Automated indicates if the image was created by an automated build.
Automated string
// Tag is the repository tag
Tag string
}
type ImageSearchReport = entitiesTypes.ImageSearchReport
// Image List Options
type ImageListOptions struct {
@ -329,9 +248,7 @@ type ImageTagOptions struct{}
type ImageUntagOptions struct{}
// ImageInspectReport is the data when inspecting an image.
type ImageInspectReport struct {
*inspect.ImageData
}
type ImageInspectReport = entitiesTypes.ImageInspectReport
type ImageLoadOptions struct {
Input string
@ -339,9 +256,7 @@ type ImageLoadOptions struct {
SignaturePolicy string
}
type ImageLoadReport struct {
Names []string
}
type ImageLoadReport = entitiesTypes.ImageLoadReport
type ImageImportOptions struct {
Architecture string
@ -356,9 +271,7 @@ type ImageImportOptions struct {
SourceIsURL bool
}
type ImageImportReport struct {
Id string //nolint:revive,stylecheck
}
type ImageImportReport = entitiesTypes.ImageImportReport
// ImageSaveOptions provide options for saving images.
type ImageSaveOptions struct {
@ -413,9 +326,7 @@ type ImageTreeOptions struct {
}
// ImageTreeReport provides results from ImageEngine.Tree()
type ImageTreeReport struct {
Tree string // TODO: Refactor move presentation work out of server
}
type ImageTreeReport = entitiesTypes.ImageTreeReport
// ShowTrustOptions are the cli options for showing trust
type ShowTrustOptions struct {
@ -426,12 +337,7 @@ type ShowTrustOptions struct {
}
// ShowTrustReport describes the results of show trust
type ShowTrustReport struct {
Raw []byte
SystemRegistriesDirPath string
JSONOutput []byte
Policies []*trust.Policy
}
type ShowTrustReport = entitiesTypes.ShowTrustReport
// SetTrustOptions describes the CLI options for setting trust
type SetTrustOptions struct {
@ -466,18 +372,10 @@ type ImageUnmountOptions struct {
}
// ImageMountReport describes the response from image mount
type ImageMountReport struct {
Id string //nolint:revive,stylecheck
Name string
Repositories []string
Path string
}
type ImageMountReport = entitiesTypes.ImageMountReport
// ImageUnmountReport describes the response from umounting an image
type ImageUnmountReport struct {
Err error
Id string //nolint:revive,stylecheck
}
type ImageUnmountReport = entitiesTypes.ImageUnmountReport
const (
LocalFarmImageBuilderName = "(local)"
@ -485,10 +383,4 @@ const (
)
// FarmInspectReport describes the response from farm inspect
type FarmInspectReport struct {
NativePlatforms []string
EmulatedPlatforms []string
OS string
Arch string
Variant string
}
type FarmInspectReport = entitiesTypes.FarmInspectReport

View File

@ -2,9 +2,7 @@ package entities
import (
"net"
"os"
buildahDefine "github.com/containers/buildah/define"
"github.com/containers/common/libnetwork/types"
"github.com/containers/podman/v4/libpod/define"
"github.com/containers/podman/v4/libpod/events"
@ -103,33 +101,13 @@ type EventsOptions struct {
type ContainerCreateResponse = entitiesTypes.ContainerCreateResponse
// BuildOptions describe the options for building container images.
type BuildOptions struct {
buildahDefine.BuildOptions
ContainerFiles []string
FarmBuildOptions
// Files that need to be closed after the build
// so need to pass this to the main build functions
LogFileToClose *os.File
TmpDirToClose string
}
type BuildOptions = entitiesTypes.BuildOptions
// BuildReport is the image-build report.
type BuildReport struct {
// ID of the image.
ID string
// Format to save the image in
SaveFormat string
}
type BuildReport = entitiesTypes.BuildReport
// FarmBuildOptions describes the options for building container images on farm nodes
type FarmBuildOptions struct {
// Cleanup removes built images from farm nodes on success
Cleanup bool
// Authfile is the path to the file holding registry credentials
Authfile string
// SkipTLSVerify skips tls verification when set to true
SkipTLSVerify bool
}
type FarmBuildOptions = entitiesTypes.FarmBuildOptions
type IDOrNameResponse struct {
// The Id or Name of an object

View File

@ -0,0 +1,151 @@
package types
import (
"time"
"github.com/containers/podman/v4/pkg/inspect"
"github.com/containers/podman/v4/pkg/trust"
)
// swagger:model LibpodImageSummary
type ImageSummary struct {
ID string `json:"Id"`
ParentId string //nolint:revive,stylecheck
RepoTags []string
RepoDigests []string
Created int64
Size int64
SharedSize int
VirtualSize int64
Labels map[string]string
Containers int
ReadOnly bool `json:",omitempty"`
Dangling bool `json:",omitempty"`
// Podman extensions
Names []string `json:",omitempty"`
Digest string `json:",omitempty"`
History []string `json:",omitempty"`
}
func (i *ImageSummary) Id() string { //nolint:revive,stylecheck
return i.ID
}
func (i *ImageSummary) IsReadOnly() bool {
return i.ReadOnly
}
func (i *ImageSummary) IsDangling() bool {
return i.Dangling
}
type ImageInspectReport struct {
*inspect.ImageData
}
type ImageTreeReport struct {
Tree string // TODO: Refactor move presentation work out of server
}
type ImageLoadReport struct {
Names []string
}
type ImageImportReport struct {
Id string //nolint:revive,stylecheck
}
// ImageSearchReport is the response from searching images.
type ImageSearchReport struct {
// Index is the image index (e.g., "docker.io" or "quay.io")
Index string
// Name is the canonical name of the image (e.g., "docker.io/library/alpine").
Name string
// Description of the image.
Description string
// Stars is the number of stars of the image.
Stars int
// Official indicates if it's an official image.
Official string
// Automated indicates if the image was created by an automated build.
Automated string
// Tag is the repository tag
Tag string
}
// ShowTrustReport describes the results of show trust
type ShowTrustReport struct {
Raw []byte
SystemRegistriesDirPath string
JSONOutput []byte
Policies []*trust.Policy
}
// ImageMountReport describes the response from image mount
type ImageMountReport struct {
Id string //nolint:revive,stylecheck
Name string
Repositories []string
Path string
}
// ImageUnmountReport describes the response from umounting an image
type ImageUnmountReport struct {
Err error
Id string //nolint:revive,stylecheck
}
// FarmInspectReport describes the response from farm inspect
type FarmInspectReport struct {
NativePlatforms []string
EmulatedPlatforms []string
OS string
Arch string
Variant string
}
// ImageRemoveReport is the response for removing one or more image(s) from storage
// and images what was untagged vs actually removed.
type ImageRemoveReport struct {
// Deleted images.
Deleted []string `json:",omitempty"`
// Untagged images. Can be longer than Deleted.
Untagged []string `json:",omitempty"`
// ExitCode describes the exit codes as described in the `podman rmi`
// man page.
ExitCode int
}
type ImageHistoryLayer struct {
ID string `json:"id"`
Created time.Time `json:"created,omitempty"`
CreatedBy string `json:",omitempty"`
Tags []string `json:"tags,omitempty"`
Size int64 `json:"size"`
Comment string `json:"comment,omitempty"`
}
type ImageHistoryReport struct {
Layers []ImageHistoryLayer
}
type ImagePullReport struct {
// Stream used to provide output from c/image
Stream string `json:"stream,omitempty"`
// Error contains text of errors from c/image
Error string `json:"error,omitempty"`
// Images contains the ID's of the images pulled
Images []string `json:"images,omitempty"`
// ID contains image id (retained for backwards compatibility)
ID string `json:"id,omitempty"`
}
type ImagePushStream struct {
// ManifestDigest is the digest of the manifest of the pushed image.
ManifestDigest string `json:"manifestdigest,omitempty"`
// Stream used to provide push progress
Stream string `json:"stream,omitempty"`
// Error contains text of errors from pushing
Error string `json:"error,omitempty"`
}

View File

@ -1,6 +1,12 @@
// copied from github.com/docker/docker/api/types
package types
import (
"os"
buildahDefine "github.com/containers/buildah/define"
)
// ComponentVersion describes the version information for a specific component.
type ComponentVersion struct {
Name string
@ -42,3 +48,32 @@ type ContainerCreateResponse struct {
// required: true
Warnings []string `json:"Warnings"`
}
// FarmBuildOptions describes the options for building container images on farm nodes
type FarmBuildOptions struct {
// Cleanup removes built images from farm nodes on success
Cleanup bool
// Authfile is the path to the file holding registry credentials
Authfile string
// SkipTLSVerify skips tls verification when set to true
SkipTLSVerify bool
}
// BuildOptions describe the options for building container images.
type BuildOptions struct {
buildahDefine.BuildOptions
ContainerFiles []string
FarmBuildOptions
// Files that need to be closed after the build
// so need to pass this to the main build functions
LogFileToClose *os.File
TmpDirToClose string
}
// BuildReport is the image-build report.
type BuildReport struct {
// ID of the image.
ID string
// Format to save the image in
SaveFormat string
}