syntax = "proto3"; package containerd.services.leases.v1; import weak "gogoproto/gogo.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; option go_package = "github.com/containerd/containerd/api/services/leases/v1;leases"; // Leases service manages resources leases within the metadata store. service Leases { // Create creates a new lease for managing changes to metadata. A lease // can be used to protect objects from being removed. rpc Create(CreateRequest) returns (CreateResponse); // Delete deletes the lease and makes any unreferenced objects created // during the lease eligible for garbage collection if not referenced // or retained by other resources during the lease. rpc Delete(DeleteRequest) returns (google.protobuf.Empty); // List lists all active leases, returning the full list of // leases and optionally including the referenced resources. rpc List(ListRequest) returns (ListResponse); // AddResource references the resource by the provided lease. rpc AddResource(AddResourceRequest) returns (google.protobuf.Empty); // DeleteResource dereferences the resource by the provided lease. rpc DeleteResource(DeleteResourceRequest) returns (google.protobuf.Empty); // ListResources lists all the resources referenced by the lease. rpc ListResources(ListResourcesRequest) returns (ListResourcesResponse); } // Lease is an object which retains resources while it exists. message Lease { string id = 1; google.protobuf.Timestamp created_at = 2 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; map labels = 3; } message CreateRequest { // ID is used to identity the lease, when the id is not set the service // generates a random identifier for the lease. string id = 1; map labels = 3; } message CreateResponse { Lease lease = 1; } message DeleteRequest { string id = 1; // Sync indicates that the delete and cleanup should be done // synchronously before returning to the caller // // Default is false bool sync = 2; } message ListRequest { repeated string filters = 1; } message ListResponse { repeated Lease leases = 1; } message Resource { string id = 1; // For snapshotter resource, there are many snapshotter types here, like // overlayfs, devmapper etc. The type will be formatted with type, // like "snapshotter/overlayfs". string type = 2; } message AddResourceRequest { string id = 1; Resource resource = 2 [(gogoproto.nullable) = false]; } message DeleteResourceRequest { string id = 1; Resource resource = 2 [(gogoproto.nullable) = false]; } message ListResourcesRequest { string id = 1; } message ListResourcesResponse { repeated Resource resources = 1 [(gogoproto.nullable) = false]; }