forked from TrueCloudLab/frostfs-api
e72dceebd3
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>
126 lines
2.6 KiB
Protocol Buffer
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;
|
|
}
|