forked from TrueCloudLab/frostfs-api
eab2210ffe
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>
9.6 KiB
9.6 KiB
Protocol Documentation
Table of Contents
-
Services
-
Messages
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 |
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 |