github.com/containerd/containerd@v22.0.0-20200918172823-438c87b8e050+incompatible/api/services/images/v1/images.proto (about) 1 syntax = "proto3"; 2 3 package containerd.services.images.v1; 4 5 import weak "gogoproto/gogo.proto"; 6 import "google/protobuf/empty.proto"; 7 import "google/protobuf/field_mask.proto"; 8 import "google/protobuf/timestamp.proto"; 9 import "github.com/containerd/containerd/api/types/descriptor.proto"; 10 11 option go_package = "github.com/containerd/containerd/api/services/images/v1;images"; 12 13 // Images is a service that allows one to register images with containerd. 14 // 15 // In containerd, an image is merely the mapping of a name to a content root, 16 // described by a descriptor. The behavior and state of image is purely 17 // dictated by the type of the descriptor. 18 // 19 // From the perspective of this service, these references are mostly shallow, 20 // in that the existence of the required content won't be validated until 21 // required by consuming services. 22 // 23 // As such, this can really be considered a "metadata service". 24 service Images { 25 // Get returns an image by name. 26 rpc Get(GetImageRequest) returns (GetImageResponse); 27 28 // List returns a list of all images known to containerd. 29 rpc List(ListImagesRequest) returns (ListImagesResponse); 30 31 // Create an image record in the metadata store. 32 // 33 // The name of the image must be unique. 34 rpc Create(CreateImageRequest) returns (CreateImageResponse); 35 36 // Update assigns the name to a given target image based on the provided 37 // image. 38 rpc Update(UpdateImageRequest) returns (UpdateImageResponse); 39 40 // Delete deletes the image by name. 41 rpc Delete(DeleteImageRequest) returns (google.protobuf.Empty); 42 } 43 44 message Image { 45 // Name provides a unique name for the image. 46 // 47 // Containerd treats this as the primary identifier. 48 string name = 1; 49 50 // Labels provides free form labels for the image. These are runtime only 51 // and do not get inherited into the package image in any way. 52 // 53 // Labels may be updated using the field mask. 54 // The combined size of a key/value pair cannot exceed 4096 bytes. 55 map<string, string> labels = 2; 56 57 // Target describes the content entry point of the image. 58 containerd.types.Descriptor target = 3 [(gogoproto.nullable) = false]; 59 60 // CreatedAt is the time the image was first created. 61 google.protobuf.Timestamp created_at = 7 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; 62 63 // UpdatedAt is the last time the image was mutated. 64 google.protobuf.Timestamp updated_at = 8 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; 65 } 66 67 message GetImageRequest { 68 string name = 1; 69 } 70 71 message GetImageResponse { 72 Image image = 1; 73 } 74 75 message CreateImageRequest { 76 Image image = 1 [(gogoproto.nullable) = false]; 77 } 78 79 message CreateImageResponse { 80 Image image = 1 [(gogoproto.nullable) = false]; 81 } 82 83 message UpdateImageRequest { 84 // Image provides a full or partial image for update. 85 // 86 // The name field must be set or an error will be returned. 87 Image image = 1 [(gogoproto.nullable) = false]; 88 89 // UpdateMask specifies which fields to perform the update on. If empty, 90 // the operation applies to all fields. 91 google.protobuf.FieldMask update_mask = 2; 92 } 93 94 message UpdateImageResponse { 95 Image image = 1 [(gogoproto.nullable) = false]; 96 } 97 98 message ListImagesRequest { 99 // Filters contains one or more filters using the syntax defined in the 100 // containerd filter package. 101 // 102 // The returned result will be those that match any of the provided 103 // filters. Expanded, images that match the following will be 104 // returned: 105 // 106 // filters[0] or filters[1] or ... or filters[n-1] or filters[n] 107 // 108 // If filters is zero-length or nil, all items will be returned. 109 repeated string filters = 1; 110 } 111 112 message ListImagesResponse { 113 repeated Image images = 1 [(gogoproto.nullable) = false]; 114 } 115 116 message DeleteImageRequest { 117 string name = 1; 118 119 // Sync indicates that the delete and cleanup should be done 120 // synchronously before returning to the caller 121 // 122 // Default is false 123 bool sync = 2; 124 }