78 lines
2.2 KiB
Protocol Buffer
78 lines
2.2 KiB
Protocol Buffer
|
syntax = "proto3";
|
||
|
|
||
|
package containerd.v1;
|
||
|
|
||
|
import "gogoproto/gogo.proto";
|
||
|
import "google/protobuf/empty.proto";
|
||
|
import "github.com/containerd/containerd/api/types/mount/mount.proto";
|
||
|
import "github.com/containerd/containerd/api/types/descriptor/descriptor.proto";
|
||
|
|
||
|
// Images is a service that allows one to register images with containerd.
|
||
|
//
|
||
|
// In containerd, an image is merely the mapping of a name to a content root,
|
||
|
// described by a descriptor. The behavior and state of image is purely
|
||
|
// dictated by the type of the descriptor.
|
||
|
//
|
||
|
// From the perspective of this service, these references are mostly shallow,
|
||
|
// in that the existence of the required content won't be validated until
|
||
|
// required by consuming services.
|
||
|
//
|
||
|
// As such, this can really be considered a "metadata service".
|
||
|
service Images {
|
||
|
// Get returns an image by name.
|
||
|
rpc Get(GetRequest) returns (GetResponse);
|
||
|
|
||
|
// Put assigns the name to a given target image based on the provided
|
||
|
// image.
|
||
|
rpc Put(PutRequest) returns (google.protobuf.Empty);
|
||
|
|
||
|
// List returns a list of all images known to containerd.
|
||
|
rpc List(ListRequest) returns (ListResponse);
|
||
|
|
||
|
// Delete deletes the image by name.
|
||
|
rpc Delete(DeleteRequest) returns (google.protobuf.Empty);
|
||
|
}
|
||
|
|
||
|
message Image {
|
||
|
string name = 1;
|
||
|
types.Descriptor target = 2 [(gogoproto.nullable) = false];
|
||
|
}
|
||
|
|
||
|
message GetRequest {
|
||
|
string name = 1;
|
||
|
|
||
|
// TODO(stevvooe): Consider that we may want to have multiple images under
|
||
|
// the same name or multiple names for the same image. This mapping could
|
||
|
// be truly many to many but we'll need a way to identify an entry.
|
||
|
//
|
||
|
// For now, we consider it unique but an intermediary index could be
|
||
|
// created to allow for a dispatch of images.
|
||
|
}
|
||
|
|
||
|
message GetResponse {
|
||
|
Image image = 1;
|
||
|
}
|
||
|
|
||
|
message PutRequest {
|
||
|
Image image = 1 [(gogoproto.nullable) = false];
|
||
|
}
|
||
|
|
||
|
message ListRequest {
|
||
|
// TODO(stevvooe): empty for now, need to ad filtration
|
||
|
// Some common use cases we might consider:
|
||
|
//
|
||
|
// 1. Select by multiple names.
|
||
|
// 2. Select by platform.
|
||
|
// 3. Select by annotations.
|
||
|
}
|
||
|
|
||
|
message ListResponse {
|
||
|
repeated Image images = 1 [(gogoproto.nullable) = false];
|
||
|
|
||
|
// TODO(stevvooe): Add pagination.
|
||
|
}
|
||
|
|
||
|
message DeleteRequest {
|
||
|
string name = 1;
|
||
|
}
|