From 6b99f2a0df9562ad764dd0a5db768d29bc6545fb Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Mon, 19 Sep 2022 20:00:00 +0400 Subject: [PATCH] [#1680] ir/netmap: Correlate node's state with network settings Inner Ring should allow registering of storage nodes with `MAINTENANCE` state in the NeoFS network only if its configuration allows this status. Make `networkSettings.MaintenanceModeAllowed` to call `MaintenanceModeAllowed` method of underlying Netmap contract's client in order to assert state allowance. From now nodes will be accepted to the network with `MAINTENANCE` state only with the appropriate network configuration. Signed-off-by: Leonard Lyubich --- pkg/innerring/netmap.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/innerring/netmap.go b/pkg/innerring/netmap.go index 1df6848cc..03b13b053 100644 --- a/pkg/innerring/netmap.go +++ b/pkg/innerring/netmap.go @@ -1,6 +1,8 @@ package innerring import ( + "fmt" + "github.com/nspcc-dev/neofs-node/pkg/innerring/processors/netmap/nodevalidation/state" netmapclient "github.com/nspcc-dev/neofs-node/pkg/morph/client/netmap" ) @@ -16,5 +18,12 @@ type networkSettings netmapclient.Client // and check allowance of storage node's maintenance mode according to it. // Always returns state.ErrMaintenanceModeDisallowed. func (s *networkSettings) MaintenanceModeAllowed() error { + allowed, err := (*netmapclient.Client)(s).MaintenanceModeAllowed() + if err != nil { + return fmt.Errorf("read maintenance mode's allowance from the Sidechain: %w", err) + } else if allowed { + return nil + } + return state.ErrMaintenanceModeDisallowed }