gitpod/components/ws-manager-bridge-api/cluster-service.proto
2023-02-10 15:30:15 +01:00

135 lines
3.1 KiB
Protocol Buffer

// Copyright (c) 2021 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.
syntax = "proto3";
package workspacemanagerbridge;
option go_package = "github.com/gitpod-io/gitpod/workspace-manager-bridge/api";
// ClusterService enables WorkspaceClusters to be dynamically managed.
service ClusterService {
// Register registers a new WorkspaceCluster.
rpc Register(RegisterRequest) returns (RegisterResponse) {}
// Update modififes properties of an already registered WorkspaceCluster.
rpc Update(UpdateRequest) returns (UpdateResponse) {}
// Deregister removes a WorkspaceCluster from available clusters.
rpc Deregister(DeregisterRequest) returns (DeregisterResponse) {}
// List returns the currently registered WorkspaceClusters.
rpc List(ListRequest) returns (ListResponse) {}
}
message RegisterRequest {
string name = 1;
string url = 2;
TlsConfig tls = 3;
RegistrationHints hints = 4;
repeated AdmissionConstraint admission_constraints = 5;
// the region this cluster is in, e.g. "europe-west1"
string region = 7;
// DEPRECATED
// repeated AdmissionPreference admission_preference = 6;
reserved 6;
}
message RegisterResponse {}
message TlsConfig {
string ca = 1;
string crt = 2;
string key = 3;
}
message RegistrationHints {
Preferability perfereability = 1;
bool cordoned = 2;
bool govern = 3;
}
message AdmissionConstraint {
message FeaturePreview {}
message HasPermission {
string permission = 1;
}
oneof constraint {
FeaturePreview has_feature_preview = 1;
HasPermission has_permission = 2;
// deprecated and removed: has_user_level = 3;
// deprecated and removed: bool has_more_resources = 4;
}
}
enum Preferability {
None = 0;
Prefer = 1;
DontSchedule = 2;
}
message ClusterStatus {
string name = 1;
string url = 2;
ClusterState state = 3;
int32 score = 4;
int32 max_score = 5;
bool governed = 6;
repeated AdmissionConstraint admission_constraint = 7;
bool static = 8;
string application_cluster = 10;
// DEPRECATED
// repeated AdmissionPreference admission_preference = 9;
reserved 9;
// The region in which this cluster runs
string region = 11;
}
enum ClusterState {
UNKNOWN = 0;
AVAILABLE = 1;
CORDONED = 2;
DRAINING = 3;
}
message UpdateRequest {
string name = 1;
oneof property {
int32 score = 2;
int32 max_score = 3;
bool cordoned = 4;
ModifyAdmissionConstraint admission_constraint = 5;
// DEPRECATED
// ModifyAdmissionPreference admission_preference = 6;
}
}
message ModifyAdmissionConstraint {
bool add = 1;
AdmissionConstraint constraint = 2;
}
message UpdateResponse {}
message DeregisterRequest {
// name is the name of the WorkspaceCluster to deregister
string name = 1;
// force causes the cluster to be deregistered even if there are
// intances still running on the cluster.
bool force = 2;
}
message DeregisterResponse {}
message ListRequest {}
message ListResponse {
repeated ClusterStatus status = 1;
}