From 22926e8f288ee4b7681e904f310f2e986a9f263f Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Mon, 6 Sep 2021 15:05:04 +0300 Subject: [PATCH] [#645] placement/traverser: Extend Node type with public key There is a need to process public keys of the placement result. Implement `Node.PublicKey` method which returns storage node's key announced in netmap. Signed-off-by: Leonard Lyubich --- pkg/services/object_manager/placement/traverser.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/services/object_manager/placement/traverser.go b/pkg/services/object_manager/placement/traverser.go index 2bf184332..a1be3d876 100644 --- a/pkg/services/object_manager/placement/traverser.go +++ b/pkg/services/object_manager/placement/traverser.go @@ -122,6 +122,8 @@ func flatNodes(ns []netmap.Nodes) []netmap.Nodes { // Node is a descriptor of storage node with information required for intra-container communication. type Node struct { addresses network.AddressGroup + + key []byte } // Addresses returns group of network addresses. @@ -129,6 +131,11 @@ func (x Node) Addresses() network.AddressGroup { return x.addresses } +// Key returns public key in a binary format. Should not be mutated. +func (x Node) Key() []byte { + return x.key +} + // Next returns next unprocessed address of the object placement. // // Returns nil if no nodes left or traversal operation succeeded. @@ -157,6 +164,8 @@ func (t *Traverser) Next() []Node { // TODO: log error return nil } + + nodes[i].key = t.vectors[0][i].PublicKey() } t.vectors[0] = t.vectors[0][count:]