syntax = "proto3"; package s3gw.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 PutPolicies (PutPoliciesRequest) returns (PutPoliciesResponse); rpc RemovePolicies (RemovePoliciesRequest) returns (RemovePoliciesResponse); rpc GetPolicy (GetPolicyRequest) returns (GetPolicyResponse); rpc ListPolicies (ListPoliciesRequest) returns (ListPoliciesResponse); } // 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 response. 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; } // Policy target to store chains. enum PolicyTarget { // Undefined target, invalid to use. TARGET_UNDEFINED = 0; // Container target for bucket policies. CONTAINER = 1; // Namespace target for namespace policies. NAMESPACE = 2; // User target for namespace user policies. USER = 3; // Group target for namespace target policies. GROUP = 4; } // Put policies request. message PutPoliciesRequest { message ChainData { // Policy entity type. PolicyTarget target = 1; // Policy name. string name = 2; // Chain rules. bytes chain = 3; } message Body { repeated ChainData chainDatas = 1; } Body body = 1; // Body signature. Signature signature = 2; } // Put policies response. message PutPoliciesResponse { message Body { } Body body = 1; Signature signature = 2; } // Remove policies request. message RemovePoliciesRequest { message ChainInfo { // Policy entity type. PolicyTarget target = 1; // Policy name. string name = 2; // Chain id to remove. bytes chainID = 3; } message Body { repeated ChainInfo chainInfos = 1; } Body body = 1; // Body signature. Signature signature = 2; } // Remove policies response. message RemovePoliciesResponse { message Body { } Body body = 1; Signature signature = 2; } // Get policy request. message GetPolicyRequest { message Body { // Policy entity type. PolicyTarget target = 1; // Policy name. string name = 2; // Chain id to get. bytes chainID = 3; } Body body = 1; // Body signature. Signature signature = 2; } // Get policy response. message GetPolicyResponse { message Body { // Chain rules. bytes chain = 1; } Body body = 1; Signature signature = 2; } // List policies request. message ListPoliciesRequest { message Body { // Policy entity type. PolicyTarget target = 1; // Policy name. string name = 2; } Body body = 1; // Body signature. Signature signature = 2; } // List policies response. message ListPoliciesResponse { message Body { // Chain ids. repeated bytes chainIDs = 1; } Body body = 1; Signature signature = 2; }