Files
uncloud/pkg/api/image.go
T

59 lines
1.8 KiB
Go

package api
import (
"errors"
"github.com/distribution/reference"
"github.com/docker/docker/api/types/image"
v1 "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/psviderski/uncloud/internal/machine/api/pb"
)
type MachineImage struct {
Metadata *pb.Metadata
Image image.InspectResponse
}
// MachineImages represents images present on a particular machine.
type MachineImages struct {
Metadata *pb.Metadata
// Images is a list of images present on the machine.
Images []image.Summary
// ContainerdStore indicates whether Docker on the machine uses the containerd image store
// (containerd-snapshotter feature).
ContainerdStore bool
}
// Error returns a non-nil error if listing images on this machine failed.
func (mi MachineImages) Error() error {
if mi.Metadata != nil && mi.Metadata.Error != "" {
return errors.New(mi.Metadata.Error)
}
return nil
}
// ImageFilter defines criteria to filter images in ListImages.
type ImageFilter struct {
// Machines filters images to those present on the specified machines (names or IDs).
// If empty, it matches images on all machines.
Machines []string
// Name filters images by name (with or without tag). Accepts a wildcard pattern.
// If empty, it matches all image names.
Name string
}
// MachineRemoteImage represents an image in a remote registry fetched by a particular machine.
type MachineRemoteImage struct {
Metadata *pb.Metadata
Image RemoteImage
}
// RemoteImage represents an image in a remote registry. The canonical reference includes the image digest.
// Either IndexManifest or ImageManifest must be set depending on whether the reference points to an index
// (multi-platform image) or a single-platform image.
type RemoteImage struct {
Reference reference.Canonical
IndexManifest *v1.Index
ImageManifest *v1.Manifest
}