blob: 3d6e8dcd03a62fdf2be1c2cf72953704c75b8960 [file] [log] [blame]
// Copyright 2020 The Monogon Project Authors.
//
// SPDX-License-Identifier: Apache-2.0
//
// 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 metropolis.node.build.mkerofs.fsspec;
option go_package = "source.monogon.dev/metropolis/node/build/mkerofs/fsspec";
// FSSpec is the spec from which a filesystem is generated. It consists of files, directories and symbolic
// links. Directories are also automatically inferred when required for the placement of files or symbolic
// links. Inferred directories always have uid 0, gid 0 and permissions 0555. This can be overridden by
// explicitly specifying a directory at a given path.
message FSSpec {
repeated File file = 1;
repeated Directory directory = 2;
repeated SymbolicLink symbolic_link = 3;
}
// For internal use only. Represents all supported inodes in a oneof.
message Inode {
oneof type {
File file = 1;
Directory directory = 2;
SymbolicLink symbolic_link = 3;
}
}
message File {
// The path where the file ends up in the filesystem.
string path = 1;
// The path on the host filesystem where the file contents should be taken from.
string source_path = 2;
// Unix permission bits
uint32 mode = 3;
// Owner uid
uint32 uid = 4;
// Owner gid
uint32 gid = 5;
}
message Directory {
// The path where the directory ends up in the filesystem.
string path = 1;
// Unix permission bits
uint32 mode = 2;
// Owner uid
uint32 uid = 3;
// Owner gid
uint32 gid = 4;
}
message SymbolicLink {
// The path where the symbolic link ends up in the filesystem.
string path = 1;
// The path to which the symbolic link resolves to.
string target_path = 2;
}