diff --git a/pkg/morph/event/netmap/update_peer.go b/pkg/morph/event/netmap/update_peer.go index d83da6a50..2eb61048d 100644 --- a/pkg/morph/event/netmap/update_peer.go +++ b/pkg/morph/event/netmap/update_peer.go @@ -16,6 +16,7 @@ import ( const ( _ int8 = iota stateOnline + stateMaintenance ) type UpdatePeer struct { @@ -31,10 +32,18 @@ type UpdatePeer struct { // MorphEvent implements Neo:Morph Event interface. func (UpdatePeer) MorphEvent() {} +// Online returns true if node's state is requested to be switched +// to "online". func (s UpdatePeer) Online() bool { return s.state == stateOnline } +// Maintenance returns true if node's state is requested to be switched +// to "maintenance". +func (s UpdatePeer) Maintenance() bool { + return s.state == stateMaintenance +} + func (s UpdatePeer) PublicKey() *keys.PublicKey { return s.publicKey } @@ -85,6 +94,8 @@ func ParseUpdatePeer(e *state.ContainedNotificationEvent) (event.Event, error) { case int64(netmap.OfflineState): case int64(netmap.OnlineState): ev.state = stateOnline + case int64(netmap.OfflineState) + 1: // FIXME: use named constant after neofs-contract#269 + ev.state = stateMaintenance } return ev, nil diff --git a/pkg/morph/event/netmap/update_peer_notary.go b/pkg/morph/event/netmap/update_peer_notary.go index 1c1b8b361..eb780895d 100644 --- a/pkg/morph/event/netmap/update_peer_notary.go +++ b/pkg/morph/event/netmap/update_peer_notary.go @@ -7,7 +7,7 @@ import ( "github.com/nspcc-dev/neo-go/pkg/crypto/keys" "github.com/nspcc-dev/neo-go/pkg/vm/opcode" - v2netmap "github.com/nspcc-dev/neofs-api-go/v2/netmap" + "github.com/nspcc-dev/neofs-contract/netmap" "github.com/nspcc-dev/neofs-node/pkg/morph/event" ) @@ -61,12 +61,14 @@ func ParseUpdatePeerNotary(ne event.NotaryEvent) (event.Event, error) { return nil, err } - switch v2netmap.NodeState(state) { + switch state { default: return nil, fmt.Errorf("unsupported node state %d", err) - case v2netmap.Offline: - case v2netmap.Online: + case int64(netmap.OfflineState): + case int64(netmap.OnlineState): ev.state = stateOnline + case int64(netmap.OfflineState) + 1: // FIXME: use named constant after neofs-contract#269 + ev.state = stateMaintenance } fieldNum++