forked from TrueCloudLab/frostfs-node
38 lines
853 B
Go
38 lines
853 B
Go
|
package wrapper
|
||
|
|
||
|
import (
|
||
|
"github.com/nspcc-dev/neofs-node/pkg/core/netmap"
|
||
|
contract "github.com/nspcc-dev/neofs-node/pkg/morph/client/netmap"
|
||
|
"github.com/pkg/errors"
|
||
|
)
|
||
|
|
||
|
// AddPeer registers peer in NeoFS network through
|
||
|
// Netmap contract call.
|
||
|
func (w *Wrapper) AddPeer(nodeInfo netmap.Info) error {
|
||
|
// prepare invocation arguments
|
||
|
args := contract.AddPeerArgs{}
|
||
|
|
||
|
info := contract.PeerInfo{}
|
||
|
info.SetPublicKey(nodeInfo.PublicKey())
|
||
|
info.SetAddress([]byte(nodeInfo.Address()))
|
||
|
|
||
|
opts := nodeInfo.Options()
|
||
|
binOpts := make([][]byte, 0, len(opts))
|
||
|
|
||
|
for i := range opts {
|
||
|
binOpts = append(binOpts, []byte(opts[i]))
|
||
|
}
|
||
|
|
||
|
info.SetOptions(binOpts)
|
||
|
|
||
|
args.SetInfo(info)
|
||
|
|
||
|
// invoke smart contract call
|
||
|
//
|
||
|
// Note: errors.Wrap returns nil on nil error arg.
|
||
|
return errors.Wrap(
|
||
|
w.client.AddPeer(args),
|
||
|
"could not invoke smart contract",
|
||
|
)
|
||
|
}
|