diff --git a/cmd/neofs-node/control.go b/cmd/neofs-node/control.go index 0b09ff8e..ed9a6989 100644 --- a/cmd/neofs-node/control.go +++ b/cmd/neofs-node/control.go @@ -43,6 +43,7 @@ func initControlService(c *cfg) { controlSvc.WithAuthorizedKeys(keys), controlSvc.WithHealthChecker(c), controlSvc.WithNetMapSource(c.cfgNetmap.wrapper), + controlSvc.WithNodeState(c), ) var ( diff --git a/cmd/neofs-node/netmap.go b/cmd/neofs-node/netmap.go index 2e1d2acb..f97b63cb 100644 --- a/cmd/neofs-node/netmap.go +++ b/cmd/neofs-node/netmap.go @@ -178,3 +178,20 @@ func goOffline(c *cfg) { c.log.Info("request to go offline successfully sent") } } + +func (c *cfg) SetNetmapStatus(st control.NetmapStatus) error { + if st == control.NetmapStatus_ONLINE { + return c.cfgNetmap.wrapper.AddPeer(c.cfgNodeInfo.info) + } + + var apiState netmap.NodeState + + if st == control.NetmapStatus_OFFLINE { + apiState = netmap.NodeStateOffline + } + + return c.cfgNetmap.wrapper.UpdatePeerState( + crypto.MarshalPublicKey(&c.key.PublicKey), + apiState, + ) +}