frostfs-api/proto-docs/state.md
2020-04-20 13:29:30 +03:00

10 KiB

Protocol Documentation

Table of Contents

Top

state/service.proto

Service "state.Status"

Status service provides node's healthcheck and status info. TODO: decide how to describe auth and were contains permissions.

rpc Netmap(NetmapRequest) returns (.bootstrap.SpreadMap);
rpc Metrics(MetricsRequest) returns (MetricsResponse);
rpc HealthCheck(HealthRequest) returns (HealthResponse);
rpc DumpConfig(DumpRequest) returns (DumpResponse);
rpc DumpVars(DumpVarsRequest) returns (DumpVarsResponse);
rpc ChangeState(ChangeStateRequest) returns (ChangeStateResponse);

Method Netmap

Netmap request allows to receive current bootstrap.SpreadMap

Name Input Output
Netmap NetmapRequest .bootstrap.SpreadMap

Method Metrics

Metrics request allows to receive metrics in prometheus format

Name Input Output
Metrics MetricsRequest MetricsResponse

Method HealthCheck

HealthCheck request allows to check health status of the node. If node unhealthy field Status would contains detailed info.

Name Input Output
HealthCheck HealthRequest HealthResponse

Method DumpConfig

DumpConfig request allows dumping settings for the current node. To permit access, used server config options. The request should be signed.

Name Input Output
DumpConfig DumpRequest DumpResponse

Method DumpVars

DumpVars returns debug variables for the current node. To permit access, used server config options. The request should be signed.

Name Input Output
DumpVars DumpVarsRequest DumpVarsResponse

Method ChangeState

ChangeState allows to change current node state of node. To permit access, used server config options. The request should be signed.

Name Input Output
ChangeState ChangeStateRequest ChangeStateResponse

Message ChangeStateRequest

ChangeStateRequest contains a new state of node.

Field Type Label Description
state ChangeStateRequest.State State is a new state of node.
Meta service.RequestMetaHeader RequestMetaHeader contains information about request meta headers (should be embedded into message)
Verify service.RequestVerificationHeader RequestVerificationHeader is a set of signatures of every NeoFS Node that processed request (should be embedded into message)

Message ChangeStateResponse

ChangeStateResponse is an empty response, that returns when RPC invoked without errors.

Message DumpRequest

DumpRequest message to fetch current server config.

Field Type Label Description
Meta service.RequestMetaHeader RequestMetaHeader contains information about request meta headers (should be embedded into message)
Verify service.RequestVerificationHeader RequestVerificationHeader is a set of signatures of every NeoFS Node that processed request (should be embedded into message)

Message DumpResponse

DumpResponse message contains current server config. Config stored in JSON encoded into slice of bytes.

Field Type Label Description
Config bytes

Message DumpVarsRequest

DumpVarsRequest message to fetch current server debug variables.

Field Type Label Description
Meta service.RequestMetaHeader RequestMetaHeader contains information about request meta headers (should be embedded into message)
Verify service.RequestVerificationHeader RequestVerificationHeader is a set of signatures of every NeoFS Node that processed request (should be embedded into message)

Message DumpVarsResponse

DumpVarsResponse message contains current server debug variables. Variables stored in JSON encoded into slice of bytes.

Field Type Label Description
Variables bytes

Message HealthRequest

HealthRequest message to check current state

Field Type Label Description
Meta service.RequestMetaHeader RequestMetaHeader contains information about request meta headers (should be embedded into message)
Verify service.RequestVerificationHeader RequestVerificationHeader is a set of signatures of every NeoFS Node that processed request (should be embedded into message)

Message HealthResponse

HealthResponse message with current state

Field Type Label Description
Healthy bool Healthy is true when node alive and healthy
Status string Status contains detailed information about health status

Message MetricsRequest

MetricsRequest message to request node metrics

Field Type Label Description
Meta service.RequestMetaHeader RequestMetaHeader contains information about request meta headers (should be embedded into message)
Verify service.RequestVerificationHeader RequestVerificationHeader is a set of signatures of every NeoFS Node that processed request (should be embedded into message)

Message MetricsResponse

MetricsResponse contains [][]byte, every []byte is marshaled MetricFamily proto message from github.com/prometheus/client_model/metrics.proto

Field Type Label Description
Metrics bytes repeated

Message NetmapRequest

NetmapRequest message to request current node netmap

Field Type Label Description
Meta service.RequestMetaHeader RequestMetaHeader contains information about request meta headers (should be embedded into message)
Verify service.RequestVerificationHeader RequestVerificationHeader is a set of signatures of every NeoFS Node that processed request (should be embedded into message)

ChangeStateRequest.State

Name Number Description
Unknown 0 Unknown is default value. Does nothing.
Online 1 Online used when need to set node to the online state.
Offline 2 Offline used when need to set node to the offline state.

Scalar Value Types

.proto Type Notes C++ Type Java Type Python Type
double double double float
float float float float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long
uint32 Uses variable-length encoding. uint32 int int/long
uint64 Uses variable-length encoding. uint64 long int/long
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long
sfixed32 Always four bytes. int32 int int
sfixed64 Always eight bytes. int64 long int/long
bool bool boolean boolean
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode
bytes May contain any arbitrary sequence of bytes. string ByteString str