Add preliminary libpod image API
Signed-off-by: Matthew Heon <mheon@redhat.com>
This commit is contained in:
parent
9d56fd8443
commit
bdddb3d36b
1 changed files with 81 additions and 14 deletions
|
@ -1,29 +1,18 @@
|
|||
package libpod
|
||||
|
||||
import (
|
||||
"github.com/containers/storage"
|
||||
"github.com/kubernetes-incubator/cri-o/libpod/ctr"
|
||||
"github.com/kubernetes-incubator/cri-o/libpod/pod"
|
||||
spec "github.com/opencontainers/runtime-spec/specs-go"
|
||||
)
|
||||
|
||||
// ContainerFilter is a function to determine whether a container is included
|
||||
// in command output. Containers to be outputted are tested using the function.
|
||||
// A true return will include the container, a false return will exclude it.
|
||||
type ContainerFilter func(*ctr.Container) bool
|
||||
|
||||
// PodFilter is a function to determine whether a pod is included in command
|
||||
// output. Pods to be outputted are tested using the function. A true return
|
||||
// will include the pod, a false return will exclude it.
|
||||
type PodFilter func(*pod.Pod) bool
|
||||
// Runtime API
|
||||
|
||||
// A RuntimeOption is a functional option which alters the Runtime created by
|
||||
// NewRuntime
|
||||
type RuntimeOption func(*Runtime) error
|
||||
|
||||
// A CtrCreateOption is a functional option which alters the Container created
|
||||
// by NewContainer
|
||||
type CtrCreateOption func(*ctr.Container) error
|
||||
|
||||
// Runtime is the core libpod runtime
|
||||
type Runtime struct {
|
||||
// TODO populate
|
||||
|
@ -34,6 +23,17 @@ func NewRuntime(options ...RuntimeOption) (*Runtime, error) {
|
|||
return nil, ctr.ErrNotImplemented
|
||||
}
|
||||
|
||||
// Container API
|
||||
|
||||
// A CtrCreateOption is a functional option which alters the Container created
|
||||
// by NewContainer
|
||||
type CtrCreateOption func(*ctr.Container) error
|
||||
|
||||
// ContainerFilter is a function to determine whether a container is included
|
||||
// in command output. Containers to be outputted are tested using the function.
|
||||
// A true return will include the container, a false return will exclude it.
|
||||
type ContainerFilter func(*ctr.Container) bool
|
||||
|
||||
// NewContainer creates a new container from a given OCI config
|
||||
func (r *Runtime) NewContainer(spec *spec.Spec, options ...CtrCreateOption) (*ctr.Container, error) {
|
||||
return nil, ctr.ErrNotImplemented
|
||||
|
@ -65,6 +65,13 @@ func (r *Runtime) GetContainers(filters ...ContainerFilter) ([]*ctr.Container, e
|
|||
return nil, ctr.ErrNotImplemented
|
||||
}
|
||||
|
||||
// Pod API
|
||||
|
||||
// PodFilter is a function to determine whether a pod is included in command
|
||||
// output. Pods to be outputted are tested using the function. A true return
|
||||
// will include the pod, a false return will exclude it.
|
||||
type PodFilter func(*pod.Pod) bool
|
||||
|
||||
// NewPod makes a new, empty pod
|
||||
func (r *Runtime) NewPod() (*pod.Pod, error) {
|
||||
return nil, ctr.ErrNotImplemented
|
||||
|
@ -97,4 +104,64 @@ func (r *Runtime) GetPods(filters ...PodFilter) ([]*pod.Pod, error) {
|
|||
return nil, ctr.ErrNotImplemented
|
||||
}
|
||||
|
||||
// TODO Add image API
|
||||
// Image API
|
||||
|
||||
// ImageFilter is a function to determine whether an image is included in
|
||||
// command output. Images to be outputted are tested using the function. A true
|
||||
// return will include the image, a false return will exclude it.
|
||||
type ImageFilter func(*storage.Image) bool
|
||||
|
||||
// PullImage pulls an image from configured registries
|
||||
// By default, only the latest tag (or a specific tag if requested) will be
|
||||
// pulled. If allTags is true, all tags for the requested image will be pulled.
|
||||
// Signature validation will be performed if the Runtime has been appropriately
|
||||
// configured
|
||||
func (r *Runtime) PullImage(image string, allTags bool) (*storage.Image, error) {
|
||||
return nil, ctr.ErrNotImplemented
|
||||
}
|
||||
|
||||
// PushImage pushes the given image to a location described by the given path
|
||||
func (r *Runtime) PushImage(image *storage.Image, destination string) error {
|
||||
return ctr.ErrNotImplemented
|
||||
}
|
||||
|
||||
// TagImage adds a tag to the given image
|
||||
func (r *Runtime) TagImage(image *storage.Image, tag string) error {
|
||||
return ctr.ErrNotImplemented
|
||||
}
|
||||
|
||||
// UntagImage removes a tag from the given image
|
||||
func (r *Runtime) UntagImage(image *storage.Image, tag string) error {
|
||||
return ctr.ErrNotImplemented
|
||||
}
|
||||
|
||||
// RemoveImage deletes an image from local storage
|
||||
// Images being used by running containers cannot be removed
|
||||
func (r *Runtime) RemoveImage(image *storage.Image) error {
|
||||
return ctr.ErrNotImplemented
|
||||
}
|
||||
|
||||
// GetImage retrieves an image matching the given name or hash from system
|
||||
// storage
|
||||
// If no matching image can be found, an error is returned
|
||||
func (r *Runtime) GetImage(image string) (*storage.Image, error) {
|
||||
return nil, ctr.ErrNotImplemented
|
||||
}
|
||||
|
||||
// GetImages retrieves all images present in storage
|
||||
// Filters can be provided which will determine which images are included in the
|
||||
// output. Multiple filters are handled by ANDing their output, so only images
|
||||
// matching all filters are included
|
||||
func (r *Runtime) GetImages(filter ...ImageFilter) ([]*storage.Image, error) {
|
||||
return nil, ctr.ErrNotImplemented
|
||||
}
|
||||
|
||||
// CommitContainer commits the changes between a container and its image,
|
||||
// creating a new image
|
||||
// If the container was not created from an image (for example,
|
||||
// WithRootFSFromPath will create a container from a directory on the system),
|
||||
// a new base image will be created from the contents of the container's
|
||||
// filesystem
|
||||
func (r *Runtime) CommitContainer(c *ctr.Container) (*storage.Image, error) {
|
||||
return nil, ctr.ErrNotImplemented
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue