forked from TrueCloudLab/frostfs-node
[#705] pkg/innerring: Add IR keys fetchers
Add `IrFetcherWithNotary` and `IrFetcherWithoutNotary` that can fetch IR keys with and without usage of notary contract. Both can be hidden behind `InnerRingKeys() (keys.PublicKeys, error)` interface. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>support/v0.27
parent
8ea5744326
commit
8e66c67a74
|
@ -0,0 +1,58 @@
|
|||
package innerring
|
||||
|
||||
import (
|
||||
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/morph/client"
|
||||
nmWrapper "github.com/nspcc-dev/neofs-node/pkg/morph/client/netmap/wrapper"
|
||||
)
|
||||
|
||||
// NewIRFetcherWithNotary creates IrFetcherWithNotary.
|
||||
//
|
||||
// IrFetcherWithNotary can be used to obtain innerring key list if
|
||||
// network that client is connected to supports notary contract.
|
||||
//
|
||||
// Passed client is required. Panics if nil.
|
||||
func NewIRFetcherWithNotary(cli *client.Client) *IrFetcherWithNotary {
|
||||
if cli == nil {
|
||||
panic("could not init IRFetcher with notary: client must not be nil")
|
||||
}
|
||||
return &IrFetcherWithNotary{cli: cli}
|
||||
}
|
||||
|
||||
// NewIRFetcherWithoutNotary creates IrFetcherWithoutNotary.
|
||||
//
|
||||
// IrFetcherWithoutNotary must be used to obtain innerring key list if
|
||||
// network that netmap wrapper is connected to does not support notary
|
||||
// contract.
|
||||
//
|
||||
// Passed netmap wrapper is required. Panics if nil.
|
||||
func NewIRFetcherWithoutNotary(nm *nmWrapper.Wrapper) *IrFetcherWithoutNotary {
|
||||
if nm == nil {
|
||||
panic("could not init IRFetcher without notary: netmap wrapper must not be nil")
|
||||
}
|
||||
return &IrFetcherWithoutNotary{nm: nm}
|
||||
}
|
||||
|
||||
// IrFetcherWithNotary fetches keys using notary contract. Must be created
|
||||
// with NewIRFetcherWithNotary.
|
||||
type IrFetcherWithNotary struct {
|
||||
cli *client.Client
|
||||
}
|
||||
|
||||
// IrFetcherWithoutNotary fetches keys using netmap contract. Must be created
|
||||
// with NewIRFetcherWithoutNotary.
|
||||
type IrFetcherWithoutNotary struct {
|
||||
nm *nmWrapper.Wrapper
|
||||
}
|
||||
|
||||
// InnerRingKeys fetches list of innerring keys from NeoFSAlphabet
|
||||
// role in side chain.
|
||||
func (fN IrFetcherWithNotary) InnerRingKeys() (keys.PublicKeys, error) {
|
||||
return fN.cli.NeoFSAlphabetList()
|
||||
}
|
||||
|
||||
// InnerRingKeys fetches list of innerring keys from netmap contract
|
||||
// in side chain.
|
||||
func (f IrFetcherWithoutNotary) InnerRingKeys() (keys.PublicKeys, error) {
|
||||
return f.nm.GetInnerRingList()
|
||||
}
|
Loading…
Reference in New Issue