package sdkInit import ( "fmt" "github.com/hyperledger/fabric-sdk-go/pkg/common/errors/retry" "github.com/hyperledger/fabric-sdk-go/pkg/common/errors/status" contextAPI "github.com/hyperledger/fabric-sdk-go/pkg/common/providers/context" fabAPI "github.com/hyperledger/fabric-sdk-go/pkg/common/providers/fab" contextImpl "github.com/hyperledger/fabric-sdk-go/pkg/context" ) func DiscoverLocalPeers(ctxProvider contextAPI.ClientProvider, expectedPeers int) ([]fabAPI.Peer, error) { ctx, err := contextImpl.NewLocal(ctxProvider) if err != nil { return nil, fmt.Errorf("error creating local context: %v", err) } discoveredPeers, err := retry.NewInvoker(retry.New(retry.TestRetryOpts)).Invoke( func() (interface{}, error) { peers, serviceErr := ctx.LocalDiscoveryService().GetPeers() if serviceErr != nil { return nil, fmt.Errorf("getting peers for MSP [%s] error: %v", ctx.Identifier().MSPID, serviceErr) } if len(peers) < expectedPeers { return nil, status.New(status.TestStatus, status.GenericTransient.ToInt32(), fmt.Sprintf("Expecting %d peers but got %d", expectedPeers, len(peers)), nil) } return peers, nil }, ) if err != nil { return nil, err } return discoveredPeers.([]fabAPI.Peer), nil }