frostfs-s3-gw/pkg/service/control/service.proto
Denis Kirillov f8c6b89204 [#XX] Support updating and removing policies
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-11-02 15:23:18 +03:00

144 lines
2.6 KiB
Protocol Buffer

syntax = "proto3";
package control;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-s3-gw/pkg/service/control";
// `ControlService` provides an interface for internal work with the storage node.
service ControlService {
// Performs health check of the storage node.
rpc HealthCheck (HealthCheckRequest) returns (HealthCheckResponse);
rpc AddPolicy (AddPolicyRequest) returns (AddPolicyResponse);
rpc PutPolicy (PutPolicyRequest) returns (PutPolicyResponse);
rpc RemovePolicy (RemovePolicyRequest) returns (RemovePolicyResponse);
}
// Signature of some message.
message Signature {
// Public key used for signing.
bytes key = 1 [json_name = "key"];
// Binary signature.
bytes sign = 2 [json_name = "signature"];
}
// Health check request.
message HealthCheckRequest {
message Body {
}
// Body of health check request message.
Body body = 1;
// Body signature.
Signature signature = 2;
}
// Health check request.
message HealthCheckResponse {
// Health check response body
message Body {
// Health status of storage node application.
HealthStatus health_status = 1;
}
// Body of health check response message.
Body body = 1;
Signature signature = 2;
}
// Health status of the storage node application.
enum HealthStatus {
// Undefined status, default value.
HEALTH_STATUS_UNDEFINED = 0;
// Storage node application is starting.
STARTING = 1;
// Storage node application is started and serves all services.
READY = 2;
// Storage node application is shutting down.
SHUTTING_DOWN = 3;
}
// Add policy request.
message AddPolicyRequest {
message Body {
// Namespace.
string namespace = 1;
// Chain rules.
bytes chain = 2;
}
Body body = 1;
// Body signature.
Signature signature = 2;
}
// Add policy response.
message AddPolicyResponse {
message Body {
}
Body body = 1;
Signature signature = 2;
}
// Put policy request.
message PutPolicyRequest {
message Body {
// Namespace.
string namespace = 1;
// Chain rules.
bytes chain = 2;
}
Body body = 1;
// Body signature.
Signature signature = 2;
}
// Put policy response.
message PutPolicyResponse {
message Body {
}
Body body = 1;
Signature signature = 2;
}
// Add policy request.
message RemovePolicyRequest {
message Body {
// Namespace.
string namespace = 1;
// Chain id to remove.
string chainID = 2;
}
Body body = 1;
// Body signature.
Signature signature = 2;
}
// Add policy response.
message RemovePolicyResponse {
message Body {
bool removed = 1;
}
Body body = 1;
Signature signature = 2;
}