mirror of https://github.com/dragonflyoss/api.git
380 lines
13 KiB
Protocol Buffer
380 lines
13 KiB
Protocol Buffer
/*
|
|
* Copyright 2022 The Dragonfly 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 manager;
|
|
|
|
import "pkg/apis/common/v1/common.proto";
|
|
import "google/protobuf/empty.proto";
|
|
import "validate/validate.proto";
|
|
|
|
option go_package = "d7y.io/api/v2/pkg/apis/manager/v1;manager";
|
|
|
|
// Request source type.
|
|
enum SourceType {
|
|
// Scheduler service.
|
|
SCHEDULER_SOURCE = 0;
|
|
// Peer service.
|
|
PEER_SOURCE = 1;
|
|
// SeedPeer service.
|
|
SEED_PEER_SOURCE = 2;
|
|
}
|
|
|
|
// SeedPeerCluster represents cluster of seed peer.
|
|
message SeedPeerCluster {
|
|
// Cluster id.
|
|
uint64 id = 1;
|
|
// Cluster name.
|
|
string name = 2;
|
|
// Cluster biography.
|
|
string bio = 3;
|
|
// Cluster configuration.
|
|
bytes config = 4;
|
|
}
|
|
|
|
// SeedPeer represents seed peer for network.
|
|
message SeedPeer {
|
|
// Seed peer id.
|
|
uint64 id = 1;
|
|
// Seed peer hostname.
|
|
string hostname = 2;
|
|
// Seed peer type.
|
|
string type = 3;
|
|
// Seed peer idc.
|
|
string idc = 5;
|
|
// Seed peer location.
|
|
string location = 7;
|
|
// Seed peer ip.
|
|
string ip = 8;
|
|
// Seed peer grpc port.
|
|
int32 port = 9;
|
|
// Seed peer download port.
|
|
int32 download_port = 10;
|
|
// Seed peer state.
|
|
string state = 11;
|
|
// ID of the cluster to which the seed peer belongs.
|
|
uint64 seed_peer_cluster_id = 12;
|
|
// Cluster to which the seed peer belongs.
|
|
SeedPeerCluster seed_peer_cluster = 13;
|
|
// Schedulers included in seed peer.
|
|
repeated Scheduler schedulers = 14;
|
|
// Seed peer object storage port.
|
|
int32 object_storage_port = 15;
|
|
}
|
|
|
|
// GetSeedPeerRequest represents request of GetSeedPeer.
|
|
message GetSeedPeerRequest {
|
|
// Request source type.
|
|
SourceType source_type = 1 [(validate.rules).enum.defined_only = true];
|
|
// Seed peer hostname.
|
|
string hostname = 2 [(validate.rules).string.hostname = true];
|
|
// ID of the cluster to which the seed peer belongs.
|
|
uint64 seed_peer_cluster_id = 3 [(validate.rules).uint64 = {gte: 1}];
|
|
// Seed peer ip.
|
|
string ip = 4 [(validate.rules).string = {ip: true, ignore_empty: true}];
|
|
}
|
|
|
|
// ListSeedPeersRequest represents request of ListSeedPeers.
|
|
message ListSeedPeersRequest {
|
|
// Request source type.
|
|
SourceType source_type = 1 [(validate.rules).enum.defined_only = true];
|
|
// Source service hostname.
|
|
string hostname = 2 [(validate.rules).string.hostname = true];
|
|
// Source service ip.
|
|
string ip = 3 [(validate.rules).string.ip = true];
|
|
// Dfdaemon version.
|
|
string version = 4 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
// Dfdaemon commit.
|
|
string commit = 5 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
}
|
|
|
|
// ListSeedPeersResponse represents response of ListSeedPeers.
|
|
message ListSeedPeersResponse {
|
|
// Seed peers to which the source service belongs.
|
|
repeated SeedPeer seed_peers = 1;
|
|
}
|
|
|
|
// UpdateSeedPeerRequest represents request of UpdateSeedPeer.
|
|
message UpdateSeedPeerRequest {
|
|
// Request source type.
|
|
SourceType source_type = 1 [(validate.rules).enum.defined_only = true];
|
|
// Seed peer hostname.
|
|
string hostname = 2 [(validate.rules).string.hostname = true];
|
|
// Seed peer type.
|
|
string type = 3 [(validate.rules).string = {in: ["super", "strong", "weak"]}];
|
|
// Seed peer idc.
|
|
string idc = 5 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
// Seed peer location.
|
|
string location = 7 [(validate.rules).string = {max_len: 1024, ignore_empty: true}];
|
|
// Seed peer ip.
|
|
string ip = 8 [(validate.rules).string = {ip: true}];
|
|
// Seed peer port.
|
|
int32 port = 9 [(validate.rules).int32 = {gte: 1024, lt: 65535}];
|
|
// Seed peer download port.
|
|
int32 download_port = 10 [(validate.rules).int32 = {gte: 1024, lt: 65535}];
|
|
// ID of the cluster to which the seed peer belongs.
|
|
uint64 seed_peer_cluster_id = 11 [(validate.rules).uint64 = {gte: 1}];
|
|
// Seed peer object storage port.
|
|
int32 object_storage_port = 12 [(validate.rules).int32 = {gte: 1024, lt: 65535, ignore_empty: true}];
|
|
}
|
|
|
|
// SeedPeerCluster represents cluster of scheduler.
|
|
message SchedulerCluster {
|
|
// Cluster id.
|
|
uint64 id = 1;
|
|
// Cluster name.
|
|
string name = 2;
|
|
// Cluster biography.
|
|
string bio = 3;
|
|
// Cluster config.
|
|
bytes config = 4;
|
|
// Cluster client config.
|
|
bytes client_config = 5;
|
|
// Cluster scopes.
|
|
bytes scopes = 6;
|
|
}
|
|
|
|
// Scheduler represents scheduler for network.
|
|
message Scheduler {
|
|
// Scheduler id.
|
|
uint64 id = 1;
|
|
// Scheduler hostname.
|
|
string hostname = 2;
|
|
// Deprecated: Do not use.
|
|
string vips = 3;
|
|
// Scheduler idc.
|
|
string idc = 4;
|
|
// Scheduler location.
|
|
string location = 5;
|
|
// Scheduler ip.
|
|
string ip = 7;
|
|
// Scheduler grpc port.
|
|
int32 port = 8;
|
|
// Scheduler state.
|
|
string state = 9;
|
|
// ID of the cluster to which the scheduler belongs.
|
|
uint64 scheduler_cluster_id = 10;
|
|
// Cluster to which the scheduler belongs.
|
|
SchedulerCluster scheduler_cluster = 11;
|
|
// Seed peers to which the scheduler belongs.
|
|
repeated SeedPeer seed_peers = 13;
|
|
// Feature flags of scheduler.
|
|
bytes features = 14;
|
|
}
|
|
|
|
// GetSchedulerRequest represents request of GetScheduler.
|
|
message GetSchedulerRequest {
|
|
// Request source type.
|
|
SourceType source_type = 1 [(validate.rules).enum.defined_only = true];
|
|
// Scheduler hostname.
|
|
string hostname = 2 [(validate.rules).string.hostname = true];
|
|
// ID of the cluster to which the scheduler belongs.
|
|
uint64 scheduler_cluster_id = 3 [(validate.rules).uint64 = {gte: 1}];
|
|
// Scheduler ip.
|
|
string ip = 4 [(validate.rules).string = {ip: true, ignore_empty: true}];
|
|
}
|
|
|
|
// UpdateSchedulerRequest represents request of UpdateScheduler.
|
|
message UpdateSchedulerRequest {
|
|
// Request source type.
|
|
SourceType source_type = 1 [(validate.rules).enum.defined_only = true];
|
|
// Scheduler hostname.
|
|
string hostname = 2 [(validate.rules).string.hostname = true];
|
|
// ID of the cluster to which the scheduler belongs.
|
|
uint64 scheduler_cluster_id = 3 [(validate.rules).uint64 = {gte: 1}];
|
|
// Deprecated: Do not use.
|
|
string vips = 4 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
// Scheduler idc.
|
|
string idc = 5 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
// Scheduler location.
|
|
string location = 6 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
// Deprecated: Remove net_config params.
|
|
bytes net_config = 7 [(validate.rules).bytes = {min_len: 1, ignore_empty: true}];
|
|
// Scheduler ip.
|
|
string ip = 8 [(validate.rules).string = {ip: true}];
|
|
// Scheduler port.
|
|
int32 port = 9 [(validate.rules).int32 = {gte: 1024, lt: 65535}];
|
|
}
|
|
|
|
// ListSchedulersRequest represents request of ListSchedulers.
|
|
message ListSchedulersRequest {
|
|
// Request source type.
|
|
SourceType source_type = 1 [(validate.rules).enum.defined_only = true];
|
|
// Source service hostname.
|
|
string hostname = 2 [(validate.rules).string.hostname = true];
|
|
// Source service ip.
|
|
string ip = 3 [(validate.rules).string.ip = true];
|
|
// Source service host information.
|
|
map<string, string> host_info = 5 [(validate.rules).map.ignore_empty = true];
|
|
// Dfdaemon version.
|
|
string version = 6 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
// Dfdaemon commit.
|
|
string commit = 7 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
}
|
|
|
|
// ListSchedulersResponse represents response of ListSchedulers.
|
|
message ListSchedulersResponse {
|
|
// Schedulers to which the source service belongs.
|
|
repeated Scheduler schedulers = 1;
|
|
}
|
|
|
|
// ObjectStorage represents config of object storage.
|
|
message ObjectStorage {
|
|
// name is object storage name of type, it can be s3, oss or obs.
|
|
string name = 1 [(validate.rules).string = {min_len: 1, max_len: 1024}];
|
|
// Region is storage region.
|
|
string region = 2 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
// Endpoint is datacenter endpoint.
|
|
string endpoint = 3 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
// AccessKey is access key ID.
|
|
string access_key = 4 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
// SecretKey is access key secret.
|
|
string secret_key = 5 [(validate.rules).string = {min_len: 1, max_len: 1024, ignore_empty: true}];
|
|
// S3ForcePathStyle sets force path style for s3, true by default.
|
|
// Set this to `true` to force the request to use path-style addressing,
|
|
// i.e., `http://s3.amazonaws.com/BUCKET/KEY`. By default, the S3 client
|
|
// will use virtual hosted bucket addressing when possible
|
|
// (`http://BUCKET.s3.amazonaws.com/KEY`).
|
|
// Refer to https://github.com/aws/aws-sdk-go/blob/main/aws/config.go#L118.
|
|
bool s3_force_path_style = 6;
|
|
// Scheme is the scheme of the http client.
|
|
string scheme = 7 [(validate.rules).string = {in: ["http", "https"]}];
|
|
}
|
|
|
|
// GetObjectStorageRequest represents request of GetObjectStorage.
|
|
message GetObjectStorageRequest {
|
|
// Request source type.
|
|
SourceType source_type = 1 [(validate.rules).enum.defined_only = true];
|
|
// Source service hostname.
|
|
string hostname = 2 [(validate.rules).string.hostname = true];
|
|
// Source service ip.
|
|
string ip = 3 [(validate.rules).string.ip = true];
|
|
}
|
|
|
|
// Bucket represents config of bucket.
|
|
message Bucket {
|
|
// Bucket name.
|
|
string name = 1 [(validate.rules).string = {min_len: 1, max_len: 1024}];
|
|
}
|
|
|
|
// ListSchedulersRequest represents request of ListBuckets.
|
|
message ListBucketsRequest {
|
|
// Request source type.
|
|
SourceType source_type = 1 [(validate.rules).enum.defined_only = true];
|
|
// Source service hostname.
|
|
string hostname = 2 [(validate.rules).string.hostname = true];
|
|
// Source service ip.
|
|
string ip = 3 [(validate.rules).string.ip = true];
|
|
}
|
|
|
|
// ListBucketsResponse represents response of ListBuckets.
|
|
message ListBucketsResponse {
|
|
// Bucket configs.
|
|
repeated Bucket buckets = 1;
|
|
}
|
|
|
|
// URLPriority represents config of url priority.
|
|
message URLPriority {
|
|
// URL regex.
|
|
string regex = 1 [(validate.rules).string = {min_len: 1}];
|
|
// URL priority value.
|
|
common.Priority value = 2;
|
|
}
|
|
|
|
// ApplicationPriority represents config of application priority.
|
|
message ApplicationPriority {
|
|
// Priority value.
|
|
common.Priority value = 1;
|
|
// URL priority.
|
|
repeated URLPriority urls = 2;
|
|
}
|
|
|
|
// Application represents config of application.
|
|
message Application {
|
|
// Application id.
|
|
uint64 id = 1 [(validate.rules).uint64 = {gte: 1}];
|
|
// Application name.
|
|
string name = 2 [(validate.rules).string = {min_len: 1, max_len: 1024}];
|
|
// Application url.
|
|
string url = 3 [(validate.rules).string.uri = true];
|
|
// Application biography.
|
|
string bio = 4;
|
|
// Application priority.
|
|
ApplicationPriority priority = 5 [(validate.rules).message.required = true];
|
|
}
|
|
|
|
// ListApplicationsRequest represents request of ListApplications.
|
|
message ListApplicationsRequest {
|
|
// Request source type.
|
|
SourceType source_type = 1 [(validate.rules).enum.defined_only = true];
|
|
// Source service hostname.
|
|
string hostname = 2 [(validate.rules).string.hostname = true];
|
|
// Source service ip.
|
|
string ip = 3 [(validate.rules).string.ip = true];
|
|
}
|
|
|
|
// ListApplicationsResponse represents response of ListApplications.
|
|
message ListApplicationsResponse {
|
|
// Application configs.
|
|
repeated Application applications = 1;
|
|
}
|
|
|
|
// KeepAliveRequest represents request of KeepAlive.
|
|
message KeepAliveRequest {
|
|
// Request source type.
|
|
SourceType source_type = 1 [(validate.rules).enum.defined_only = true];
|
|
// Source service hostname.
|
|
string hostname = 2 [(validate.rules).string.hostname = true];
|
|
// ID of the cluster to which the source service belongs.
|
|
uint64 cluster_id = 3 [(validate.rules).uint64 = {gte: 1}];
|
|
// Source service ip.
|
|
string ip = 4 [(validate.rules).string = {ip: true, ignore_empty: true}];
|
|
}
|
|
|
|
// Manager RPC Service.
|
|
service Manager {
|
|
// Get SeedPeer and SeedPeer cluster configuration.
|
|
rpc GetSeedPeer(GetSeedPeerRequest) returns(SeedPeer);
|
|
|
|
// List acitve schedulers configuration.
|
|
rpc ListSeedPeers(ListSeedPeersRequest)returns(ListSeedPeersResponse);
|
|
|
|
// Update SeedPeer configuration.
|
|
rpc UpdateSeedPeer(UpdateSeedPeerRequest) returns(SeedPeer);
|
|
|
|
// Get Scheduler and Scheduler cluster configuration.
|
|
rpc GetScheduler(GetSchedulerRequest)returns(Scheduler);
|
|
|
|
// Update scheduler configuration.
|
|
rpc UpdateScheduler(UpdateSchedulerRequest) returns(Scheduler);
|
|
|
|
// List acitve schedulers configuration.
|
|
rpc ListSchedulers(ListSchedulersRequest)returns(ListSchedulersResponse);
|
|
|
|
// Get ObjectStorage configuration.
|
|
rpc GetObjectStorage(GetObjectStorageRequest) returns(ObjectStorage);
|
|
|
|
// List buckets configuration.
|
|
rpc ListBuckets(ListBucketsRequest)returns(ListBucketsResponse);
|
|
|
|
// List applications configuration.
|
|
rpc ListApplications(ListApplicationsRequest)returns(ListApplicationsResponse);
|
|
|
|
// KeepAlive with manager.
|
|
rpc KeepAlive(stream KeepAliveRequest)returns(google.protobuf.Empty);
|
|
}
|