seaweedfs/weed/pb/filer.proto

403 lines
8.8 KiB
Protocol Buffer
Raw Normal View History

2018-05-08 08:59:43 +00:00
syntax = "proto3";
2018-05-10 06:18:02 +00:00
package filer_pb;
2018-05-08 08:59:43 +00:00
2020-06-20 15:00:25 +00:00
option go_package = "github.com/chrislusf/seaweedfs/weed/pb/filer_pb";
option java_package = "seaweedfs.client";
option java_outer_classname = "FilerProto";
2018-05-08 08:59:43 +00:00
//////////////////////////////////////////////////
service SeaweedFiler {
rpc LookupDirectoryEntry (LookupDirectoryEntryRequest) returns (LookupDirectoryEntryResponse) {
}
2019-12-13 08:22:37 +00:00
rpc ListEntries (ListEntriesRequest) returns (stream ListEntriesResponse) {
2018-05-08 08:59:43 +00:00
}
rpc CreateEntry (CreateEntryRequest) returns (CreateEntryResponse) {
}
rpc UpdateEntry (UpdateEntryRequest) returns (UpdateEntryResponse) {
}
2020-04-17 09:28:09 +00:00
rpc AppendToEntry (AppendToEntryRequest) returns (AppendToEntryResponse) {
}
2018-05-08 08:59:43 +00:00
rpc DeleteEntry (DeleteEntryRequest) returns (DeleteEntryResponse) {
}
rpc AtomicRenameEntry (AtomicRenameEntryRequest) returns (AtomicRenameEntryResponse) {
}
rpc AssignVolume (AssignVolumeRequest) returns (AssignVolumeResponse) {
}
rpc LookupVolume (LookupVolumeRequest) returns (LookupVolumeResponse) {
}
2020-10-15 17:52:17 +00:00
rpc CollectionList (CollectionListRequest) returns (CollectionListResponse) {
}
rpc DeleteCollection (DeleteCollectionRequest) returns (DeleteCollectionResponse) {
}
rpc Statistics (StatisticsRequest) returns (StatisticsResponse) {
}
rpc GetFilerConfiguration (GetFilerConfigurationRequest) returns (GetFilerConfigurationResponse) {
}
2020-04-13 04:00:55 +00:00
rpc SubscribeMetadata (SubscribeMetadataRequest) returns (stream SubscribeMetadataResponse) {
2020-03-30 08:19:33 +00:00
}
rpc SubscribeLocalMetadata (SubscribeMetadataRequest) returns (stream SubscribeMetadataResponse) {
}
2020-05-05 09:05:28 +00:00
rpc KeepConnected (stream KeepConnectedRequest) returns (stream KeepConnectedResponse) {
}
2020-05-08 09:47:22 +00:00
rpc LocateBroker (LocateBrokerRequest) returns (LocateBrokerResponse) {
}
2020-09-09 18:21:23 +00:00
rpc KvGet (KvGetRequest) returns (KvGetResponse) {
}
rpc KvPut (KvPutRequest) returns (KvPutResponse) {
}
2018-05-08 08:59:43 +00:00
}
//////////////////////////////////////////////////
message LookupDirectoryEntryRequest {
string directory = 1;
string name = 2;
}
message LookupDirectoryEntryResponse {
Entry entry = 1;
}
message ListEntriesRequest {
string directory = 1;
2018-07-22 08:14:36 +00:00
string prefix = 2;
string startFromFileName = 3;
bool inclusiveStartFrom = 4;
uint32 limit = 5;
2018-05-08 08:59:43 +00:00
}
message ListEntriesResponse {
2019-12-13 08:22:37 +00:00
Entry entry = 1;
2018-05-08 08:59:43 +00:00
}
2021-07-27 05:53:44 +00:00
message RemoteEntry {
int64 last_modified_at = 1;
int64 size = 2;
string e_tag = 3;
string storage_name = 4;
}
2018-05-08 08:59:43 +00:00
message Entry {
string name = 1;
bool is_directory = 2;
repeated FileChunk chunks = 3;
2018-05-08 08:59:43 +00:00
FuseAttributes attributes = 4;
2018-09-07 20:12:52 +00:00
map<string, bytes> extended = 5;
2020-09-24 18:11:42 +00:00
bytes hard_link_id = 7;
2020-09-24 10:06:44 +00:00
int32 hard_link_counter = 8; // only exists in hard link meta data
2020-11-30 12:34:04 +00:00
bytes content = 9; // if not empty, the file content
2021-07-19 08:12:31 +00:00
2021-07-27 05:53:44 +00:00
RemoteEntry remote_entry = 10;
2018-05-08 08:59:43 +00:00
}
message FullEntry {
string dir = 1;
Entry entry = 2;
}
2018-08-13 08:20:49 +00:00
message EventNotification {
2018-09-17 07:27:56 +00:00
Entry old_entry = 1;
Entry new_entry = 2;
bool delete_chunks = 3;
string new_parent_path = 4;
bool is_from_other_cluster = 5;
repeated int32 signatures = 6;
2018-08-13 08:20:49 +00:00
}
message FileChunk {
string file_id = 1; // to be deprecated
int64 offset = 2;
uint64 size = 3;
2018-05-16 07:54:44 +00:00
int64 mtime = 4;
2018-09-09 23:25:43 +00:00
string e_tag = 5;
string source_file_id = 6; // to be deprecated
FileId fid = 7;
FileId source_fid = 8;
bytes cipher_key = 9;
bool is_compressed = 10;
2020-07-15 21:19:15 +00:00
bool is_chunk_manifest = 11; // content is a list of FileChunks
}
message FileChunkManifest {
repeated FileChunk chunks = 1;
}
message FileId {
uint32 volume_id = 1;
uint64 file_key = 2;
fixed32 cookie = 3;
}
2018-05-08 08:59:43 +00:00
message FuseAttributes {
uint64 file_size = 1;
int64 mtime = 2; // unix time in seconds
2018-05-08 08:59:43 +00:00
uint32 file_mode = 3;
uint32 uid = 4;
uint32 gid = 5;
int64 crtime = 6; // unix time in seconds
string mime = 7;
string replication = 8;
string collection = 9;
int32 ttl_sec = 10;
string user_name = 11; // for hdfs
repeated string group_name = 12; // for hdfs
2018-12-26 06:45:44 +00:00
string symlink_target = 13;
bytes md5 = 14;
2020-12-14 07:08:21 +00:00
string disk_type = 15;
2018-05-08 08:59:43 +00:00
}
message CreateEntryRequest {
string directory = 1;
Entry entry = 2;
bool o_excl = 3;
bool is_from_other_cluster = 4;
repeated int32 signatures = 5;
}
message CreateEntryResponse {
string error = 1;
}
message UpdateEntryRequest {
string directory = 1;
Entry entry = 2;
bool is_from_other_cluster = 3;
repeated int32 signatures = 4;
}
message UpdateEntryResponse {
}
2020-04-17 09:28:09 +00:00
message AppendToEntryRequest {
string directory = 1;
string entry_name = 2;
repeated FileChunk chunks = 3;
}
message AppendToEntryResponse {
}
2018-05-08 08:59:43 +00:00
message DeleteEntryRequest {
string directory = 1;
string name = 2;
2018-12-11 15:17:10 +00:00
// bool is_directory = 3;
2018-06-07 05:11:01 +00:00
bool is_delete_data = 4;
bool is_recursive = 5;
bool ignore_recursive_error = 6;
bool is_from_other_cluster = 7;
repeated int32 signatures = 8;
2018-05-08 08:59:43 +00:00
}
message DeleteEntryResponse {
2020-02-25 22:38:36 +00:00
string error = 1;
2018-05-08 08:59:43 +00:00
}
message AtomicRenameEntryRequest {
string old_directory = 1;
string old_name = 2;
string new_directory = 3;
string new_name = 4;
2021-07-01 08:19:28 +00:00
repeated int32 signatures = 5;
}
message AtomicRenameEntryResponse {
}
message AssignVolumeRequest {
int32 count = 1;
string collection = 2;
string replication = 3;
2018-06-12 06:13:33 +00:00
int32 ttl_sec = 4;
string data_center = 5;
2020-10-25 22:32:43 +00:00
string path = 6;
string rack = 7;
2020-12-14 07:08:21 +00:00
string disk_type = 8;
}
message AssignVolumeResponse {
string file_id = 1;
string url = 2;
string public_url = 3;
int32 count = 4;
2019-02-15 08:09:19 +00:00
string auth = 5;
string collection = 6;
string replication = 7;
string error = 8;
}
message LookupVolumeRequest {
repeated string volume_ids = 1;
}
message Locations {
repeated Location locations = 1;
}
message Location {
string url = 1;
string public_url = 2;
}
message LookupVolumeResponse {
map<string, Locations> locations_map = 1;
}
2020-10-15 17:52:17 +00:00
message Collection {
string name = 1;
}
message CollectionListRequest {
bool include_normal_volumes = 1;
bool include_ec_volumes = 2;
}
message CollectionListResponse {
repeated Collection collections = 1;
}
message DeleteCollectionRequest {
string collection = 1;
}
message DeleteCollectionResponse {
}
message StatisticsRequest {
string replication = 1;
string collection = 2;
string ttl = 3;
2020-12-14 07:08:21 +00:00
string disk_type = 4;
}
message StatisticsResponse {
uint64 total_size = 4;
uint64 used_size = 5;
uint64 file_count = 6;
}
message GetFilerConfigurationRequest {
}
message GetFilerConfigurationResponse {
repeated string masters = 1;
string replication = 2;
string collection = 3;
uint32 max_mb = 4;
string dir_buckets = 5;
bool cipher = 7;
2020-09-06 05:52:15 +00:00
int32 signature = 8;
2020-09-17 13:46:51 +00:00
string metrics_address = 9;
int32 metrics_interval_sec = 10;
string version = 11;
}
2020-03-30 08:19:33 +00:00
2020-04-13 04:00:55 +00:00
message SubscribeMetadataRequest {
2020-03-30 08:19:33 +00:00
string client_name = 1;
2020-04-05 19:51:21 +00:00
string path_prefix = 2;
2020-04-05 07:51:16 +00:00
int64 since_ns = 3;
int32 signature = 4;
2020-03-30 08:19:33 +00:00
}
2020-04-13 04:00:55 +00:00
message SubscribeMetadataResponse {
2020-03-30 08:19:33 +00:00
string directory = 1;
EventNotification event_notification = 2;
int64 ts_ns = 3;
2020-03-30 08:19:33 +00:00
}
message LogEntry {
int64 ts_ns = 1;
int32 partition_key_hash = 2;
bytes data = 3;
}
2020-05-05 09:05:28 +00:00
message KeepConnectedRequest {
string name = 1;
uint32 grpc_port = 2;
2020-05-08 09:47:22 +00:00
repeated string resources = 3;
2020-05-05 09:05:28 +00:00
}
message KeepConnectedResponse {
}
2020-05-08 09:47:22 +00:00
message LocateBrokerRequest {
string resource = 1;
}
message LocateBrokerResponse {
bool found = 1;
// if found, send the exact address
// if not found, send the full list of existing brokers
message Resource {
string grpc_addresses = 1;
int32 resource_count = 2;
}
repeated Resource resources = 2;
}
2020-09-09 18:21:23 +00:00
2021-07-27 08:16:28 +00:00
/////////////////////////
2020-09-09 18:21:23 +00:00
// Key-Value operations
2021-07-27 08:16:28 +00:00
/////////////////////////
2020-09-09 18:21:23 +00:00
message KvGetRequest {
bytes key = 1;
}
message KvGetResponse {
bytes value = 1;
string error = 2;
}
message KvPutRequest {
bytes key = 1;
bytes value = 2;
}
message KvPutResponse {
string error = 1;
}
2020-11-12 07:46:42 +00:00
2021-07-27 08:16:28 +00:00
/////////////////////////
2020-11-12 07:46:42 +00:00
// path-based configurations
2021-07-27 08:16:28 +00:00
/////////////////////////
2020-11-12 08:39:59 +00:00
message FilerConf {
int32 version = 1;
message PathConf {
string location_prefix = 1;
string collection = 2;
string replication = 3;
string ttl = 4;
2020-12-13 19:59:32 +00:00
string disk_type = 5;
2020-11-16 00:58:48 +00:00
bool fsync = 6;
uint32 volume_growth_count = 7;
bool read_only = 8;
2020-11-12 08:39:59 +00:00
}
repeated PathConf locations = 2;
2020-11-12 07:46:42 +00:00
}
2021-07-27 08:16:28 +00:00
/////////////////////////
// Remote Storage related
/////////////////////////
message RemoteConf {
string type = 1;
string name = 2;
string s3_access_key = 4;
string s3_secret_key = 5;
string s3_region = 6;
string s3_endpoint = 7;
}
2021-07-27 08:16:28 +00:00
message RemoteStorageMapping {
map<string,RemoteStorageLocation> mappings = 1;
}
message RemoteStorageLocation {
string name = 1;
string bucket = 2;
string path = 3;
2021-07-27 08:16:28 +00:00
}