frostfs-api/netmap/types.proto
Stanislav Bogatyrev e72dceebd3 [#62] Put NodeInfo public_key field first
To simplify decoding of NodeInfo structure inside netmap smart contract, the
first field, also used as a storage key inside contract, has to be of the fixed
length.

Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
2020-08-31 14:02:18 +03:00

126 lines
2.6 KiB
Protocol Buffer

syntax = "proto3";
package neo.fs.v2.netmap;
option go_package = "github.com/nspcc-dev/neofs-api-go/v2/netmap/grpc;netmap";
option csharp_namespace = "NeoFS.API.v2.Netmap";
// Set of rules to select a subset of nodes able to store container's objects
message PlacementPolicy {
// Replication factor
uint32 repl_factor = 1;
// Filters to apply to Network Map
message FilterGroup {
// Filter definition
message Filter {
// Filter identifier
string key = 1;
// Minimal simple filter
message SimpleFilter {
// Filtering operation
enum Operation {
// No Operation defined
OPERATION_UNSPECIFIED= 0;
// Equal
EQ = 1;
// Not Equal
NE = 2;
// Greater then
GT = 3;
// Greater or equal
GE = 4;
// Less then
LT = 5;
// Less or equal
LE = 6;
// Logical OR
OR = 7;
// Logical AND
AND = 8;
}
// Filtering operation
Operation op = 1;
// List of filters
message SimpleFilters {
// List of filters
repeated SimpleFilter filters = 1;
}
// Filtering operation argument
oneof args {
// Value
string value = 2;
// Result of other filter application
SimpleFilters f_args = 3;
}
}
// The rest of filter
SimpleFilter f = 2;
}
// Resulting filter list
repeated Filter filters = 1;
// Selector
message Selector {
// How many to select
uint32 count = 1;
// Key to select
string key = 2;
}
// List of selectors
repeated Selector selectors = 2;
// Parts of graph to exclude. Internal use.
repeated uint32 exclude = 3;
}
// List of filter groups
repeated FilterGroup filter_groups = 2;
}
// NeoFS node description
message NodeInfo {
// Public key of the NeoFS node in a binary format.
bytes public_key = 1;
// Ways to connect to a node
string address = 2;
// Attributes of the NeoFS node.
message Attribute {
// Key of the node attribute.
string key = 1;
// Value of the node attribute.
string value = 2;
}
// Carries list of the NeoFS node attributes in a string key-value format.
repeated Attribute attributes = 3;
// Represents the enumeration of various states of the NeoFS node.
enum State {
// Unknown state.
UNSPECIFIED = 0;
// Active state in the network.
ONLINE = 1;
// Network unavailable state.
OFFLINE = 2;
}
// Carries state of the NeoFS node.
State state = 4;
}