From 2886553f003927e928f8b45bdd0a16b093441d8f Mon Sep 17 00:00:00 2001 From: Jakub Novak Date: Tue, 17 Mar 2026 11:28:49 +0100 Subject: [PATCH 1/6] feat(orch): add ScallignDown status --- packages/api/internal/api/api.gen.go | 9 ++-- .../orchestrator/nodemanager/client.go | 7 +-- .../orchestrator/nodemanager/status.go | 7 +-- packages/orchestrator/info.proto | 1 + .../internal/healthcheck/healthcheck.go | 2 +- packages/orchestrator/main.go | 2 +- .../pkg/grpc/orchestrator-info/info.pb.go | 54 ++++++++++--------- packages/shared/pkg/http/edge/generated.go | 7 +-- spec/openapi-edge.yml | 1 + spec/openapi.yml | 2 + tests/integration/internal/api/generated.go | 9 ++-- 11 files changed, 57 insertions(+), 44 deletions(-) diff --git a/packages/api/internal/api/api.gen.go b/packages/api/internal/api/api.gen.go index 0f02092ca7..018de8fd0a 100644 --- a/packages/api/internal/api/api.gen.go +++ b/packages/api/internal/api/api.gen.go @@ -69,10 +69,11 @@ const ( // Defines values for NodeStatus. const ( - NodeStatusConnecting NodeStatus = "connecting" - NodeStatusDraining NodeStatus = "draining" - NodeStatusReady NodeStatus = "ready" - NodeStatusUnhealthy NodeStatus = "unhealthy" + NodeStatusConnecting NodeStatus = "connecting" + NodeStatusDraining NodeStatus = "draining" + NodeStatusReady NodeStatus = "ready" + NodeStatusScalingDown NodeStatus = "scaling_down" + NodeStatusUnhealthy NodeStatus = "unhealthy" ) // Defines values for SandboxState. diff --git a/packages/api/internal/orchestrator/nodemanager/client.go b/packages/api/internal/orchestrator/nodemanager/client.go index 7524a32931..20fc12c7e8 100644 --- a/packages/api/internal/orchestrator/nodemanager/client.go +++ b/packages/api/internal/orchestrator/nodemanager/client.go @@ -17,9 +17,10 @@ import ( ) var OrchestratorToApiNodeStateMapper = map[orchestratorinfo.ServiceInfoStatus]api.NodeStatus{ - orchestratorinfo.ServiceInfoStatus_Healthy: api.NodeStatusReady, - orchestratorinfo.ServiceInfoStatus_Draining: api.NodeStatusDraining, - orchestratorinfo.ServiceInfoStatus_Unhealthy: api.NodeStatusUnhealthy, + orchestratorinfo.ServiceInfoStatus_Healthy: api.NodeStatusReady, + orchestratorinfo.ServiceInfoStatus_Draining: api.NodeStatusDraining, + orchestratorinfo.ServiceInfoStatus_Unhealthy: api.NodeStatusUnhealthy, + orchestratorinfo.ServiceInfoStatus_ScalingDown: api.NodeStatusScalingDown, } func NewClient(tracerProvider trace.TracerProvider, meterProvider metric.MeterProvider, host string) (*clusters.GRPCClient, error) { diff --git a/packages/api/internal/orchestrator/nodemanager/status.go b/packages/api/internal/orchestrator/nodemanager/status.go index 8c45c0f66a..a12362740a 100644 --- a/packages/api/internal/orchestrator/nodemanager/status.go +++ b/packages/api/internal/orchestrator/nodemanager/status.go @@ -13,9 +13,10 @@ import ( ) var ApiNodeToOrchestratorStateMapper = map[api.NodeStatus]orchestratorinfo.ServiceInfoStatus{ - api.NodeStatusReady: orchestratorinfo.ServiceInfoStatus_Healthy, - api.NodeStatusDraining: orchestratorinfo.ServiceInfoStatus_Draining, - api.NodeStatusUnhealthy: orchestratorinfo.ServiceInfoStatus_Unhealthy, + api.NodeStatusReady: orchestratorinfo.ServiceInfoStatus_Healthy, + api.NodeStatusDraining: orchestratorinfo.ServiceInfoStatus_Draining, + api.NodeStatusUnhealthy: orchestratorinfo.ServiceInfoStatus_Unhealthy, + api.NodeStatusScalingDown: orchestratorinfo.ServiceInfoStatus_ScalingDown, } func (n *Node) Status() api.NodeStatus { diff --git a/packages/orchestrator/info.proto b/packages/orchestrator/info.proto index 63f1ecfb82..9c4df1fb42 100644 --- a/packages/orchestrator/info.proto +++ b/packages/orchestrator/info.proto @@ -10,6 +10,7 @@ enum ServiceInfoStatus { Healthy = 0; Draining = 1; Unhealthy = 2; + ScalingDown = 3; } enum ServiceInfoRole { diff --git a/packages/orchestrator/internal/healthcheck/healthcheck.go b/packages/orchestrator/internal/healthcheck/healthcheck.go index 3df4b93c86..9715859477 100644 --- a/packages/orchestrator/internal/healthcheck/healthcheck.go +++ b/packages/orchestrator/internal/healthcheck/healthcheck.go @@ -39,7 +39,7 @@ func (h *Healthcheck) getStatus() e2bHealth.Status { switch h.info.GetStatus() { case e2borchestratorinfo.ServiceInfoStatus_Healthy: return e2bHealth.Healthy - case e2borchestratorinfo.ServiceInfoStatus_Draining: + case e2borchestratorinfo.ServiceInfoStatus_Draining, e2borchestratorinfo.ServiceInfoStatus_ScalingDown: return e2bHealth.Draining } diff --git a/packages/orchestrator/main.go b/packages/orchestrator/main.go index 9582738807..3458f0e7e6 100644 --- a/packages/orchestrator/main.go +++ b/packages/orchestrator/main.go @@ -673,7 +673,7 @@ func run(config cfg.Config) (success bool) { // Mark service draining if not already. // If service stats was previously changed via API, we don't want to override it. logger.L().Info(ctx, "Starting drain phase", zap.Int("sandbox_count", sandboxes.Count())) - if serviceInfo.GetStatus() == orchestratorinfo.ServiceInfoStatus_Healthy { + if serviceInfo.GetStatus() == orchestratorinfo.ServiceInfoStatus_Healthy || serviceInfo.GetStatus() == orchestratorinfo.ServiceInfoStatus_ScalingDown { serviceInfo.SetStatus(ctx, orchestratorinfo.ServiceInfoStatus_Draining) // Wait for draining state to propagate to all consumers diff --git a/packages/shared/pkg/grpc/orchestrator-info/info.pb.go b/packages/shared/pkg/grpc/orchestrator-info/info.pb.go index 72af47eef7..6ca9a3b4ee 100644 --- a/packages/shared/pkg/grpc/orchestrator-info/info.pb.go +++ b/packages/shared/pkg/grpc/orchestrator-info/info.pb.go @@ -26,9 +26,10 @@ const ( type ServiceInfoStatus int32 const ( - ServiceInfoStatus_Healthy ServiceInfoStatus = 0 - ServiceInfoStatus_Draining ServiceInfoStatus = 1 - ServiceInfoStatus_Unhealthy ServiceInfoStatus = 2 + ServiceInfoStatus_Healthy ServiceInfoStatus = 0 + ServiceInfoStatus_Draining ServiceInfoStatus = 1 + ServiceInfoStatus_Unhealthy ServiceInfoStatus = 2 + ServiceInfoStatus_ScalingDown ServiceInfoStatus = 3 ) // Enum value maps for ServiceInfoStatus. @@ -37,11 +38,13 @@ var ( 0: "Healthy", 1: "Draining", 2: "Unhealthy", + 3: "ScalingDown", } ServiceInfoStatus_value = map[string]int32{ - "Healthy": 0, - "Draining": 1, - "Unhealthy": 2, + "Healthy": 0, + "Draining": 1, + "Unhealthy": 2, + "ScalingDown": 3, } ) @@ -641,28 +644,29 @@ var file_info_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x3d, 0x0a, 0x11, 0x53, 0x65, 0x72, + 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x4e, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x6e, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x10, 0x02, 0x2a, 0x38, 0x0a, 0x0f, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x10, 0x00, - 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x10, 0x01, 0x32, 0x98, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4c, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x2f, 0x5a, - 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x32, 0x62, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x69, 0x6e, 0x66, 0x72, - 0x61, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6c, + 0x69, 0x6e, 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x10, 0x03, 0x2a, 0x38, 0x0a, 0x0f, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x13, 0x0a, 0x0f, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x10, + 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x10, 0x01, 0x32, 0x98, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x4c, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x2f, + 0x5a, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x32, 0x62, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x69, 0x6e, 0x66, + 0x72, 0x61, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/packages/shared/pkg/http/edge/generated.go b/packages/shared/pkg/http/edge/generated.go index 17da390630..858105fc63 100644 --- a/packages/shared/pkg/http/edge/generated.go +++ b/packages/shared/pkg/http/edge/generated.go @@ -22,9 +22,10 @@ const ( // Defines values for ClusterNodeStatus. const ( - Draining ClusterNodeStatus = "draining" - Healthy ClusterNodeStatus = "healthy" - Unhealthy ClusterNodeStatus = "unhealthy" + Draining ClusterNodeStatus = "draining" + Healthy ClusterNodeStatus = "healthy" + ScalingDown ClusterNodeStatus = "scaling_down" + Unhealthy ClusterNodeStatus = "unhealthy" ) // Defines values for ClusterOrchestratorRole. diff --git a/spec/openapi-edge.yml b/spec/openapi-edge.yml index d21db2d0c8..385864ab75 100644 --- a/spec/openapi-edge.yml +++ b/spec/openapi-edge.yml @@ -78,6 +78,7 @@ components: - healthy - draining - unhealthy + - scaling_down ClusterOrchestratorRole: type: string diff --git a/spec/openapi.yml b/spec/openapi.yml index fb9cc11617..3f589404f9 100644 --- a/spec/openapi.yml +++ b/spec/openapi.yml @@ -1300,11 +1300,13 @@ components: - draining - connecting - unhealthy + - scaling_down x-enum-varnames: - NodeStatusReady - NodeStatusDraining - NodeStatusConnecting - NodeStatusUnhealthy + - NodeStatusScalingDown NodeStatusChange: required: diff --git a/tests/integration/internal/api/generated.go b/tests/integration/internal/api/generated.go index e1b1f028aa..152d56bc16 100644 --- a/tests/integration/internal/api/generated.go +++ b/tests/integration/internal/api/generated.go @@ -64,10 +64,11 @@ const ( // Defines values for NodeStatus. const ( - NodeStatusConnecting NodeStatus = "connecting" - NodeStatusDraining NodeStatus = "draining" - NodeStatusReady NodeStatus = "ready" - NodeStatusUnhealthy NodeStatus = "unhealthy" + NodeStatusConnecting NodeStatus = "connecting" + NodeStatusDraining NodeStatus = "draining" + NodeStatusReady NodeStatus = "ready" + NodeStatusScalingDown NodeStatus = "scaling_down" + NodeStatusUnhealthy NodeStatus = "unhealthy" ) // Defines values for SandboxState. From 761c97b46d8eeb7c02be4b2fe3a60609bd4e1381 Mon Sep 17 00:00:00 2001 From: Jakub Novak Date: Tue, 17 Mar 2026 11:32:04 +0100 Subject: [PATCH 2/6] chore: add description --- packages/api/internal/api/api.gen.go | 16 ++++++++++++---- packages/orchestrator/info.proto | 2 ++ .../pkg/grpc/envd/filesystem/filesystem.pb.go | 1 + .../shared/pkg/grpc/envd/process/process.pb.go | 5 +++++ .../shared/pkg/grpc/orchestrator-info/info.pb.go | 8 +++++--- spec/openapi.yml | 5 ++++- tests/integration/internal/api/generated.go | 16 ++++++++++++---- 7 files changed, 41 insertions(+), 12 deletions(-) diff --git a/packages/api/internal/api/api.gen.go b/packages/api/internal/api/api.gen.go index 018de8fd0a..af4ca81ad5 100644 --- a/packages/api/internal/api/api.gen.go +++ b/packages/api/internal/api/api.gen.go @@ -472,7 +472,9 @@ type Node struct { // ServiceInstanceID Service instance identifier of the node ServiceInstanceID string `json:"serviceInstanceID"` - // Status Status of the node + // Status Status of the node. + // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. + // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. Status NodeStatus `json:"status"` // Version Version of the orchestrator @@ -509,7 +511,9 @@ type NodeDetail struct { // ServiceInstanceID Service instance identifier of the node ServiceInstanceID string `json:"serviceInstanceID"` - // Status Status of the node + // Status Status of the node. + // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. + // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. Status NodeStatus `json:"status"` // Version Version of the orchestrator @@ -540,7 +544,9 @@ type NodeMetrics struct { MemoryUsedBytes uint64 `json:"memoryUsedBytes"` } -// NodeStatus Status of the node +// NodeStatus Status of the node. +// - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. +// - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. type NodeStatus string // NodeStatusChange defines model for NodeStatusChange. @@ -548,7 +554,9 @@ type NodeStatusChange struct { // ClusterID Identifier of the cluster ClusterID *openapi_types.UUID `json:"clusterID,omitempty"` - // Status Status of the node + // Status Status of the node. + // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. + // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. Status NodeStatus `json:"status"` } diff --git a/packages/orchestrator/info.proto b/packages/orchestrator/info.proto index 9c4df1fb42..50a5da004b 100644 --- a/packages/orchestrator/info.proto +++ b/packages/orchestrator/info.proto @@ -8,8 +8,10 @@ option go_package = "https://github.com/e2b-dev/infra/orchestrator"; // needs to be different from the enumeration in the template manager enum ServiceInfoStatus { Healthy = 0; + // Draining means the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. Draining = 1; Unhealthy = 2; + // ScalingDown means the node is a candidate for removal but can be interrupted. If interrupted, it returns to Healthy and continues serving traffic. ScalingDown = 3; } diff --git a/packages/shared/pkg/grpc/envd/filesystem/filesystem.pb.go b/packages/shared/pkg/grpc/envd/filesystem/filesystem.pb.go index 8fd4fe1bba..9aa848d65c 100644 --- a/packages/shared/pkg/grpc/envd/filesystem/filesystem.pb.go +++ b/packages/shared/pkg/grpc/envd/filesystem/filesystem.pb.go @@ -844,6 +844,7 @@ type WatchDirResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Event: + // // *WatchDirResponse_Start // *WatchDirResponse_Filesystem // *WatchDirResponse_Keepalive diff --git a/packages/shared/pkg/grpc/envd/process/process.pb.go b/packages/shared/pkg/grpc/envd/process/process.pb.go index bfc4a603dc..b73d25c958 100644 --- a/packages/shared/pkg/grpc/envd/process/process.pb.go +++ b/packages/shared/pkg/grpc/envd/process/process.pb.go @@ -507,6 +507,7 @@ type ProcessEvent struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Event: + // // *ProcessEvent_Start // *ProcessEvent_Data // *ProcessEvent_End @@ -802,6 +803,7 @@ type ProcessInput struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Input: + // // *ProcessInput_Stdin // *ProcessInput_Pty Input isProcessInput_Input `protobuf_oneof:"input"` @@ -882,6 +884,7 @@ type StreamInputRequest struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Event: + // // *StreamInputRequest_Start // *StreamInputRequest_Data // *StreamInputRequest_Keepalive @@ -1239,6 +1242,7 @@ type ProcessSelector struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Selector: + // // *ProcessSelector_Pid // *ProcessSelector_Tag Selector isProcessSelector_Selector `protobuf_oneof:"selector"` @@ -1421,6 +1425,7 @@ type ProcessEvent_DataEvent struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Output: + // // *ProcessEvent_DataEvent_Stdout // *ProcessEvent_DataEvent_Stderr // *ProcessEvent_DataEvent_Pty diff --git a/packages/shared/pkg/grpc/orchestrator-info/info.pb.go b/packages/shared/pkg/grpc/orchestrator-info/info.pb.go index 6ca9a3b4ee..0de04e7ef2 100644 --- a/packages/shared/pkg/grpc/orchestrator-info/info.pb.go +++ b/packages/shared/pkg/grpc/orchestrator-info/info.pb.go @@ -26,9 +26,11 @@ const ( type ServiceInfoStatus int32 const ( - ServiceInfoStatus_Healthy ServiceInfoStatus = 0 - ServiceInfoStatus_Draining ServiceInfoStatus = 1 - ServiceInfoStatus_Unhealthy ServiceInfoStatus = 2 + ServiceInfoStatus_Healthy ServiceInfoStatus = 0 + // Draining means the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. + ServiceInfoStatus_Draining ServiceInfoStatus = 1 + ServiceInfoStatus_Unhealthy ServiceInfoStatus = 2 + // ScalingDown means the node is a candidate for removal but can be interrupted. If interrupted, it returns to Healthy and continues serving traffic. ServiceInfoStatus_ScalingDown ServiceInfoStatus = 3 ) diff --git a/spec/openapi.yml b/spec/openapi.yml index 3f589404f9..6d07856d2e 100644 --- a/spec/openapi.yml +++ b/spec/openapi.yml @@ -1294,7 +1294,10 @@ components: NodeStatus: type: string - description: Status of the node + description: | + Status of the node. + - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. + - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. enum: - ready - draining diff --git a/tests/integration/internal/api/generated.go b/tests/integration/internal/api/generated.go index 152d56bc16..fd3177e44c 100644 --- a/tests/integration/internal/api/generated.go +++ b/tests/integration/internal/api/generated.go @@ -467,7 +467,9 @@ type Node struct { // ServiceInstanceID Service instance identifier of the node ServiceInstanceID string `json:"serviceInstanceID"` - // Status Status of the node + // Status Status of the node. + // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. + // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. Status NodeStatus `json:"status"` // Version Version of the orchestrator @@ -504,7 +506,9 @@ type NodeDetail struct { // ServiceInstanceID Service instance identifier of the node ServiceInstanceID string `json:"serviceInstanceID"` - // Status Status of the node + // Status Status of the node. + // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. + // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. Status NodeStatus `json:"status"` // Version Version of the orchestrator @@ -535,7 +539,9 @@ type NodeMetrics struct { MemoryUsedBytes uint64 `json:"memoryUsedBytes"` } -// NodeStatus Status of the node +// NodeStatus Status of the node. +// - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. +// - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. type NodeStatus string // NodeStatusChange defines model for NodeStatusChange. @@ -543,7 +549,9 @@ type NodeStatusChange struct { // ClusterID Identifier of the cluster ClusterID *openapi_types.UUID `json:"clusterID,omitempty"` - // Status Status of the node + // Status Status of the node. + // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. + // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. Status NodeStatus `json:"status"` } From 417ee87712ee64f48406eddfb56d929cefa15f25 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 17 Mar 2026 10:33:50 +0000 Subject: [PATCH 3/6] chore: auto-commit generated changes --- packages/api/internal/orchestrator/nodemanager/client.go | 6 +++--- packages/api/internal/orchestrator/nodemanager/status.go | 6 +++--- packages/shared/pkg/grpc/envd/filesystem/filesystem.pb.go | 1 - packages/shared/pkg/grpc/envd/process/process.pb.go | 5 ----- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/api/internal/orchestrator/nodemanager/client.go b/packages/api/internal/orchestrator/nodemanager/client.go index 20fc12c7e8..b6f1368129 100644 --- a/packages/api/internal/orchestrator/nodemanager/client.go +++ b/packages/api/internal/orchestrator/nodemanager/client.go @@ -17,9 +17,9 @@ import ( ) var OrchestratorToApiNodeStateMapper = map[orchestratorinfo.ServiceInfoStatus]api.NodeStatus{ - orchestratorinfo.ServiceInfoStatus_Healthy: api.NodeStatusReady, - orchestratorinfo.ServiceInfoStatus_Draining: api.NodeStatusDraining, - orchestratorinfo.ServiceInfoStatus_Unhealthy: api.NodeStatusUnhealthy, + orchestratorinfo.ServiceInfoStatus_Healthy: api.NodeStatusReady, + orchestratorinfo.ServiceInfoStatus_Draining: api.NodeStatusDraining, + orchestratorinfo.ServiceInfoStatus_Unhealthy: api.NodeStatusUnhealthy, orchestratorinfo.ServiceInfoStatus_ScalingDown: api.NodeStatusScalingDown, } diff --git a/packages/api/internal/orchestrator/nodemanager/status.go b/packages/api/internal/orchestrator/nodemanager/status.go index a12362740a..cd8e2392f4 100644 --- a/packages/api/internal/orchestrator/nodemanager/status.go +++ b/packages/api/internal/orchestrator/nodemanager/status.go @@ -13,9 +13,9 @@ import ( ) var ApiNodeToOrchestratorStateMapper = map[api.NodeStatus]orchestratorinfo.ServiceInfoStatus{ - api.NodeStatusReady: orchestratorinfo.ServiceInfoStatus_Healthy, - api.NodeStatusDraining: orchestratorinfo.ServiceInfoStatus_Draining, - api.NodeStatusUnhealthy: orchestratorinfo.ServiceInfoStatus_Unhealthy, + api.NodeStatusReady: orchestratorinfo.ServiceInfoStatus_Healthy, + api.NodeStatusDraining: orchestratorinfo.ServiceInfoStatus_Draining, + api.NodeStatusUnhealthy: orchestratorinfo.ServiceInfoStatus_Unhealthy, api.NodeStatusScalingDown: orchestratorinfo.ServiceInfoStatus_ScalingDown, } diff --git a/packages/shared/pkg/grpc/envd/filesystem/filesystem.pb.go b/packages/shared/pkg/grpc/envd/filesystem/filesystem.pb.go index 9aa848d65c..8fd4fe1bba 100644 --- a/packages/shared/pkg/grpc/envd/filesystem/filesystem.pb.go +++ b/packages/shared/pkg/grpc/envd/filesystem/filesystem.pb.go @@ -844,7 +844,6 @@ type WatchDirResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Event: - // // *WatchDirResponse_Start // *WatchDirResponse_Filesystem // *WatchDirResponse_Keepalive diff --git a/packages/shared/pkg/grpc/envd/process/process.pb.go b/packages/shared/pkg/grpc/envd/process/process.pb.go index b73d25c958..bfc4a603dc 100644 --- a/packages/shared/pkg/grpc/envd/process/process.pb.go +++ b/packages/shared/pkg/grpc/envd/process/process.pb.go @@ -507,7 +507,6 @@ type ProcessEvent struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Event: - // // *ProcessEvent_Start // *ProcessEvent_Data // *ProcessEvent_End @@ -803,7 +802,6 @@ type ProcessInput struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Input: - // // *ProcessInput_Stdin // *ProcessInput_Pty Input isProcessInput_Input `protobuf_oneof:"input"` @@ -884,7 +882,6 @@ type StreamInputRequest struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Event: - // // *StreamInputRequest_Start // *StreamInputRequest_Data // *StreamInputRequest_Keepalive @@ -1242,7 +1239,6 @@ type ProcessSelector struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Selector: - // // *ProcessSelector_Pid // *ProcessSelector_Tag Selector isProcessSelector_Selector `protobuf_oneof:"selector"` @@ -1425,7 +1421,6 @@ type ProcessEvent_DataEvent struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Output: - // // *ProcessEvent_DataEvent_Stdout // *ProcessEvent_DataEvent_Stderr // *ProcessEvent_DataEvent_Pty From f1bc9dea06443214becef05dcc1b1148b86dedc0 Mon Sep 17 00:00:00 2001 From: Jakub Novak Date: Tue, 17 Mar 2026 11:40:44 +0100 Subject: [PATCH 4/6] chore: fix TOCTOU race --- packages/orchestrator/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/orchestrator/main.go b/packages/orchestrator/main.go index 3458f0e7e6..b2427e7137 100644 --- a/packages/orchestrator/main.go +++ b/packages/orchestrator/main.go @@ -673,7 +673,7 @@ func run(config cfg.Config) (success bool) { // Mark service draining if not already. // If service stats was previously changed via API, we don't want to override it. logger.L().Info(ctx, "Starting drain phase", zap.Int("sandbox_count", sandboxes.Count())) - if serviceInfo.GetStatus() == orchestratorinfo.ServiceInfoStatus_Healthy || serviceInfo.GetStatus() == orchestratorinfo.ServiceInfoStatus_ScalingDown { + if status := serviceInfo.GetStatus(); status == orchestratorinfo.ServiceInfoStatus_Healthy || status == orchestratorinfo.ServiceInfoStatus_ScalingDown { serviceInfo.SetStatus(ctx, orchestratorinfo.ServiceInfoStatus_Draining) // Wait for draining state to propagate to all consumers From 47e62131e14b148e0da90b936097444d96217ded Mon Sep 17 00:00:00 2001 From: Jakub Novak Date: Thu, 19 Mar 2026 11:50:50 +0100 Subject: [PATCH 5/6] chore: regenerate spec --- packages/api/internal/api/api.gen.go | 314 ++++++++++++++------------- 1 file changed, 158 insertions(+), 156 deletions(-) diff --git a/packages/api/internal/api/api.gen.go b/packages/api/internal/api/api.gen.go index af4ca81ad5..a6f8491158 100644 --- a/packages/api/internal/api/api.gen.go +++ b/packages/api/internal/api/api.gen.go @@ -12089,162 +12089,164 @@ func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the content of the embedded swagger specification file From 334d097c13f37426760ce9917e181b1d4a51169b Mon Sep 17 00:00:00 2001 From: Jakub Novak Date: Thu, 19 Mar 2026 12:18:33 +0100 Subject: [PATCH 6/6] chore: rename scalling down to standy --- packages/api/internal/api/api.gen.go | 224 +++++++++--------- .../orchestrator/nodemanager/client.go | 8 +- .../orchestrator/nodemanager/status.go | 8 +- packages/orchestrator/info.proto | 4 +- .../internal/healthcheck/healthcheck.go | 2 +- packages/orchestrator/main.go | 2 +- .../pkg/grpc/orchestrator-info/info.pb.go | 54 ++--- packages/shared/pkg/http/edge/generated.go | 8 +- spec/openapi-edge.yml | 2 +- spec/openapi.yml | 6 +- tests/integration/internal/api/generated.go | 18 +- 11 files changed, 168 insertions(+), 168 deletions(-) diff --git a/packages/api/internal/api/api.gen.go b/packages/api/internal/api/api.gen.go index a6f8491158..631d59f362 100644 --- a/packages/api/internal/api/api.gen.go +++ b/packages/api/internal/api/api.gen.go @@ -69,11 +69,11 @@ const ( // Defines values for NodeStatus. const ( - NodeStatusConnecting NodeStatus = "connecting" - NodeStatusDraining NodeStatus = "draining" - NodeStatusReady NodeStatus = "ready" - NodeStatusScalingDown NodeStatus = "scaling_down" - NodeStatusUnhealthy NodeStatus = "unhealthy" + NodeStatusConnecting NodeStatus = "connecting" + NodeStatusDraining NodeStatus = "draining" + NodeStatusReady NodeStatus = "ready" + NodeStatusStandby NodeStatus = "standby" + NodeStatusUnhealthy NodeStatus = "unhealthy" ) // Defines values for SandboxState. @@ -474,7 +474,7 @@ type Node struct { // Status Status of the node. // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. - // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. + // - standby: the node is not actively used, but it can return to ready and continue serving traffic. Status NodeStatus `json:"status"` // Version Version of the orchestrator @@ -513,7 +513,7 @@ type NodeDetail struct { // Status Status of the node. // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. - // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. + // - standby: the node is not actively used, but it can return to ready and continue serving traffic. Status NodeStatus `json:"status"` // Version Version of the orchestrator @@ -546,7 +546,7 @@ type NodeMetrics struct { // NodeStatus Status of the node. // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. -// - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. +// - standby: the node is not actively used, but it can return to ready and continue serving traffic. type NodeStatus string // NodeStatusChange defines model for NodeStatusChange. @@ -556,7 +556,7 @@ type NodeStatusChange struct { // Status Status of the node. // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. - // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. + // - standby: the node is not actively used, but it can return to ready and continue serving traffic. Status NodeStatus `json:"status"` } @@ -12144,109 +12144,109 @@ var swaggerSpec = []string{ "eSPvqa7fDfEehxCpUZ5JGXGHBpXYHhZXpErxIrEIGh3O8X6anRPmE+fekgiXg2cQXZuqdiqkuM/YAeW3", "3BU/JNSrBU1LFYWL/TmE7exGRThP38hhO4zJGTcs8X/VGfsTKwZbhViq13VzHNAna2zjIl05GqjE7A2c", "WSJtHUCHl8FCkKGd2ZOXueSqOxMybsu98dd4BwUMUymBD/KfEeVokmQxePsnBPF5JlCQ3MVjdCKUzy5O", - "BBhvUoFicmeJcxwHqgUXSYoSKXMx+PgoB0XTaskICpJYAcF9HNJ49k3OUgYEIx/HAQ3ghE4YYiRKFjhE", - "k0zILxI+MB2xLBUkGKOTqf03mI6U3V8/A8bBEoD0k1jQOCMcgWyNZ0gwPJ1Sf/y1HISAA3lJNVgC0Qix", - "2uqPLJ4THIr5Ep7eFovo6UIo6HWhJyp+OS6mLH48sicvfr62wCh+vVQAHQM8Je44muN4tr5La2fY6/DT", - "tLKL9AByFcoG1uKFL5vy2o3yazLmPa0VSCLrxQUlBEmEqUNXeo+5FAzyo/XEMzcaq00KkgG0GDoJe0Ux", - "k3hRfXxQQYj9qACkPhx18SIoWxnXG5OwriCBbbriNQ1asQk/FxZUiUpNr+IQQAuKUcqS++W4m4IruOmr", - "fvYmO3qdFTKR7DBo4nANgZAIipNsXNNvSSwXEgy263/Q/aqLNeO5jI+Ng/TyY5hV6hnQNMQz9yLRsRpM", - "uWTcThQNS5NN4jU86gmk3haisZ6hWH0N9XoN9XqOoV4aytNk5n78rMI0ylEncF0JaUxq5wz86BxHfml7", - "Qf1Er5wB4DIeGt6UTynRluumJylNNuniaNz6u/SnwirAb78h19grY5p3Px8vmwtYBjFTgQqmq0mvIduy", - "7aV4mLhe0Z2uY85OEQBzj2w8VHD2ef9CZ3ZyYq/r2b0eSWGQ5xhdG/Zcy7FWcGYdaf2edpkenYdVaRJn", - "HN2ZHXnWV6Q1G1I/1U2o/d5u+Wl2zUlw7jc84W8zmE7DxE4jYuLSlNQHG1yTfTKAZ3qNbwmbrZOyo/uB", - "L7z8a7RHtto7W0FtsaK2DuqG8qzDbto85M8ZTTkgxtFSQCymLmhhkdriI5tZLdlQjrpyh/T94Uo5YZzH", - "0IIEKCBc6LyG2j0wY6Dya3sq+oD9uUaZtthidHRyfIEmYeLfqjfF6Kv3n2P4b/ft/lfvlxHCaIIZQSfn", - "CAcBDFhpCK0ShrC5N0EIsWlE7nGUhmTsJ9FXb4S+ev9rXPrplzE61AsweVFweIeXHAl8S5BkPhIQScpk", - "QRgKSEyLpuNBznFA1Hk2Cal/pXBSOjVc3H2pIhsRLUlhdH1xyq2A9uIuqDKkgJAtv6dzX9R1tGQzbfVy", - "CypxiemCFsRN6eOCEMrAHycC8SxNE6lEQxc5NWJZOBSJEea3+hn/PxPuAN2gbJ5wAQ/a9L0DbrUTUtw9", - "IXxQI1QHJnPn+dZka7k0F6hBjzW0oxti0CAfg+uFhuMW85hot/qTPex6U3eOixd1TX3dyQlgvBazFOF/", - "UjFvzFqQm5faFJR+d3GpgjzUvAb5+CD4YpzyeSLcLzC0T6aWASELQ83QhrR6GDv7mB9mAfiQCI5Uazj5", - "pZoj8EwLJflxh4fZbDda7phRDhb7vwzaCKZjT2NDG7BzSEE2RtdyP+dQ74KdTtkasBKqd5ijlCULGpCg", - "dTFaqEnBLOaE3VFO0BSHIUcT7N+ajFMM3xXwnBzrEfHEf7P/Nh9i3MmDFiZGmnwuVrwiOHKcb5Ap2WGv", - "0mlTjHtGrtOZRYgfGwFeHeLPOZGLz7sb04deWWVISyz3yUbihqbIwNttmnGNULOM6Jy9eptrZNmrvtGY", - "fc310+j0/OlT9WjucaaLWtMLLD+JdZqzS/ssqb9LKiJwii5WNEJlu/e4VtpxmxdOhcCZr1PZEyERubox", - "9Lpuvl6Nuq5GDj5w0MhwHkiBmswikfZbVXK8yJ/NMjPujlztJz107w7R4dpLCjYFv3aRuR1sZgN0xD2o", - "po9IG6pThHZaa4BSZa+AlHOys+i30wZkW5Ui18qJq/OAys2tnhq2uRcnRbrNLhlqSGBl6FzVkdhxThYu", - "nxL2Cu/JEx2Wq6eHWNWlJ0l7meK7eDCygCked66u4E5suE98sq8SOZh/q2rfCk61oPxbMOymkILJoUs/", - "NdcCjlR7edEHa4JlXZgsHbqjpbhySZdVJUGVMi0GwpWckK79kKXBCrtOMZLquqLbxnY5FnVVengWNTFt", - "gWEvw97i1b1Sok9JbJf34yg/QAz3loWiffjA+dHsGtke662LJ9oIpVdjrx8k/+MTg/e5Rmz0VFEH5CpH", - "yvZPgCmNKZ8PW5Xp03tZq4h6/hilobcoKhb1eDlUiJ785UijXHHIptpO+EhDcp2GCXbsiZQR7nyyYAuD", - "KQ1VuHeoQrR1J/OEH96xOPd/xhwa+zULrSgqGLuwmmcAJ+Q/78STgb22YLcNcYXtX7ca9E3pDnCs6lnu", - "zN/ew7ldADBILWF5LvtOAEvJ7x+70bZxUjj2lTvEoATjaTLjjwoz2CQrNIUYlFbQmGD50TGfq8RmJv4t", - "YXLXO3zo+TfL5NM8/SqnAQiwo8hhD4A3HsifE/8Wgh+xemJD7omfqSImJb2oeHrQKCzAnOScC2wea5pl", - "zdZliz5NjPR5/3mw0ir0t7E1NEi5F/4UIhpR97YVdT3MQlVkjtFx3m0EOVXBKURjLggOxk+J6/7528fo", - "CMfa+UUQBrcc2Jb9JExixEmK4T1uHkAQLXdM36+evJmUfjpYvIEYgpMpjES5GVo9OTNOZ2FKLnDjyod5", - "bXea2Y94xhGI3PHwVPPuSkv5hh5Qb2n9vFtlUxBMrv09TfK8fm3PFmyt8W6ehEYxLhQ8GAhkHstixMgM", - "syAkPOfrZmVyapJyO2Sd/NnkFMYcwlN4/RBpFqJTV8LvNj6vZwjXo9gG4KrjREPxCDh/vOOLC5J21kfS", - "gS/Qtm2+2p7qo4leCpI6NSuHs7quu3a85K2BZiJO4G8VcnKHqX4zah60NmcJNSCckhn2lx1ehlefwtp1", - "jlePwA/qEXi1x7/a41ezx9u6vlbzjb2gUd3fsh9487J0iEPtmfrJWrR4nFfzXIMSv01DV74R6s6jvHRV", - "SQ9qLdxZXrap4FnPIMQ6bWKHbJZFUhYXmRbk7EMQCSWb/om5I2RW/mowCM3yBw/WTPU7wPArjhxqLXeb", - "9nIszVC7qqPYNL3Cs40UyKVc3ol7Och6K0z67m32Wv9YKDxzR5XJEd211epVdcsnTCUYTuHyGs6PRmPq", - "tgTVgwOkJuv0U4c5OOLSyzLnTyrmRR7Epz8oW9Ix6jyMDsP0oNum8k27sjRu5WbxlGr5a9DNq5LfK5bD", - "pa40afLd2ruSOEpUrpAWm9wpi7rZ+INzY68hMXZDFgYn1Y8HPhbKhxo1J9FWSziMg5XLGjQvpaEy8mEm", - "FQ1ITGLVioPscRhSrClVRI3b9u5/g6gywNdRZvLkU7G8lAeAQpOVi0UuD3QxghlhH82+URLmm6n+AIcH", - "SBZoVgA4FwJslodBROPSgFSubE5wAM0VYbz/swMNd67KVSX0yxE5Dvyra4zzk53fbc4v+l9mKZ5gTt70", - "gcU0bgbHtNiH/dp3tJIsNoNJUlAdDyKokMeT92H/vdzGVk7VA29v/Ga8B+UyUxLjlHoH3tvx3nhPv6MD", - "+u0q8uwAeZTG4nztqKptIwzpFysFPeS2gbc0J4F34J0nXFhcwT3FcISL90mw1G8ohA7QwWka6peju//S", - "URpKvejM3VcuS1J5iqdthEyrkbCw/b03a5vdUV0eIGjJRWSqoRfWiBAY450CyzVbDv6ubPQw8v6+t9fd", - "VjaydyvYWV3c/OXm4cbYCL54ZUa4kSOUmWP3Oy6We3L8oJgEak470rjK3xGO23lFNbO55dCeAhiV4YgI", - "wnijubhoslsCEMzGFQ5415EwSq3ncUR6p2bpavvuSQgqZeauVPH47nflfH3YVSrFro9jX+WvaRAB8J3D", - "e2Ya76QsUa+xcRyglMTwxLNyo1AFcyiUNAFJ5hAVIO4lQFcAjro6qbnq9He82wI2AUEKj4NzMZq/KSxL", - "hZG1w7uexdT5Z29tEgTWDYtVa70gPAuFS4pcWryIFJHCPIn+82TO6hmuGJNnUYSh/LNaMnCSxTE4v3sY", - "DpbDtHFu/s5t95aGLaz7Ow0149Zf4K3Ao/mTLznuD8+kerVyrT2ZVBLDTub4MplULtjBM+1cmtKdW7IE", - "QsxIU8ILOSg81NYXL17jut+IUPqrUp8eQd6elpz8Dlk3eLXT2hS5dCzqiZUbp85dOSINueSltofia6/P", - "LSksom1E57Up9SQqbxUAh7ArPbF/ZhrvMKawt/Tud3X/6qn5tvOKVnwVtxzqcYeru6ZjP023RJyXrukO", - "3t1Y+A6/mrKhdZHrXHZeM7XWLx5q9sBeEmKvg1G0ZfInYRS541Vpg8Yj/J/wWcUlug5u9d3rtSOl/mlq", - "BnFkaioMwi4QeTdOAtJD61DNHEB/0h/Wo2v0i++COoYPN4/SONSCtnaouHVGlyYIgO1+l//TJ4aTMr8R", - "oUuPqJrqbsJ8glEGSxw1ufcwGlJbA24pf2UEUnfoa0qp9NOzuJlYteh680te/egFXUeqrNWopkKBFcTz", - "SF1sCj3VldR1sNSGjrBaxZgHfYb1kaSwjzQGwJEMQ7yEk6u/WCllsGuX9abSHbcS1NTEi529ptWMkSfq", - "BdGgoo9EgqY0NPHwxTXZPGnJOGH/hSf+12xvb/8fOE3/K2VJAO9YIEenVC9wHKja7RxFGRdoQtD1xSki", - "sZ8EBB77uARSnjvflkfrlj8DjzOJ+KJM0CPPtTrxgBn3+jDj3hbPQ8vJ9uVGHjQrK2Hl3Ikdl3GTTxPy", - "/VfiAOoCz2byDd3Lc7Jv91JemtahW1plG5pv4z8JU5XE565Vb7RZjNpFCFXAcD9helYUomyTqUdJFOEd", - "/RSQBCg0j4I02U6O4WnQjJQg8UYeuU9DKAKuwzldIlIP8o0GvNW+3BxqFOH7E/Xxzd5eRZiNvCymf2VE", - "NwA+36jC50zw+jiRqsItoqI25E+6Fb7ntUhaLVvKHm5lGnaZtHIyXVr1TYapmEVllJ5mrYqgM96H56/1", - "berwbLxpFgfnZIngztYswzZEwLVLhFVugYaHfya2aNzzu7rAaLP79EIXNDXME6gMruo1ul1Skus6bqU3", - "6arkWzBGV1ensgnEnZJ7QWKt4LcobDkT6jqkj+bF9St/GrJBCuDeUyiAJtWRSQz/MHoqVVRzxNZU0R90", - "35pEPbm4b39RIA8AbtUHgjzsaHex3zK8nXSjx1FxqnIPrbxFR85n+ZA73lHPiiMxx8J6rJTLeBqjiIYh", - "1YmAG4wIkA3AbdE04emtVXBr0J7he9nayv3cBmUDVCFVhfALqIoKv3tSDx9WqncLJzBQfZXzV+Xyet3M", - "crd13Uft3Rvl18see7LxLvqIbZnn2lZbsnjwiJkwGxTi2hc4HFmVpkfQVNVJKXJ4b3B/uoYlkAPd3l49", - "lkbiYLWFDQP5ZhvRPpUiJquaKe2NvIVL9A+672NVFks9txSNAQrgu1JNHSWicdW4MUYXJA2xr59imfoD", - "un4SlEMy715JkRqqNPAY/RFRAYfvJBFzpGo8Ij8kmKlYSns0hx6fOYSRLgL2RGr8a8WxDVUce3H1veqp", - "kPpc2xzGp5JoNKEytmR0btpNyr53e7/2afvrC5OTYFhoNlGcy8+VSmh97ArQb+smSlPt3mYeHAdGeOj7", - "8SuXDOYSRqaM8DnhbcYsaFLapMoaJY86KrgulJSgkC5ITza6yOd9DidbYMRMPTrV1hoKddXgobik3pJU", - "ICwxYGm5UFvpXmmvb/8h76Lt+nddxg6XqYaiWzLcPgMO5uZpdc6+7XadC+ixguxTHZ+hSVUBFjx/n3qz", - "IfNVag/geVNYsc/745QwTrmAamqm1mQeBaLH/J88v/FwAbl4TSlObo5YE7+koiLgcUfhF1YvGmEeNCHL", - "JFbCJ2F0RmMcWtOEdErkcdHXjZHD8SzOCXeOgz9SVRW1nCOiVtgTvD/YUfCzyKcEAxi3A7mnXPCRfkmj", - "i0toF1E1GRm0VfVN8yqiYIeGenpQuTGe6ZGSmIz7lNPdshCxa7+6TCoGbdsOy/lBzShyEyZZiw/zkggV", - "KKYaFnxtDCYl2S75ktynlBF0b7QfK9iMFllA9E4coyMchqrKLeUoImKeBCjKQkHTkOisOPKefceo0FaZ", - "q6vTESLYV/UmUcZNkVwjvAozJOaFgVW2ShMqvycoIphnuu6IWZpR//oKpSuNu+cgkiw61jP2yMUV2mhB", - "DxtfOkFzo26rqOoNdaPUK0NKKG/WouJyzZoGUjP6T7ezbTWgPbY5b1otpFp3iDSfuC1Rc5WXDpUS3Srm", - "uYBhskQ8yZhPrMg915HUuaNSPNN2xlPwAg7q8oncC52KZDtuhNIRt6oXoSD6iwyqy6FXLAz5Cfo9/na6", - "7670h23GrUOSoUeGq6sFbY+C1axTbWQsPaWQv1mkKlJJ9PG/2uHAbTLHShWxqvdVJ4Z4db3+WK5Xqwr5", - "o/yuoqhYvmGn69s+bd8+G4HcucF3I3zfusmBh3Qgj2vDm5zL6j2A4ch+YuAM379KgmcvCUaOt2+M+pAE", - "W/6LLEiJS+D5mn6Z0fBYjUEK0OZHGKaESlFW/huv15X/BsT4xqCy/Hbf257he1t2vcqqdcsqZefqpTua", - "pk6RU3zscdvJ0081bcTeVbdutq2z6ud+j9ZbDb6e8PYxSJvtwVfFosovKdvdSJVERy3PKW0m24T7x1np", - "s5f9dn/tMOiiVA2+oKJEMvZ9kgrjs392z8g2yGEl8bWrs1zvfod/NOe9OIKqbnRacRsopUplR1cOg1Yp", - "p5Pkw/8aJF453x7WLZtP4oYCd6bjNs9cd+37LvkmRbzKZmgqmyw19INZs/95+uJsj80cXNTMaU3wVZj2", - "8cyYohtPZtUnZ9srPNuU7CzPJCcaJEDfNVQLas4W9uql4rreSlvigkNdMBXP/sZ/gQqq9YJLLQftBhlG", - "QbYyw7xZMyAksEFxnrt4VviLX/mxnR/Lou17UZmibw7DBjWwKtBKFS8Gmjfyrv1jKUsFO9aRyfDlqPPt", - "l8NKNuUG6tkq1JpIt6KjagWX2DY0LquG00BTh63MUsFXzNL97FSkUv7M9nukebDSeIOUA21EcmzuJlqu", - "k7ZyWs1aUaTG1JrPPw/J8zBaXBBdzi/uabJ4Gfz2ci0fP5Y1w1aYTJmM77qo4sOQGG1VXt6uGt+LR9UZ", - "9L6ofbrB89nUinQcsPtuWaZ4YI658jn9hCxQT8FQ8yaW68uGKkFCH3WsRPuVEiusSP/tJmHwM8bBc/aS", - "sjC4ogfNw5g33e9i3M6YgDLiC1WIu5+ollxxnPdqHDgkC6il03vQU+jgQO2linLrQ/0pS6ImlzKMMmiV", - "auIt2Vthz8lZe9tc3ZcAa8s/T3ODW4huxcraLlZVEt8hgrUpfXaXYFXJhp9MtJ7EAbkv6mFrOZszTuPu", - "yt/u2zV7XVs/mfE/plNOGmTZ4HQyP4y0XVkobk0CNT4d6ZQ8r+KmVdxA/fzd73PM5+2J+XGMsjRMcIBC", - "Gt8aqxpmUIEfCrRiGlsbFi+J+tZXx/uYF/x/pAByuDrnati+nk4JhRFEZgndzs43m2F9iZdrwHzT/dOm", - "y92cMHiwrX9UpfcVJX4Ap8Bz2TbGMdoRngTu0FXsz9rJtU73wUYieHP31GNDeLUCA3jdYKzbS/Zd2ckJ", - "e7wKakvO/Xn/R651MGp6pJQDOlmiJCYoYShKmKqTAZjolUtcqG28WqKxS6F1kmraIC6WULxaqncvyYX0", - "WhjiKZ8JtiYs7ZU/sckKZ4mIF5rS9EVa07oueHtDYc5tYn0w2wDyWqxxFVSqRcDFHq6f+kVBxuIxkr3R", - "hITJnXpBrhpgRhC598MsaMbt2qx7R5iTHU5iTgVdEMSziTpeUISFP0dJDJBHhHM8U9cfKS0bTgyCmT8v", - "gRXh+1MSz+QG3//7P7YbSmllqv28v5pZ76fOWbvYLz9RWH9Q+ef9pwgr/7z/3N2rGhM/W+Ge6p3UZsBa", - "HFt7bdf2SBSL737sWJSNANEsSF+DXdbB3R1BB0NDDJzM/nRBBhuW8YCRQRL+ecU4bFCavm06zlc8vN8+", - "yeH99qkObw2AkX8GkNdzvJvzkjCLSM8UKci0dt3V80+bt/mquQabe0Ow+9RX8xLpaGDvUZtTSYt8vW6B", - "YVFvI/U4Dcm2+4ZFzXoYB9o22cEgJvdfHWc/ulgo2MkSCrvf1T/6v05pZjLVSLPZZz3sYOXGwNPzaUqJ", - "uOZZCq4T9gc2HNhyoiV2J0dIY+DOJkm391Qb3qQP+Xm5Qs3CFoaKGQu9A28uRMoPdndxSsdkfzLGaepZ", - "/b8X+SqKdA3fKyn7yj9Cbg37b6DCjpCAlxumdOeWLEu/aY9s/nd+cN88/P8AAAD//z2Z0ACOIwEA", + "BBhvUoFicmeJcxwHqgUXSYoSKXMx+PgoB0XTaskICpJYASHFWjBZlmFQkwi6IKGiwwhNMoGoQD6OzYte", + "eNuLgyXM7CexoHFGEMjLeIYEw9Mp9cdfy4EFOJAXT7NyEHcQf63+yOI5waGYL5VglYD19AgU6L/QcxS/", + "HBezFT8e2fMWP19bEBS/XhpYSoQ+muN4tr77Z2cE6/CDsbIh9AByFcqc1eJQL1vl2u3ra7LLPa1BRyLr", + "xcUXBEmEqUPteY+53OPyo/VaM7f/qr0pd7qyA9NJ2CsgmcSL6juCCkLs9wEgwOHUihdB2WC43vCCdfn7", + "t+lV1zRoxSb8XBhDJSo1vQp5jhYUo5Ql98txNwVX8LhXXeZNJvE6K2Qi2WHQxOHlASERFIfSuKaqklgu", + "JBhsov+g+1UXa8Zz2REbB+nlkjCr1DOgaYhn7kWiYzWY8q64/SEalibzwmuk0xNIvS0EVj1DsfoatfUa", + "tfUco7Y0lKfJzP2OWUVclANI4JIS0pjUzhn40TmO/NL2GPqJHiwDwGU8NDwPn1KijdBNr0uazMvF0bj1", + "J+ZPhVWA334OrrFXxjTvfglevvmzDMKfAhUXV5NeQ7Zl26PvMHE9iDtdx5ydIgDmHtl4qODs8/6FTtLk", + "xF7XC3o9ksIgzzG6Nuy5lmOt4Mw60vq90jI9Og+r0iTOkLgzO4isr0hrtol+qltD+z3D8tPsmpPg3G94", + "jd9m+5yGiZ0RxISYKakP5rQmU2MAL+4anwU2GxplR/dbXXjE12habDVdtoLaYhBtHdQN5VmHCbR5yJ8z", + "MHJAuKKlgFhMXdDCIrXFRzazWrKhHEDljs77w5U9wviBoQUJUEC40CkKtaV/xkDl12ZU9AH7c40yH8do", + "QhBGRyfHF2gSJv6teh6Mvnr/OYb/dt/uf/V+GSGMJpgRdHKOcBDAgJWG0CphCJt7E0QDm0bkHkdpSMZ+", + "En31Ruir97/GpZ9+GaNDvQCT4gSHd3jJkcC3BEnmIwGRpEwWhKGAxLRoOh7k5wZEnWeTkPpXCielU8PF", + "3ZcqSBHRkhRG1xen3IpNL+6CKtkJCNny0zj3RV0HPjbTVi+3oBKXmC5oQdyUPi4IoWz1cSIQz9I0kUo0", + "dJFTI5aFQ5EYYX6rX+T/M+EO0A3K5gkX8DZN3zvgVjshxd0TIgE1QnWMMXeeb022lktzgRr07kL7rCGc", + "DFIruB5bOG4xjwlcq7++w67ncee4eBzX1NedZwDGazFLEf4nFfPGBAS5ealNQel3F5cqyEPNa5CPD4Iv", + "ximfJ8L9mEL7Y2rJDLIw1AxtSKuHsROJ+WEWgOuI4Ei1hpNfqjkCz7RQkh93eJjNdqPljhnlYLH/y6CN", + "YDr2NDa0ATuHbGJjdC33cw71LtjplK0BK6F6hzlKWbKgAQlaF6OFmhTMYk7YHeUETXEYcjTB/q1JHsXw", + "XQHPybEeEU/8N/tv8yHGnTxoYWKkyedixSuCI8f5BkmPHfYqnQHFuGfkOp0JgfixEeDVIf6cE7n4vLsx", + "feiVVYa0xHKfxCJuaIpkut2mGdcINcuITr+rt7lGlr3qG43Z17Q9jU7Pnz7rjuYeZ+anNT2m8pNYZyy7", + "tM+S+hOjIpim6GIFFlS2e49rpR2CeeFUCJypN5U9EXKKqxtDr+vm69Wo62rk4AMHjQzngRSoySwSab9V", + "JV2L/NksM+PuINR+0kP37hAdrr2kYFPwaxeZ28FmNkBH3INq+ogMoDrbZ6e1BihV9gpIOSc7i347bUDi", + "VClyrfS2OqWn3Nzq1WCbe3FSZM7skqGGBFayzVUdiR3nZOHyKWGv8J480WG5eqaHVV16krSXKb6LByML", + "mOJx5+oK7sSG+8Qn+yqRg/m3qvat4FQLyr8Fw24KKZgcuvRTcy3gSLWXF32wJljWhcnSoTtaiiuXdFlV", + "ElQp02IgXMkJ6doPWRqssOsUI6muK7ptbJdjUSKlh2dRE9MWGPYy7C1e3Ssl+pTEdnk/jvIDxHBvWSja", + "hw+cH82uke2x3rp4oo1QejX2+kHyPz7Hd59rxEZPFXVArnKkbP8EmNKY8vmwVZk+vZe1iqjnj1Eaeoui", + "YlGPl0OF6MkfgTTKFYdsqu2EjzQk12mYYMeeSBnhztcHtjCY0hAEAQ5VYLbuZF7jw5MU5/7PmENjv2ah", + "FUUFYxdW8wzghFTmnXgysNcW7LYhrrD961aDvtnZAY5VPcudqdh7OLcLAAapJSxPS98JYCmP/WM32jZO", + "Cse+cocYlGA8TWb8UWEGm2SFphCD0goacyU/OuZzldjMxL8lTO56hw89/2aZfJqnX+U0AAF2FDnsAfC+", + "A/lz4t9C8CNWr2XIPfEzVY+kpBcVTw8ahQWYk5xzgc1jTbOs2bps0aeJkT7vPw9WWoX+NraGBin3wp9C", + "RCPq3rairodZqIrMMTrOu40gPSo4hWjMBcHB+Clx3T8V+xgd4Vg7vwjC4JYD27KfhEmMOEkxPK3NAwii", + "5Y7p+9WTN5PSTweLNxBDcDKFkSg3QweQeMg4nYWpnsCNKx/mtd1pZj/iGUcgcsfDs8a7iyblG3pA6aT1", + "826VTUEwufb3NMlT9LU9W7C1xrt5EhrFuFDwYCCQeSyLESMzzIKQ8Jyvm5XJqcmv7ZB18meTHhhzCE/h", + "9UOkWYhOXbm72/i8nuxbj2IbgKuOEw3FI+D88Y4vLkjaWepIB75A27b5anuqjyZ6KUjq1Kwczuq67trx", + "KLcGmok4gb9VyMkdpvq9qHnH2pzw04BwSmbYX3Z4GV59CmvXOV49Aj+oR+DVHv9qj1/NHm/r+lrNN/aC", + "RnV/y37gzcvSIQ61Z+ona9HicV6Ycw1K/DYNXflGqDuP8ipUJT2otQZnedmmGGc9GRDrtIkdslkWSVlc", + "ZFqQsw9BJFRf+ifmjpBZ+avBIDTLHzxYM9XvAMOvOHKotdxt2iurNEPtKnRi0/QKzzZS65ZyeSfu5SDr", + "rTDpu7fZa/1jofDMHVUmR3SXSasXyC2fMJVgOIXLazg/Go2p2xJUDw6QmqzTTx3m4IhLL8ucP6mYFykN", + "n/6gbMmsqFMqOgzTg26byjftSri4lZvFU6rlr0E3r0p+r1gOl7rSpMl3a+9K4ihRuUKGa3KnLOpm4w9O", + "c72GHNcNWRicVD8e+FgoH2rUnA9bLeEwDlauUNC8lIYix4eZVDQgMYlV9g1qCmBIr6ZUETVu27v/DaLK", + "AF9HmUl5T8XyUh4ACk1WLha5PNDFCGaEfTT7RkmYb6aQAxweIFmgWQHgXAiwWR4GEY1LA1K5sjnBATRX", + "hPH+zw403LkqF4jQL0fkOPCvrjHOT3Z+tzm/6H+ZpXiCOXnTBxbTuBkc02If9mvf0Uqy2AwmSUF1PIig", + "Qh5P3of993IbW+lRD7y98ZvxHlS+TEmMU+odeG/He+M9/Y4O6LeryLMD5FEai/O1oyqcjTBkUqzU5pDb", + "Bt7SnATegXeecGFxBfcUwxEu3ifBUr+hEDpAB6dpqF+O7v5LR2ko9aIzd1+5wkjlKZ62ETKtRsLC9vfe", + "rG12R6F4gKAlF5EpbF5YI0JgjHcKLNdsOfi7stHDyPv73l53W9nI3q1gZ3Vx85ebhxtjI/jilRnhRo5Q", + "Zo7d77hY7snxg2ISKB/tyMgqf0c4bucV1czmlkN7CmBUhiMiCOON5uKiyW4JQDAbVzjgXUfCKLWexxHp", + "nZqlq+27JyGolJm7UsXju9+V8/VhV6kUuz6OfZW/pkEEwHcO75lpvJOyRL3GxnGAUhLDE8/KjULVvqFQ", + "nQQkmUNUgLiXAF0BOOrqpOaq09/xbgvYBAQpPA7OxWj+prAsFUbWDu96FlPnn721SRBYNyxWrfWC8CwU", + "LilyafEiUkQK83z4z5M5q2e4YkyeRRGGSs5qycBJFsfg/O5hOFgO08a5+Tu33VsatrDu7zTUjFt/gbcC", + "j+ZPvuS4PzyT6tXKtfZkUkkMO5njy2RSuWAHz7RzaUp3bskSCDEjTQkv5KDwUFtfvHiN634jQumvSn16", + "BHl7WnLyO2Td4NVOa1Ov0rGoJ1ZunDp35Yg05JKX2h6Kr70+t6SwiLYRndem1JOovFUAHMKu9MT+mWm8", + "w5jC3tK739X9q6fm284rWvFV3HKoxx2u7pqO/TTdEnFeuqY7eHdj4Tv8asqG1kWuc9l5zdRav3io2QN7", + "SYi9DkbRlsmfhFHkjldlDRqP8H/CZxWX6Dq41Xev146c6yoQPtjmTT2FQdgFIu/GSUB6aB2qmQPoT/rD", + "enSNfvFdUJLw4eZRGoda0NYOFbfO6NIEAbDd7/J/+sRwUuY3InQpEVUe3U2YTzDKYImjJvceRkNqa8At", + "5a+MQOoOfU0pVXF6FjcTq6xcb37JCxm9oOtIlbUa1VQosIJ4HqmLTc2mupK6Dpba0BFWqxjzoM+wPpIU", + "9pHGADiSYYiXcHL1FyulDHbtst4UreNWgpqaeLGz17SaMfJEvSAaVPSRSNCUhiYevrgmmyctGSfsv/DE", + "/5rt7e3/A6fpf6UsCeAdC+TolOoFjgNVhp2jKOMCTQi6vjhFJPaTgMBjH5dAynPn2/Jo3fJn4HEmEV+U", + "CXrkuVYnHjDjXh9m3NvieWg52b7cyINmZSWsnDux4zJu8mlCvv9KHEBd4NlMvqF7eU727V7KS9M6dEur", + "bEPzbfwnYaqS+Ny1Soc2i1G7nqAKGO4nTM+KmpJtMvUoiSK8o58CkgCF5lGQJtvJMTwNmpESJN7II/dp", + "CPW8dTinS0TqQb7RgLfal5tDjSJ8f6I+vtnbqwizkZfF9K+M6AbA5xtV+JwJXh8nUlW4RVSUefxJt8L3", + "vBZJq2VL2cOtTMMuk1ZOpkurvskwFbOojNLTrFURdMb78Py1vk0dno03zeLgnCwR3NmaZdiGCLh2ibDK", + "LdDw8M/EFo17flfXFW12n14A7njOPIHK4Kpeo9slJbmu41Z6k65KvgVjdHV1KptA3Cm5FyTWCn6LwpYz", + "oa5B+mheXL/ypyEbpADuPYUCaFIdmcTwD6OnUkU1R2xNFf1B961J1JOL+/YXBfIA4FZ9IMjDjnYX+y3D", + "20k3ehwVpyr30MpbdOR8lg+54x31rDgScyysx0q5jKcximgYUp0IuMGIANkA3BZNE57eWgW3Bu0Zvpet", + "rdzPbVA2QBVSVdO+gKqo8Lsn9fBhpXq3cAID1Vc5f1Uur9fNLHdb133U3r1Rfr3ssScb76KP2JZ5rm21", + "JYsHj5gJs0Ehrn2Bw5FVaXoETVWdlCKH9wb3p2tYAjnQ7e3VY2kkDlZb2DCQb7YR7VMpYrKqmdLeyFu4", + "RP+g+z5WZbHUc0vRGKAAvivV1FEiGleNG2N0QdIQ+/oplqk/oOsnQTkk8+6VFKmhSgOP0R8RFXD4ThIx", + "R6rGI/JDgpmKpbRHc+jxmUMY6SJgT6TGv1Yc21DFsRdX36ueCqnPtc1hfCqJRhMqY0tG56bdpOx7t/dr", + "n7a/vjA5CYaFZhPFufxcqYTWx64A/bZuojTV7m3mwXFghIe+H79yyWAuYWTKCJ8T3mbMgialTaqsUfKo", + "o4LrQkkJCumC9GSji3ze53CyBUbM1KNTba2hUFcNHopL6i1JBcISA5aWC7WV7pX2+vYf8i7arn/XZexw", + "mWoouiXD7TPgYG6eVufs227XuYAeK8g+1fEZmlQVYMHz96k3GzJfpfYAnjeFFfu8P04J45QLqKZmak3m", + "USB6zP/J8xsPF5CL15Ti5OaINfFLKioCHncUfmH1ohHmQROyTGIlfBJGZzTGoTVNSKdEHhd93Rg5HM/i", + "nHDnOPgjVVVRyzkiaoU9wfuDHQU/i3xKMIBxO5B7ygUf6Zc0uriEdhFVk5FBW1XfNK8iCnZoqKcHlRvj", + "mR4picm4TzndLQsRu/ary6Ri0LbtsJwf1IwiN2GStfgwL4lQgWKqYcHXxmBSku2SL8l9ShlB90b7sYLN", + "aJEFRO/EMTrCYaiq3FKOIiLmSYCiLBQ0DYnOiiPv2XeMCm2Vubo6HSGCfVVvEmXcFMk1wqswQ2JeGFhl", + "qzSh8nuCIoJ5puuOmKUZ9a+vULrSuHsOIsmiYz1jj1xcoY0W9LDxpRM0N+q2iqreUDdKvTKkhPJmLSou", + "16xpIDWj/3Q721YD2mOb86bVQqp1h0jzidsSNVd56VAp0a1ingsYJkvEk4z5xIrccx1JnTsqxTNtZzwF", + "L+CgLp/IvdCpSLbjRigdcat6EQqiv8iguhx6xcKQn6Df42+n++5Kf9hm3DokGXpkuLpa0PYoWM061UbG", + "0lMK+ZtFqiKVRB//qx0O3CZzrFQRq3pfdWKIV9frj+V6taqQP8rvKoqK5Rt2ur7t0/btsxHInRt8N8L3", + "rZsceEgH8rg2vMm5rN4DGI7sJwbO8P2rJHj2kmDkePvGqA9JsOW/yIKUuASer+mXGQ2P1RikAG1+hGFK", + "qBRl5b/xel35b0CMbwwqy2/3ve0Zvrdl16usWresUnauXrqjaeoUOcXHHredPP1U00bsXXXrZts6q37u", + "92i91eDrCW8fg7TZHnxVLKr8krLdjVRJdNTynNJmsk24f5yVPnvZb/fXDoMuStXgCypKJGPfJ6kwPvtn", + "94xsgxxWEl+7Osv17nf4R3PeiyOo6kanFbeBUqpUdnTlMGiVcjpJPvyvQeKV8+1h3bL5JG4ocGc6bvPM", + "dde+75JvUsSrbIamsslSQz+YNfufpy/O9tjMwUXNnNYEX4VpH8+MKbrxZFZ9cra9wrNNyc7yTHKiQQL0", + "XUO1oOZsYa9eKq7rrbQlLjjUBVPx7G/8F6igWi+41HLQbpBhFGQrM8ybNQNCAhsU57mLZ4W/+JUf2/mx", + "LNq+F5Up+uYwbFADqwKtVPFioHkj79o/lrJUsGMdmQxfjjrffjmsZFNuoJ6tQq2JdCs6qlZwiW1D47Jq", + "OA00ddjKLBV8xSzdz05FKuXPbL9HmgcrjTdIOdBGJMfmbqLlOmkrp9WsFUVqTK35/POQPA+jxQXR5fzi", + "niaLl8FvL9fy8WNZM2yFyZTJ+K6LKj4MidFW5eXtqvG9eFSdQe+L2qcbPJ9NrUjHAbvvlmWKB+aYK5/T", + "T8gC9RQMNW9iub5sqBIk9FHHSrRfKbHCivTfbhIGP2McPGcvKQuDK3rQPIx50/0uxu2MCSgjvlCFuPuJ", + "askVx3mvxoFDsoBaOr0HPYUODtReqii3PtSfsiRqcinDKINWqSbekr0V9pyctbfN1X0JsLb88zQ3uIXo", + "Vqys7WJVJfEdIlib0md3CVaVbPjJROtJHJD7oh62lrM54zTurvztvl2z17X1kxn/YzrlpEGWDU4n88NI", + "25WF4tYkUOPTkU7J8ypuWsUN1M/f/T7HfN6emB/HKEvDBAcopPGtsaphBhX4oUArprG1YfGSqG99dbyP", + "ecH/Rwogh6tzrobt6+mUUBhBZJbQ7ex8sxnWl3i5Bsw33T9tutzNCYMH2/pHVXpfUeIHcAo8l21jHKMd", + "4UngDl3F/qydXOt0H2wkgjd3Tz02hFcrMIDXDca6vWTflZ2csMeroLbk3J/3f+RaB6OmR0o5oJMlSmKC", + "EoaihKk6GYCJXrnEhdrGqyUauxRaJ6mmDeJiCcWrpXr3klxIr4UhnvKZYGvC0l75E5uscJaIeKEpTV+k", + "Na3rgrc3FObcJtYHsw0gr8UaV0GlWgRc7OH6qV8UZCweI9kbTUiY3KkX5KoBZgSRez/Mgmbcrs26d4Q5", + "2eEk5lTQBUE8m6jjBUVY+HOUxAB5RDjHM3X9kdKy4cQgmPnzElgRvj8l8Uxu8P2//2O7oZRWptrP+6uZ", + "9X7qnLWL/fIThfUHlX/ef4qw8s/7z929qjHxsxXuqd5JbQasxbG113Ztj0Sx+O7HjkXZCBDNgvQ12GUd", + "3N0RdDA0xMDJ7E8XZLBhGQ8YGSThn1eMwwal6dum43zFw/vtkxzeb5/q8NYAGPlnAHk9x7s5LwmziPRM", + "kYJMa9ddPf+0eZuvmmuwuTcEu099NS+Rjgb2HrU5lbTI1+sWGBb1NlKP05Bsu29Y1KyHcaBtkx0MYnL/", + "1XH2o4uFgp0sobD7Xf2j/+uUZiZTjTSbfdbDDlZuDDw9n6aUiGuepeA6YX9gw4EtJ1pid3KENAbubJJ0", + "e0+14U36kJ+XK9QsbGGomLHQO/DmQqT8YHcXp3RM9idjnKae1f97ka+iSNfwvZKyr/wj5Naw/wYq7AgJ", + "eLlhSnduybL0m/bI5n/nB/fNw/8PAAD//yv6OJVZIwEA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/packages/api/internal/orchestrator/nodemanager/client.go b/packages/api/internal/orchestrator/nodemanager/client.go index b6f1368129..b7acc734a4 100644 --- a/packages/api/internal/orchestrator/nodemanager/client.go +++ b/packages/api/internal/orchestrator/nodemanager/client.go @@ -17,10 +17,10 @@ import ( ) var OrchestratorToApiNodeStateMapper = map[orchestratorinfo.ServiceInfoStatus]api.NodeStatus{ - orchestratorinfo.ServiceInfoStatus_Healthy: api.NodeStatusReady, - orchestratorinfo.ServiceInfoStatus_Draining: api.NodeStatusDraining, - orchestratorinfo.ServiceInfoStatus_Unhealthy: api.NodeStatusUnhealthy, - orchestratorinfo.ServiceInfoStatus_ScalingDown: api.NodeStatusScalingDown, + orchestratorinfo.ServiceInfoStatus_Healthy: api.NodeStatusReady, + orchestratorinfo.ServiceInfoStatus_Draining: api.NodeStatusDraining, + orchestratorinfo.ServiceInfoStatus_Unhealthy: api.NodeStatusUnhealthy, + orchestratorinfo.ServiceInfoStatus_Standby: api.NodeStatusStandby, } func NewClient(tracerProvider trace.TracerProvider, meterProvider metric.MeterProvider, host string) (*clusters.GRPCClient, error) { diff --git a/packages/api/internal/orchestrator/nodemanager/status.go b/packages/api/internal/orchestrator/nodemanager/status.go index cd8e2392f4..3065fdd707 100644 --- a/packages/api/internal/orchestrator/nodemanager/status.go +++ b/packages/api/internal/orchestrator/nodemanager/status.go @@ -13,10 +13,10 @@ import ( ) var ApiNodeToOrchestratorStateMapper = map[api.NodeStatus]orchestratorinfo.ServiceInfoStatus{ - api.NodeStatusReady: orchestratorinfo.ServiceInfoStatus_Healthy, - api.NodeStatusDraining: orchestratorinfo.ServiceInfoStatus_Draining, - api.NodeStatusUnhealthy: orchestratorinfo.ServiceInfoStatus_Unhealthy, - api.NodeStatusScalingDown: orchestratorinfo.ServiceInfoStatus_ScalingDown, + api.NodeStatusReady: orchestratorinfo.ServiceInfoStatus_Healthy, + api.NodeStatusDraining: orchestratorinfo.ServiceInfoStatus_Draining, + api.NodeStatusUnhealthy: orchestratorinfo.ServiceInfoStatus_Unhealthy, + api.NodeStatusStandby: orchestratorinfo.ServiceInfoStatus_Standby, } func (n *Node) Status() api.NodeStatus { diff --git a/packages/orchestrator/info.proto b/packages/orchestrator/info.proto index 50a5da004b..9453b8caa9 100644 --- a/packages/orchestrator/info.proto +++ b/packages/orchestrator/info.proto @@ -11,8 +11,8 @@ enum ServiceInfoStatus { // Draining means the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. Draining = 1; Unhealthy = 2; - // ScalingDown means the node is a candidate for removal but can be interrupted. If interrupted, it returns to Healthy and continues serving traffic. - ScalingDown = 3; + // Standby means the node is not actively used, but it can return to Healthy and continues serving traffic. + Standby = 3; } enum ServiceInfoRole { diff --git a/packages/orchestrator/internal/healthcheck/healthcheck.go b/packages/orchestrator/internal/healthcheck/healthcheck.go index 9715859477..6f1557b962 100644 --- a/packages/orchestrator/internal/healthcheck/healthcheck.go +++ b/packages/orchestrator/internal/healthcheck/healthcheck.go @@ -39,7 +39,7 @@ func (h *Healthcheck) getStatus() e2bHealth.Status { switch h.info.GetStatus() { case e2borchestratorinfo.ServiceInfoStatus_Healthy: return e2bHealth.Healthy - case e2borchestratorinfo.ServiceInfoStatus_Draining, e2borchestratorinfo.ServiceInfoStatus_ScalingDown: + case e2borchestratorinfo.ServiceInfoStatus_Draining, e2borchestratorinfo.ServiceInfoStatus_Standby: return e2bHealth.Draining } diff --git a/packages/orchestrator/main.go b/packages/orchestrator/main.go index b2427e7137..6d58e75ac7 100644 --- a/packages/orchestrator/main.go +++ b/packages/orchestrator/main.go @@ -673,7 +673,7 @@ func run(config cfg.Config) (success bool) { // Mark service draining if not already. // If service stats was previously changed via API, we don't want to override it. logger.L().Info(ctx, "Starting drain phase", zap.Int("sandbox_count", sandboxes.Count())) - if status := serviceInfo.GetStatus(); status == orchestratorinfo.ServiceInfoStatus_Healthy || status == orchestratorinfo.ServiceInfoStatus_ScalingDown { + if status := serviceInfo.GetStatus(); status == orchestratorinfo.ServiceInfoStatus_Healthy || status == orchestratorinfo.ServiceInfoStatus_Standby { serviceInfo.SetStatus(ctx, orchestratorinfo.ServiceInfoStatus_Draining) // Wait for draining state to propagate to all consumers diff --git a/packages/shared/pkg/grpc/orchestrator-info/info.pb.go b/packages/shared/pkg/grpc/orchestrator-info/info.pb.go index 0de04e7ef2..ee0ab18150 100644 --- a/packages/shared/pkg/grpc/orchestrator-info/info.pb.go +++ b/packages/shared/pkg/grpc/orchestrator-info/info.pb.go @@ -30,8 +30,8 @@ const ( // Draining means the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. ServiceInfoStatus_Draining ServiceInfoStatus = 1 ServiceInfoStatus_Unhealthy ServiceInfoStatus = 2 - // ScalingDown means the node is a candidate for removal but can be interrupted. If interrupted, it returns to Healthy and continues serving traffic. - ServiceInfoStatus_ScalingDown ServiceInfoStatus = 3 + // Standby means the node is not actively used, but it can return to Healthy and continues serving traffic. + ServiceInfoStatus_Standby ServiceInfoStatus = 3 ) // Enum value maps for ServiceInfoStatus. @@ -40,13 +40,13 @@ var ( 0: "Healthy", 1: "Draining", 2: "Unhealthy", - 3: "ScalingDown", + 3: "Standby", } ServiceInfoStatus_value = map[string]int32{ - "Healthy": 0, - "Draining": 1, - "Unhealthy": 2, - "ScalingDown": 3, + "Healthy": 0, + "Draining": 1, + "Unhealthy": 2, + "Standby": 3, } ) @@ -646,29 +646,29 @@ var file_info_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x4e, 0x0a, 0x11, 0x53, 0x65, 0x72, + 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x4a, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x6e, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6c, - 0x69, 0x6e, 0x67, 0x44, 0x6f, 0x77, 0x6e, 0x10, 0x03, 0x2a, 0x38, 0x0a, 0x0f, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x13, 0x0a, 0x0f, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x10, - 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x10, 0x01, 0x32, 0x98, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4c, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x2f, - 0x5a, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x32, 0x62, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x69, 0x6e, 0x66, - 0x72, 0x61, 0x2f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x6e, + 0x64, 0x62, 0x79, 0x10, 0x03, 0x2a, 0x38, 0x0a, 0x0f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x01, 0x32, + 0x98, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x3b, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x15, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x2f, 0x5a, 0x2d, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x65, 0x32, 0x62, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2f, 0x6f, + 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/packages/shared/pkg/http/edge/generated.go b/packages/shared/pkg/http/edge/generated.go index 858105fc63..d77b8d8607 100644 --- a/packages/shared/pkg/http/edge/generated.go +++ b/packages/shared/pkg/http/edge/generated.go @@ -22,10 +22,10 @@ const ( // Defines values for ClusterNodeStatus. const ( - Draining ClusterNodeStatus = "draining" - Healthy ClusterNodeStatus = "healthy" - ScalingDown ClusterNodeStatus = "scaling_down" - Unhealthy ClusterNodeStatus = "unhealthy" + Draining ClusterNodeStatus = "draining" + Healthy ClusterNodeStatus = "healthy" + Standby ClusterNodeStatus = "standby" + Unhealthy ClusterNodeStatus = "unhealthy" ) // Defines values for ClusterOrchestratorRole. diff --git a/spec/openapi-edge.yml b/spec/openapi-edge.yml index 385864ab75..e30ef1ffa3 100644 --- a/spec/openapi-edge.yml +++ b/spec/openapi-edge.yml @@ -78,7 +78,7 @@ components: - healthy - draining - unhealthy - - scaling_down + - standby ClusterOrchestratorRole: type: string diff --git a/spec/openapi.yml b/spec/openapi.yml index 6d07856d2e..c42d173c23 100644 --- a/spec/openapi.yml +++ b/spec/openapi.yml @@ -1297,19 +1297,19 @@ components: description: | Status of the node. - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. - - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. + - standby: the node is not actively used, but it can return to ready and continue serving traffic. enum: - ready - draining - connecting - unhealthy - - scaling_down + - standby x-enum-varnames: - NodeStatusReady - NodeStatusDraining - NodeStatusConnecting - NodeStatusUnhealthy - - NodeStatusScalingDown + - NodeStatusStandby NodeStatusChange: required: diff --git a/tests/integration/internal/api/generated.go b/tests/integration/internal/api/generated.go index fd3177e44c..5cda151730 100644 --- a/tests/integration/internal/api/generated.go +++ b/tests/integration/internal/api/generated.go @@ -64,11 +64,11 @@ const ( // Defines values for NodeStatus. const ( - NodeStatusConnecting NodeStatus = "connecting" - NodeStatusDraining NodeStatus = "draining" - NodeStatusReady NodeStatus = "ready" - NodeStatusScalingDown NodeStatus = "scaling_down" - NodeStatusUnhealthy NodeStatus = "unhealthy" + NodeStatusConnecting NodeStatus = "connecting" + NodeStatusDraining NodeStatus = "draining" + NodeStatusReady NodeStatus = "ready" + NodeStatusStandby NodeStatus = "standby" + NodeStatusUnhealthy NodeStatus = "unhealthy" ) // Defines values for SandboxState. @@ -469,7 +469,7 @@ type Node struct { // Status Status of the node. // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. - // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. + // - standby: the node is not actively used, but it can return to ready and continue serving traffic. Status NodeStatus `json:"status"` // Version Version of the orchestrator @@ -508,7 +508,7 @@ type NodeDetail struct { // Status Status of the node. // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. - // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. + // - standby: the node is not actively used, but it can return to ready and continue serving traffic. Status NodeStatus `json:"status"` // Version Version of the orchestrator @@ -541,7 +541,7 @@ type NodeMetrics struct { // NodeStatus Status of the node. // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. -// - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. +// - standby: the node is not actively used, but it can return to ready and continue serving traffic. type NodeStatus string // NodeStatusChange defines model for NodeStatusChange. @@ -551,7 +551,7 @@ type NodeStatusChange struct { // Status Status of the node. // - draining: the node is bound to be shut down. It will not accept new sandboxes and will stop once all existing sandboxes are done. - // - scaling_down: the node is a candidate for removal but can be interrupted. If interrupted, it returns to ready and continues serving traffic. + // - standby: the node is not actively used, but it can return to ready and continue serving traffic. Status NodeStatus `json:"status"` }