Skip to content

Commit 757b90e

Browse files
committed
ir: Add node info attribute uniqueness validation
That is the API restriction. Add this check to the `maddress` validator and rename in to `structure` validator. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
1 parent de58dd3 commit 757b90e

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

pkg/innerring/innerring.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ import (
2424
"github.com/nspcc-dev/neofs-node/pkg/innerring/processors/netmap"
2525
nodevalidator "github.com/nspcc-dev/neofs-node/pkg/innerring/processors/netmap/nodevalidation"
2626
availabilityvalidator "github.com/nspcc-dev/neofs-node/pkg/innerring/processors/netmap/nodevalidation/availability"
27-
addrvalidator "github.com/nspcc-dev/neofs-node/pkg/innerring/processors/netmap/nodevalidation/maddress"
2827
statevalidation "github.com/nspcc-dev/neofs-node/pkg/innerring/processors/netmap/nodevalidation/state"
28+
addrvalidator "github.com/nspcc-dev/neofs-node/pkg/innerring/processors/netmap/nodevalidation/structure"
2929
"github.com/nspcc-dev/neofs-node/pkg/innerring/processors/reputation"
3030
"github.com/nspcc-dev/neofs-node/pkg/innerring/processors/settlement"
3131
auditSettlement "github.com/nspcc-dev/neofs-node/pkg/innerring/processors/settlement/audit"

pkg/innerring/processors/netmap/nodevalidation/maddress/calls.go pkg/innerring/processors/netmap/nodevalidation/structure/calls.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package maddress
1+
package structure
22

33
import (
44
"fmt"
@@ -14,5 +14,12 @@ func (v *Validator) VerifyAndUpdate(n *netmap.NodeInfo) error {
1414
return fmt.Errorf("could not verify multiaddress: %w", err)
1515
}
1616

17-
return nil
17+
attrM := make(map[string]struct{}, n.NumberOfAttributes())
18+
n.IterateAttributes(func(key, _ string) {
19+
if _, alreadyHave := attrM[key]; alreadyHave {
20+
err = fmt.Errorf("repeating node attribute: '%s'", key)
21+
}
22+
})
23+
24+
return err
1825
}

pkg/innerring/processors/netmap/nodevalidation/maddress/validator.go pkg/innerring/processors/netmap/nodevalidation/structure/validator.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package maddress
1+
package structure
22

3-
// Validator is an utility that verifies node
4-
// multiaddress.
3+
// Validator is a utility that verifies announced node
4+
// structure.
55
//
66
// For correct operation, the Validator must be created
77
// using the constructor (New). After successful creation,

0 commit comments

Comments
 (0)