| syntax = "proto3"; |
| |
| package containerd.services.snapshots.v1; |
| |
| import "gogoproto/gogo.proto"; |
| import "google/protobuf/empty.proto"; |
| import "google/protobuf/field_mask.proto"; |
| import "google/protobuf/timestamp.proto"; |
| import "github.com/containerd/containerd/api/types/mount.proto"; |
| |
| option go_package = "github.com/containerd/containerd/api/services/snapshot/v1;snapshot"; |
| |
| // Snapshot service manages snapshots |
| service Snapshots { |
| rpc Prepare(PrepareSnapshotRequest) returns (PrepareSnapshotResponse); |
| rpc View(ViewSnapshotRequest) returns (ViewSnapshotResponse); |
| rpc Mounts(MountsRequest) returns (MountsResponse); |
| rpc Commit(CommitSnapshotRequest) returns (google.protobuf.Empty); |
| rpc Remove(RemoveSnapshotRequest) returns (google.protobuf.Empty); |
| rpc Stat(StatSnapshotRequest) returns (StatSnapshotResponse); |
| rpc Update(UpdateSnapshotRequest) returns (UpdateSnapshotResponse); |
| rpc List(ListSnapshotsRequest) returns (stream ListSnapshotsResponse); |
| rpc Usage(UsageRequest) returns (UsageResponse); |
| } |
| |
| message PrepareSnapshotRequest { |
| string snapshotter = 1; |
| string key = 2; |
| string parent = 3; |
| |
| // Labels are arbitrary data on snapshots. |
| // |
| // The combined size of a key/value pair cannot exceed 4096 bytes. |
| map<string, string> labels = 4; |
| } |
| |
| message PrepareSnapshotResponse { |
| repeated containerd.types.Mount mounts = 1; |
| } |
| |
| message ViewSnapshotRequest { |
| string snapshotter = 1; |
| string key = 2; |
| string parent = 3; |
| |
| // Labels are arbitrary data on snapshots. |
| // |
| // The combined size of a key/value pair cannot exceed 4096 bytes. |
| map<string, string> labels = 4; |
| } |
| |
| message ViewSnapshotResponse { |
| repeated containerd.types.Mount mounts = 1; |
| } |
| |
| message MountsRequest { |
| string snapshotter = 1; |
| string key = 2; |
| } |
| |
| message MountsResponse { |
| repeated containerd.types.Mount mounts = 1; |
| } |
| |
| message RemoveSnapshotRequest { |
| string snapshotter = 1; |
| string key = 2; |
| } |
| |
| message CommitSnapshotRequest { |
| string snapshotter = 1; |
| string name = 2; |
| string key = 3; |
| |
| // Labels are arbitrary data on snapshots. |
| // |
| // The combined size of a key/value pair cannot exceed 4096 bytes. |
| map<string, string> labels = 4; |
| } |
| |
| message StatSnapshotRequest { |
| string snapshotter = 1; |
| string key = 2; |
| } |
| |
| enum Kind { |
| option (gogoproto.goproto_enum_prefix) = false; |
| option (gogoproto.enum_customname) = "Kind"; |
| |
| UNKNOWN = 0 [(gogoproto.enumvalue_customname) = "KindUnknown"]; |
| VIEW = 1 [(gogoproto.enumvalue_customname) = "KindView"]; |
| ACTIVE = 2 [(gogoproto.enumvalue_customname) = "KindActive"]; |
| COMMITTED = 3 [(gogoproto.enumvalue_customname) = "KindCommitted"]; |
| } |
| |
| message Info { |
| string name = 1; |
| string parent = 2; |
| Kind kind = 3; |
| |
| // CreatedAt provides the time at which the snapshot was created. |
| google.protobuf.Timestamp created_at = 4 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; |
| |
| // UpdatedAt provides the time the info was last updated. |
| google.protobuf.Timestamp updated_at = 5 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; |
| |
| // Labels are arbitrary data on snapshots. |
| // |
| // The combined size of a key/value pair cannot exceed 4096 bytes. |
| map<string, string> labels = 6; |
| } |
| |
| message StatSnapshotResponse { |
| Info info = 1 [(gogoproto.nullable) = false]; |
| } |
| |
| message UpdateSnapshotRequest { |
| string snapshotter = 1; |
| Info info = 2 [(gogoproto.nullable) = false]; |
| |
| // UpdateMask specifies which fields to perform the update on. If empty, |
| // the operation applies to all fields. |
| // |
| // In info, Name, Parent, Kind, Created are immutable, |
| // other field may be updated using this mask. |
| // If no mask is provided, all mutable field are updated. |
| google.protobuf.FieldMask update_mask = 3; |
| } |
| |
| message UpdateSnapshotResponse { |
| Info info = 1 [(gogoproto.nullable) = false]; |
| } |
| |
| message ListSnapshotsRequest{ |
| string snapshotter = 1; |
| } |
| |
| message ListSnapshotsResponse { |
| repeated Info info = 1 [(gogoproto.nullable) = false]; |
| } |
| |
| message UsageRequest { |
| string snapshotter = 1; |
| string key = 2; |
| } |
| |
| message UsageResponse { |
| int64 size = 1; |
| int64 inodes = 2; |
| } |