containerd/vendor/github.com/stevvooe/continuity/proto/manifest.proto
Derek McGowan 5f08e609c0 Vendor continuity
Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
2017-02-03 11:27:40 -08:00

77 lines
3 KiB
Protocol Buffer

syntax = "proto3";
package proto;
// Manifest specifies the entries in a container bundle, keyed and sorted by
// path.
message Manifest {
repeated Resource resource = 1;
}
message Resource {
// Path specifies the path from the bundle root. If more than one
// path is present, the entry may represent a hardlink, rather than using
// a link target. The path format is operating system specific.
repeated string path = 1;
// NOTE(stevvooe): Need to define clear precedence for user/group/uid/gid precedence.
// Uid specifies the user id for the resource. A string type is used for
// compatibility across different OS.
string uid = 2;
// Gid specifies the group id for the resource. A string type is used for
// compatibility across different OS.
string gid = 3;
// user and group are not currently used but their field numbers have been
// reserved for future use. As such, they are marked as deprecated.
string user = 4 [deprecated=true];
string group = 5 [deprecated=true];
// Mode defines the file mode and permissions. We've used the same
// bit-packing from Go's os package,
// http://golang.org/pkg/os/#FileMode, since they've done the work of
// creating a cross-platform layout.
uint32 mode = 6;
// NOTE(stevvooe): Beyond here, we start defining type specific fields.
// Size specifies the size in bytes of the resource. This is only valid
// for regular files.
uint64 size = 7;
// Digest specifies the content digest of the target file. Only valid for
// regular files. The strings are formatted as <alg>:<digest hex bytes>.
// The digests are sorted in lexical order and implementations may choose
// which algorithms they prefer.
repeated string digest = 8;
// Target defines the target of a hard or soft link. Absolute links start
// with a slash and specify the resource relative to the bundle root.
// Relative links do not start with a slash and are relative to the
// resource path.
string target = 9;
// Major specifies the major device number for charactor and block devices.
uint64 major = 10;
// Minor specifies the minor device number for charactor and block devices.
uint64 minor = 11;
// TODO(stevvooe): The use of maps here may be problematic for
// deterministic generation. Check out this comment:
// https://developers.google.com/protocol-buffers/docs/proto3#backwards-compatibility
// Fortunately, the Go implementation correctly sorts the map keys to
// ensure deterministic generation, but this is not guaranteed for all
// implementations. If this is problem, we should generate that schema and
// sort by key. We can do this at any time and retain backwards
// compatibility.
// Xattr provides storage for extended attributes for the target resource.
map<string, bytes> xattr = 12;
// Ads stores one or more alternate data streams for the target resource.
map<string, bytes> ads = 13;
}