| /* |
| Copyright The containerd Authors. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| syntax = "proto3"; |
| |
| package containerd.services.diff.v1; |
| |
| import "google/protobuf/any.proto"; |
| import "google/protobuf/timestamp.proto"; |
| import "github.com/containerd/containerd/api/types/mount.proto"; |
| import "github.com/containerd/containerd/api/types/descriptor.proto"; |
| |
| option go_package = "github.com/containerd/containerd/api/services/diff/v1;diff"; |
| |
| // Diff service creates and applies diffs |
| service Diff { |
| // Apply applies the content associated with the provided digests onto |
| // the provided mounts. Archive content will be extracted and |
| // decompressed if necessary. |
| rpc Apply(ApplyRequest) returns (ApplyResponse); |
| |
| // Diff creates a diff between the given mounts and uploads the result |
| // to the content store. |
| rpc Diff(DiffRequest) returns (DiffResponse); |
| } |
| |
| message ApplyRequest { |
| // Diff is the descriptor of the diff to be extracted |
| containerd.types.Descriptor diff = 1; |
| |
| repeated containerd.types.Mount mounts = 2; |
| |
| map<string, google.protobuf.Any> payloads = 3; |
| // SyncFs is to synchronize the underlying filesystem containing files. |
| bool sync_fs = 4; |
| } |
| |
| message ApplyResponse { |
| // Applied is the descriptor for the object which was applied. |
| // If the input was a compressed blob then the result will be |
| // the descriptor for the uncompressed blob. |
| containerd.types.Descriptor applied = 1; |
| } |
| |
| message DiffRequest { |
| // Left are the mounts which represent the older copy |
| // in which is the base of the computed changes. |
| repeated containerd.types.Mount left = 1; |
| |
| // Right are the mounts which represents the newer copy |
| // in which changes from the left were made into. |
| repeated containerd.types.Mount right = 2; |
| |
| // MediaType is the media type descriptor for the created diff |
| // object |
| string media_type = 3; |
| |
| // Ref identifies the pre-commit content store object. This |
| // reference can be used to get the status from the content store. |
| string ref = 4; |
| |
| // Labels are the labels to apply to the generated content |
| // on content store commit. |
| map<string, string> labels = 5; |
| |
| // SourceDateEpoch specifies the timestamp used to provide control for reproducibility. |
| // See also https://reproducible-builds.org/docs/source-date-epoch/ . |
| // |
| // Since containerd v2.0, the whiteout timestamps are set to zero (1970-01-01), |
| // not to the source date epoch. |
| google.protobuf.Timestamp source_date_epoch = 6; |
| } |
| |
| message DiffResponse { |
| // Diff is the descriptor of the diff which can be applied |
| containerd.types.Descriptor diff = 3; |
| } |