syntax = "proto3"; package neo.fs.v2.netmap; option go_package = "github.com/nspcc-dev/neofs-api-go/netmap;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 { // Ways to connect to a node string address = 1; // Public key of the NeoFS node in a binary format. bytes public_key = 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; }