You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							445 lines
						
					
					
						
							10 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							445 lines
						
					
					
						
							10 KiB
						
					
					
				| syntax = "proto3"; | |
|  | |
| package master_pb; | |
|  | |
| option go_package = "github.com/seaweedfs/seaweedfs/weed/pb/master_pb"; | |
|  | |
| ////////////////////////////////////////////////// | |
|  | |
| service Seaweed { | |
|   rpc SendHeartbeat (stream Heartbeat) returns (stream HeartbeatResponse) { | |
|   } | |
|   rpc KeepConnected (stream KeepConnectedRequest) returns (stream KeepConnectedResponse) { | |
|   } | |
|   rpc LookupVolume (LookupVolumeRequest) returns (LookupVolumeResponse) { | |
|   } | |
|   rpc Assign (AssignRequest) returns (AssignResponse) { | |
|   } | |
|   rpc StreamAssign (stream AssignRequest) returns (stream AssignResponse) { | |
|   } | |
|   rpc Statistics (StatisticsRequest) returns (StatisticsResponse) { | |
|   } | |
|   rpc CollectionList (CollectionListRequest) returns (CollectionListResponse) { | |
|   } | |
|   rpc CollectionDelete (CollectionDeleteRequest) returns (CollectionDeleteResponse) { | |
|   } | |
|   rpc VolumeList (VolumeListRequest) returns (VolumeListResponse) { | |
|   } | |
|   rpc LookupEcVolume (LookupEcVolumeRequest) returns (LookupEcVolumeResponse) { | |
|   } | |
|   rpc VacuumVolume (VacuumVolumeRequest) returns (VacuumVolumeResponse) { | |
|   } | |
|   rpc DisableVacuum (DisableVacuumRequest) returns (DisableVacuumResponse) { | |
|   } | |
|   rpc EnableVacuum (EnableVacuumRequest) returns (EnableVacuumResponse) { | |
|   } | |
|   rpc VolumeMarkReadonly (VolumeMarkReadonlyRequest) returns (VolumeMarkReadonlyResponse) { | |
|   } | |
|   rpc GetMasterConfiguration (GetMasterConfigurationRequest) returns (GetMasterConfigurationResponse) { | |
|   } | |
|   rpc ListClusterNodes (ListClusterNodesRequest) returns (ListClusterNodesResponse) { | |
|   } | |
|   rpc LeaseAdminToken (LeaseAdminTokenRequest) returns (LeaseAdminTokenResponse) { | |
|   } | |
|   rpc ReleaseAdminToken (ReleaseAdminTokenRequest) returns (ReleaseAdminTokenResponse) { | |
|   } | |
|   rpc Ping (PingRequest) returns (PingResponse) { | |
|   } | |
|   rpc RaftListClusterServers (RaftListClusterServersRequest) returns (RaftListClusterServersResponse) { | |
|   } | |
|   rpc RaftAddServer (RaftAddServerRequest) returns (RaftAddServerResponse) { | |
|   } | |
|   rpc RaftRemoveServer (RaftRemoveServerRequest) returns (RaftRemoveServerResponse) { | |
|   } | |
|   rpc VolumeGrow (VolumeGrowRequest) returns (VolumeGrowResponse) { | |
|   } | |
| } | |
|  | |
| ////////////////////////////////////////////////// | |
|  | |
| message Heartbeat { | |
|   string ip = 1; | |
|   uint32 port = 2; | |
|   string public_url = 3; | |
|   uint64 max_file_key = 5; | |
|   string data_center = 6; | |
|   string rack = 7; | |
|   uint32 admin_port = 8; | |
|   repeated VolumeInformationMessage volumes = 9; | |
|   // delta volumes | |
|   repeated VolumeShortInformationMessage new_volumes = 10; | |
|   repeated VolumeShortInformationMessage deleted_volumes = 11; | |
|   bool has_no_volumes = 12; | |
|  | |
|   // erasure coding | |
|   repeated VolumeEcShardInformationMessage ec_shards = 16; | |
|   // delta erasure coding shards | |
|   repeated VolumeEcShardInformationMessage new_ec_shards = 17; | |
|   repeated VolumeEcShardInformationMessage deleted_ec_shards = 18; | |
|   bool has_no_ec_shards = 19; | |
|  | |
|   map<string, uint32> max_volume_counts = 4; | |
|   uint32 grpc_port = 20; | |
|   repeated string location_uuids = 21; | |
| } | |
|  | |
| message HeartbeatResponse { | |
|   uint64 volume_size_limit = 1; | |
|   string leader = 2; | |
|   string metrics_address = 3; | |
|   uint32 metrics_interval_seconds = 4; | |
|   repeated StorageBackend storage_backends = 5; | |
|   repeated string duplicated_uuids = 6; | |
|   bool preallocate = 7; | |
| } | |
|  | |
| message VolumeInformationMessage { | |
|   uint32 id = 1; | |
|   uint64 size = 2; | |
|   string collection = 3; | |
|   uint64 file_count = 4; | |
|   uint64 delete_count = 5; | |
|   uint64 deleted_byte_count = 6; | |
|   bool read_only = 7; | |
|   uint32 replica_placement = 8; | |
|   uint32 version = 9; | |
|   uint32 ttl = 10; | |
|   uint32 compact_revision = 11; | |
|   int64 modified_at_second = 12; | |
|   string remote_storage_name = 13; | |
|   string remote_storage_key = 14; | |
|   string disk_type = 15; | |
|   uint32 disk_id = 16; | |
| } | |
|  | |
| message VolumeShortInformationMessage { | |
|   uint32 id = 1; | |
|   string collection = 3; | |
|   uint32 replica_placement = 8; | |
|   uint32 version = 9; | |
|   uint32 ttl = 10; | |
|   string disk_type = 15; | |
|   uint32 disk_id = 16; | |
| } | |
|  | |
| message VolumeEcShardInformationMessage { | |
|   uint32 id = 1; | |
|   string collection = 2; | |
|   uint32 ec_index_bits = 3; | |
|   string disk_type = 4; | |
|   uint64 expire_at_sec = 5; // used to record the destruction time of ec volume | |
|   uint32 disk_id = 6; | |
|   repeated int64 shard_sizes = 7; // optimized: sizes for shards in order of set bits in ec_index_bits | |
| } | |
|  | |
| message StorageBackend { | |
|   string type = 1; | |
|   string id = 2; | |
|   map<string, string> properties = 3; | |
| } | |
|  | |
| message Empty { | |
| } | |
|  | |
| message SuperBlockExtra { | |
|   message ErasureCoding { | |
|     uint32 data = 1; | |
|     uint32 parity = 2; | |
|     repeated uint32 volume_ids = 3; | |
|   } | |
|   ErasureCoding erasure_coding = 1; | |
| } | |
|  | |
| message KeepConnectedRequest { | |
|   string client_type = 1; | |
|   string client_address = 3; | |
|   string version = 4; | |
|   string filer_group = 5; | |
|   string data_center = 6; | |
|   string rack = 7; | |
| } | |
|  | |
| message VolumeLocation { | |
|   string url = 1; | |
|   string public_url = 2; | |
|   repeated uint32 new_vids = 3; | |
|   repeated uint32 deleted_vids = 4; | |
|   string leader = 5; // optional when leader is not itself | |
|   string data_center = 6; // optional when DataCenter is in use | |
|   uint32 grpc_port = 7; | |
|   repeated uint32 new_ec_vids = 8; | |
|   repeated uint32 deleted_ec_vids = 9; | |
| } | |
|  | |
| message ClusterNodeUpdate { | |
|   string node_type = 1; | |
|   string address = 2; | |
|   bool is_add = 4; | |
|   string filer_group = 5; | |
|   int64 created_at_ns = 6; | |
| } | |
|  | |
| message KeepConnectedResponse { | |
|   VolumeLocation volume_location = 1; | |
|   ClusterNodeUpdate cluster_node_update = 2; | |
| } | |
|  | |
| message LookupVolumeRequest { | |
|   repeated string volume_or_file_ids = 1; | |
|   string collection = 2; // optional, a bit faster if provided. | |
| } | |
| message LookupVolumeResponse { | |
|   message VolumeIdLocation { | |
|     string volume_or_file_id = 1; | |
|     repeated Location locations = 2; | |
|     string error = 3; | |
|     string auth = 4; | |
|   } | |
|   repeated VolumeIdLocation volume_id_locations = 1; | |
| } | |
|  | |
| message Location { | |
|   string url = 1; | |
|   string public_url = 2; | |
|   uint32 grpc_port = 3; | |
|   string data_center = 4; | |
| } | |
|  | |
| message AssignRequest { | |
|   uint64 count = 1; | |
|   string replication = 2; | |
|   string collection = 3; | |
|   string ttl = 4; | |
|   string data_center = 5; | |
|   string rack = 6; | |
|   string data_node = 7; | |
|   uint32 memory_map_max_size_mb = 8; | |
|   uint32 writable_volume_count = 9; | |
|   string disk_type = 10; | |
| } | |
|  | |
| message VolumeGrowRequest { | |
|   uint32 writable_volume_count = 1; | |
|   string replication = 2; | |
|   string collection = 3; | |
|   string ttl = 4; | |
|   string data_center = 5; | |
|   string rack = 6; | |
|   string data_node = 7; | |
|   uint32 memory_map_max_size_mb = 8; | |
|   string disk_type = 9; | |
| } | |
|  | |
| message AssignResponse { | |
|   string fid = 1; | |
|   uint64 count = 4; | |
|   string error = 5; | |
|   string auth = 6; | |
|   repeated Location replicas = 7; | |
|   Location location = 8; | |
| } | |
|  | |
| message StatisticsRequest { | |
|   string replication = 1; | |
|   string collection = 2; | |
|   string ttl = 3; | |
|   string disk_type = 4; | |
| } | |
| message StatisticsResponse { | |
|   uint64 total_size = 4; | |
|   uint64 used_size = 5; | |
|   uint64 file_count = 6; | |
| } | |
|  | |
| // | |
| // collection related | |
| // | |
| message Collection { | |
|   string name = 1; | |
| } | |
| message CollectionListRequest { | |
|   bool include_normal_volumes = 1; | |
|   bool include_ec_volumes = 2; | |
| } | |
| message CollectionListResponse { | |
|   repeated Collection collections = 1; | |
| } | |
|  | |
| message CollectionDeleteRequest { | |
|   string name = 1; | |
| } | |
| message CollectionDeleteResponse { | |
| } | |
|  | |
| // | |
| // volume related | |
| // | |
| message DiskInfo { | |
|   string type = 1; | |
|   int64 volume_count = 2; | |
|   int64 max_volume_count = 3; | |
|   int64 free_volume_count = 4; | |
|   int64 active_volume_count = 5; | |
|   repeated VolumeInformationMessage volume_infos = 6; | |
|   repeated VolumeEcShardInformationMessage ec_shard_infos = 7; | |
|   int64 remote_volume_count = 8; | |
|   uint32 disk_id = 9; | |
| } | |
| message DataNodeInfo { | |
|   string id = 1; | |
|   map<string, DiskInfo> diskInfos = 2; | |
|   uint32 grpc_port = 3; | |
| } | |
| message RackInfo { | |
|   string id = 1; | |
|   repeated DataNodeInfo data_node_infos = 2; | |
|   map<string, DiskInfo> diskInfos = 3; | |
| } | |
| message DataCenterInfo { | |
|   string id = 1; | |
|   repeated RackInfo rack_infos = 2; | |
|   map<string, DiskInfo> diskInfos = 3; | |
| } | |
| message TopologyInfo { | |
|   string id = 1; | |
|   repeated DataCenterInfo data_center_infos = 2; | |
|   map<string, DiskInfo> diskInfos = 3; | |
| } | |
| message VolumeListRequest { | |
| } | |
| message VolumeListResponse { | |
|   TopologyInfo topology_info = 1; | |
|   uint64 volume_size_limit_mb = 2; | |
| } | |
|  | |
| message LookupEcVolumeRequest { | |
|   uint32 volume_id = 1; | |
| } | |
| message LookupEcVolumeResponse { | |
|   uint32 volume_id = 1; | |
|   message EcShardIdLocation { | |
|     uint32 shard_id = 1; | |
|     repeated Location locations = 2; | |
|   } | |
|   repeated EcShardIdLocation shard_id_locations = 2; | |
| } | |
|  | |
| message VacuumVolumeRequest { | |
|   float garbage_threshold = 1; | |
|   uint32 volume_id = 2; | |
|   string collection = 3; | |
| } | |
| message VacuumVolumeResponse { | |
| } | |
|  | |
| message DisableVacuumRequest { | |
| } | |
| message DisableVacuumResponse { | |
| } | |
|  | |
| message EnableVacuumRequest { | |
| } | |
| message EnableVacuumResponse { | |
| } | |
|  | |
| message VolumeMarkReadonlyRequest { | |
|   string ip = 1; | |
|   uint32 port = 2; | |
|   uint32 volume_id = 4; | |
|   string collection = 5; | |
|   uint32 replica_placement = 6; | |
|   uint32 version = 7; | |
|   uint32 ttl = 8; | |
|   string disk_type = 9; | |
|   bool is_readonly = 10; | |
| } | |
| message VolumeMarkReadonlyResponse { | |
| } | |
|  | |
| message GetMasterConfigurationRequest { | |
| } | |
| message GetMasterConfigurationResponse { | |
|   string metrics_address = 1; | |
|   uint32 metrics_interval_seconds = 2; | |
|   repeated StorageBackend storage_backends = 3; | |
|   string default_replication = 4; | |
|   string leader = 5; | |
|   uint32 volume_size_limit_m_b = 6; | |
|   bool volume_preallocate = 7; | |
| } | |
|  | |
| message ListClusterNodesRequest { | |
|   string client_type = 1; | |
|   string filer_group = 2; | |
|   int32 limit = 4; | |
| } | |
| message ListClusterNodesResponse { | |
|   message ClusterNode { | |
|     string address = 1; | |
|     string version = 2; | |
|     int64 created_at_ns = 4; | |
|     string data_center = 5; | |
|     string rack = 6; | |
|   } | |
|   repeated ClusterNode cluster_nodes = 1; | |
| } | |
|  | |
| message LeaseAdminTokenRequest { | |
|   int64 previous_token = 1; | |
|   int64 previous_lock_time = 2; | |
|   string lock_name = 3; | |
|   string client_name = 4; | |
|   string message = 5; | |
| } | |
| message LeaseAdminTokenResponse { | |
|   int64 token = 1; | |
|   int64 lock_ts_ns = 2; | |
| } | |
|  | |
| message ReleaseAdminTokenRequest { | |
|   int64 previous_token = 1; | |
|   int64 previous_lock_time = 2; | |
|   string lock_name = 3; | |
| } | |
| message ReleaseAdminTokenResponse { | |
| } | |
|  | |
| message PingRequest { | |
|   string target = 1; // default to ping itself | |
|   string target_type = 2; | |
| } | |
| message PingResponse { | |
|   int64 start_time_ns = 1; | |
|   int64 remote_time_ns = 2; | |
|   int64 stop_time_ns = 3; | |
| } | |
|  | |
| message RaftAddServerRequest { | |
|   string id = 1; | |
|   string address = 2; | |
|   bool voter = 3; | |
| } | |
| message RaftAddServerResponse { | |
| } | |
|  | |
| message RaftRemoveServerRequest { | |
|   string id = 1; | |
|   bool force = 2; | |
| } | |
| message RaftRemoveServerResponse { | |
| } | |
|  | |
| message RaftListClusterServersRequest { | |
| } | |
| message RaftListClusterServersResponse { | |
|   message ClusterServers { | |
|     string id = 1; | |
|     string address = 2; | |
|     string suffrage = 3; | |
|     bool   isLeader = 4; | |
|   } | |
|   repeated ClusterServers cluster_servers = 1; | |
| } | |
|  | |
| message VolumeGrowResponse { | |
| } |