frostfs-api/proto-docs/netmap.md
Stanislav Bogatyrev eab2210ffe [#59] netmap: Add LocalNodeInfo request
This should be used as a handshake to know API Version supported by peer and to
update local netmap view in future.

Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
2020-09-03 12:47:23 +03:00

9.6 KiB

Protocol Documentation

Table of Contents

Top

netmap/service.proto

Service "neo.fs.v2.netmap.NetmapService"

Methods to work with NetworkMap

rpc LocalNodeInfo(LocalNodeInfoRequest) returns (LocalNodeInfoResponse);

Method LocalNodeInfo

Return information about Node

Name Input Output
LocalNodeInfo LocalNodeInfoRequest LocalNodeInfoResponse

Message LocalNodeInfoRequest

Get NodeInfo from the particular node directly

Field Type Label Description
body LocalNodeInfoRequest.Body Body of the balance request message.
meta_header neo.fs.v2.session.RequestMetaHeader Carries request meta information. Header data is used only to regulate message transport and does not affect request execution.
verify_header neo.fs.v2.session.RequestVerificationHeader Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission.

Message LocalNodeInfoRequest.Body

Request body

Message LocalNodeInfoResponse

Local nod Info, including API Version in use

Field Type Label Description
body LocalNodeInfoResponse.Body Body of the balance response message.
meta_header neo.fs.v2.session.ResponseMetaHeader Carries response meta information. Header data is used only to regulate message transport and does not affect response execution.
verify_header neo.fs.v2.session.ResponseVerificationHeader Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission.

Message LocalNodeInfoResponse.Body

Response body

Field Type Label Description
version neo.fs.v2.refs.Version API version in use
node_info NodeInfo NodeInfo from node itself

Top

netmap/types.proto

Message Filter

Filter

Field Type Label Description
name string Name of the filter or a reference to the named filter. '*' means application to the whole unfiltered NetworkMap At top level it's used as a filter name. At lower levels it's considered to be a reference to another named filter
key string Key to filter
op Operation Filtering operation
value string Value to match
filters Filter repeated List of inner filters. Top level operation will be applied to the whole list.

Message NodeInfo

NeoFS node description

Field Type Label Description
public_key bytes Public key of the NeoFS node in a binary format.
address string Ways to connect to a node
attributes NodeInfo.Attribute repeated Carries list of the NeoFS node attributes in a string key-value format.
state NodeInfo.State Carries state of the NeoFS node.

Message NodeInfo.Attribute

Attributes of the NeoFS node.

Field Type Label Description
key string Key of the node attribute.
value string Value of the node attribute.
parents string repeated Parent keys, if any Example: For City it can be Region or Country

Message PlacementPolicy

Set of rules to select a subset of nodes able to store container's objects

Field Type Label Description
replicas Replica repeated Rules to set number of object replicas and place each one into a particular bucket
container_backup_factor uint32 Container backup factor controls how deep NeoFS will search for nodes alternatives to include into container.
selectors Selector repeated Set of Selectors to form the container's nodes subset
filters Filter repeated List of named filters to reference in selectors

Message Replica

Exact bucket for each replica

Field Type Label Description
count uint32 How many object replicas to put
selector string Named selector bucket to put in

Message Selector

Selector

Field Type Label Description
name string Selector name to reference in object placement section
count uint32 How many nodes to select from bucket
attribute string Attribute bucket to select from
filter string Filter reference to select from

NodeInfo.State

Represents the enumeration of various states of the NeoFS node.

Name Number Description
UNSPECIFIED 0 Unknown state.
ONLINE 1 Active state in the network.
OFFLINE 2 Network unavailable state.

Operation

Operations on filters

Name Number Description
OPERATION_UNSPECIFIED 0 No Operation defined
EQ 1 Equal
NE 2 Not Equal
GT 3 Greater then
GE 4 Greater or equal
LT 5 Less then
LE 6 Less or equal
OR 7 Logical OR
AND 8 Logical AND

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