storj/storagenode/internalpb/gracefulexit.proto
Egon Elbre 1903b15474 storagenode/internalpb: move gracefulexit.proto
Change-Id: Ia3614846ed49a39c8f39331516d16d45a695240b
2020-10-30 15:24:56 +02:00

64 lines
2.3 KiB
Protocol Buffer

// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
syntax = "proto3";
option go_package = "storj.io/storj/storagenode/internalpb";
import "gogo.proto";
import "google/protobuf/timestamp.proto";
package gracefulexit;
// NodeGracefulExit is a private service on storagenodes.
service NodeGracefulExit {
// GetSatellitesList returns a list of satellites that the storagenode has not exited.
rpc GetNonExitingSatellites(GetNonExitingSatellitesRequest) returns (GetNonExitingSatellitesResponse);
// InitiateGracefulExit updates one or more satellites in the storagenode's database to be gracefully exiting.
rpc InitiateGracefulExit(InitiateGracefulExitRequest) returns (ExitProgress);
// GetExitProgress returns graceful exit status on each satellite for a given storagenode.
rpc GetExitProgress(GetExitProgressRequest) returns (GetExitProgressResponse);
// GracefulExitFeasibility returns node's join date and satellites config's amount of months required for graceful exit to be allowed.
rpc GracefulExitFeasibility(GracefulExitFeasibilityRequest) returns (GracefulExitFeasibilityResponse);
}
message GetNonExitingSatellitesRequest{}
message GetNonExitingSatellitesResponse {
repeated NonExitingSatellite satellites = 1;
}
// NonExitingSatellite contains information that's needed for a storagenode to start graceful exit.
message NonExitingSatellite {
bytes node_id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
string domain_name = 2;
double space_used = 3;
}
message InitiateGracefulExitRequest {
bytes node_id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
}
message GetExitProgressRequest {}
message GetExitProgressResponse {
repeated ExitProgress progress = 1;
}
message ExitProgress {
string domain_name = 1;
bytes node_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
float percent_complete = 3;
bool successful = 4;
bytes completion_receipt = 5;
}
message GracefulExitFeasibilityRequest {
bytes node_id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
}
message GracefulExitFeasibilityResponse {
google.protobuf.Timestamp joined_at = 1 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];
int32 months_required = 2;
bool is_allowed = 3;
}