Skip to content
This repository was archived by the owner on Apr 25, 2025. It is now read-only.

Commit 5d117af

Browse files
committed
[FAB-8571] ledger to use channelcontext
- ledger client to use channel context - removed ChannelLedger interface - removed CreateChannelLedger() from InfraProvider Change-Id: Iba16e8005aef49719660da829391f10b615464b0 Signed-off-by: Sudesh Shetty <sudesh.shetty@securekey.com>
1 parent fd0faf2 commit 5d117af

File tree

10 files changed

+30
-58
lines changed

10 files changed

+30
-58
lines changed

pkg/client/ledger/ledger.go

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ import (
1414
"github.com/golang/protobuf/proto"
1515
"github.com/hyperledger/fabric-sdk-go/pkg/common/context"
1616
"github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab"
17-
"github.com/hyperledger/fabric-sdk-go/pkg/fab/channel"
1817
"github.com/hyperledger/fabric-sdk-go/pkg/fab/chconfig"
1918
"github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/common"
2019
pb "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/peer"
2120

21+
"github.com/hyperledger/fabric-sdk-go/pkg/fab/channel"
2222
"github.com/hyperledger/fabric-sdk-go/pkg/logging"
2323
"github.com/pkg/errors"
2424
)
@@ -35,11 +35,9 @@ const (
3535
// An application that requires interaction with multiple channels should create a separate
3636
// instance of the ledger client for each channel. Ledger client supports specific queries only.
3737
type Client struct {
38-
context context.Client
39-
discovery fab.DiscoveryService
40-
ledger *channel.Ledger
41-
filter TargetFilter
42-
chName string
38+
context context.Channel
39+
filter TargetFilter
40+
ledger *channel.Ledger
4341
}
4442

4543
// MSPFilter is default filter
@@ -53,28 +51,21 @@ func (f *MSPFilter) Accept(peer fab.Peer) bool {
5351
}
5452

5553
// New returns a Client instance.
56-
func New(clientProvider context.ClientProvider, channelID string, opts ...ClientOption) (*Client, error) {
57-
58-
clientContext, err := clientProvider()
59-
if err != nil {
60-
return nil, err
61-
}
54+
func New(channelProvider context.ChannelProvider, opts ...ClientOption) (*Client, error) {
6255

63-
l, err := channel.NewLedger(clientContext, channelID)
56+
channelContext, err := channelProvider()
6457
if err != nil {
6558
return nil, err
6659
}
6760

68-
discoveryService, err := clientContext.DiscoveryProvider().CreateDiscoveryService(channelID)
61+
ledger, err := channel.NewLedger(channelContext, channelContext.ChannelID())
6962
if err != nil {
7063
return nil, err
7164
}
7265

7366
ledgerClient := Client{
74-
context: clientContext,
75-
discovery: discoveryService,
76-
ledger: l,
77-
chName: channelID,
67+
context: channelContext,
68+
ledger: ledger,
7869
}
7970

8071
for _, opt := range opts {
@@ -87,10 +78,10 @@ func New(clientProvider context.ClientProvider, channelID string, opts ...Client
8778
// check if target filter was set - if not set the default
8879
if ledgerClient.filter == nil {
8980
// Default target filter is based on user msp
90-
if clientContext.MspID() == "" {
81+
if channelContext.MspID() == "" {
9182
return nil, errors.New("mspID not available in user context")
9283
}
93-
filter := &MSPFilter{mspID: clientContext.MspID()}
84+
filter := &MSPFilter{mspID: channelContext.MspID()}
9485
ledgerClient.filter = filter
9586
}
9687

@@ -278,7 +269,7 @@ func (c *Client) QueryConfig(options ...RequestOption) (fab.ChannelCfg, error) {
278269
return nil, errors.WithMessage(err, "failed to determine target peers for QueryConfig")
279270
}
280271

281-
channelConfig, err := chconfig.New(c.context, c.chName, chconfig.WithPeers(targets), chconfig.WithMinResponses(opts.MinTargets))
272+
channelConfig, err := chconfig.New(c.context, c.context.ChannelID(), chconfig.WithPeers(targets), chconfig.WithMinResponses(opts.MinTargets))
282273
if err != nil {
283274
return nil, errors.WithMessage(err, "QueryConfig failed")
284275
}
@@ -327,7 +318,7 @@ func (c *Client) calculateTargets(opts Opts) ([]fab.Peer, error) {
327318
var err error
328319
if targets == nil {
329320
// Retrieve targets from discovery
330-
targets, err = c.discovery.GetPeers()
321+
targets, err = c.context.DiscoveryService().GetPeers()
331322
if err != nil {
332323
return nil, err
333324
}

pkg/common/context/context.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ type Channel interface {
3131
DiscoveryService() fab.DiscoveryService
3232
SelectionService() fab.SelectionService
3333
ChannelService() fab.ChannelService
34+
ChannelID() string
3435
}
3536

3637
//ClientProvider returns client context

pkg/context/api/fab/channel.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,8 @@ package fab
99
import (
1010
"github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/common"
1111
mspCfg "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/msp"
12-
pb "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/peer"
1312
)
1413

15-
// ChannelLedger provides access to the underlying ledger for a channel.
16-
type ChannelLedger interface {
17-
QueryInfo(targets []ProposalProcessor) ([]*BlockchainInfoResponse, error)
18-
QueryBlock(blockNumber int, targets []ProposalProcessor) ([]*common.Block, error)
19-
QueryBlockByHash(blockHash []byte, targets []ProposalProcessor) ([]*common.Block, error)
20-
QueryTransaction(transactionID TransactionID, targets []ProposalProcessor) ([]*pb.ProcessedTransaction, error)
21-
QueryInstantiatedChaincodes(targets []ProposalProcessor) ([]*pb.ChaincodeQueryResponse, error)
22-
QueryConfigBlock(targets []ProposalProcessor, minResponses int) (*common.ConfigEnvelope, error) // TODO: generalize minResponses
23-
}
24-
2514
// OrgAnchorPeer contains information about an anchor peer on this channel
2615
type OrgAnchorPeer struct {
2716
Org string

pkg/context/api/fab/provider.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ type ClientContext interface {
2828

2929
// InfraProvider enables access to fabric objects such as peer and user based on config or
3030
type InfraProvider interface {
31-
CreateChannelLedger(ic msp.Identity, name string) (ChannelLedger, error)
3231
CreateChannelConfig(user msp.Identity, name string) (ChannelConfig, error)
3332
CreateChannelTransactor(ic msp.Identity, cfg ChannelCfg) (Transactor, error)
3433
CreateChannelMembership(cfg ChannelCfg) (ChannelMembership, error)

pkg/context/context.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type Channel struct {
3030
discovery fab.DiscoveryService
3131
selection fab.SelectionService
3232
channelService fab.ChannelService
33+
channelID string
3334
}
3435

3536
//Providers returns core providers
@@ -52,6 +53,11 @@ func (c *Channel) ChannelService() fab.ChannelService {
5253
return c.channelService
5354
}
5455

56+
//ChannelID returns channel id
57+
func (c *Channel) ChannelID() string {
58+
return c.channelID
59+
}
60+
5561
//Provider implementation for Providers interface
5662
type Provider struct {
5763
config core.Config
@@ -216,6 +222,7 @@ func NewChannel(clientProvider context.ClientProvider, channelID string) (*Chann
216222
selection: selectionService,
217223
discovery: discoveryService,
218224
channelService: channelService,
225+
channelID: channelID,
219226
}, nil
220227
}
221228

pkg/fab/mocks/mockfabricprovider.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@ type MockInfraProvider struct {
2121
customOrderer fab.Orderer
2222
}
2323

24-
// CreateChannelLedger returns a new client initialized for the current instance of the SDK.
25-
func (f *MockInfraProvider) CreateChannelLedger(ic msp.Identity, channelName string) (fab.ChannelLedger, error) {
26-
return nil, nil
27-
}
28-
2924
// CreateEventService creates the event service.
3025
func (f *MockInfraProvider) CreateEventService(ic fab.ClientContext, chConfig fab.ChannelCfg) (fab.EventService, error) {
3126
panic("not implemented")

pkg/fabsdk/provider/fabpvdr/fabpvdr.go

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -94,20 +94,6 @@ func (f *InfraProvider) CommManager() fab.CommManager {
9494
return f.commManager
9595
}
9696

97-
// CreateChannelLedger returns a new client initialized for the current instance of the SDK.
98-
func (f *InfraProvider) CreateChannelLedger(ic msp.Identity, channelName string) (fab.ChannelLedger, error) {
99-
ctx := &fabContext{
100-
Providers: f.providerContext,
101-
Identity: ic,
102-
}
103-
ledger, err := channelImpl.NewLedger(ctx, channelName)
104-
if err != nil {
105-
return nil, errors.WithMessage(err, "NewLedger failed")
106-
}
107-
108-
return ledger, nil
109-
}
110-
11197
// CreateEventService creates the event service.
11298
func (f *InfraProvider) CreateEventService(ctx fab.ClientContext, chConfig fab.ChannelCfg) (fab.EventService, error) {
11399
key, err := NewCacheKey(ctx, chConfig)

test/integration/fab/channel_ledger_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,11 @@ func TestLedgerQueries(t *testing.T) {
7373
}
7474

7575
//prepare required contexts
76-
clientCtx := sdk.Context(fabsdk.WithUser("Admin"), fabsdk.WithOrg(orgName))
76+
7777
channelClientCtx := sdk.ChannelContext(channelID, fabsdk.WithUser("Admin"), fabsdk.WithOrg(orgName))
7878

7979
// Get a ledger client.
80-
ledgerClient, err := ledger.New(clientCtx, channelID)
80+
ledgerClient, err := ledger.New(channelClientCtx)
8181

8282
// Test Query Info - retrieve values before transaction
8383
testTargets := targets[0:1]
@@ -112,6 +112,9 @@ func TestLedgerQueries(t *testing.T) {
112112

113113
testQueryBlock(t, ledgerClient, targets)
114114

115+
//prepare context
116+
clientCtx := sdk.Context(fabsdk.WithUser("Admin"), fabsdk.WithOrg(orgName))
117+
115118
resmgmtClient, err := resmgmt.New(clientCtx)
116119

117120
testInstantiatedChaincodes(t, chaincodeID, channelID, resmgmtClient, targets)

test/integration/orgs/multiple_orgs_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ func testWithOrg1(t *testing.T, sdk *fabsdk.FabricSDK) int {
7474
ordererClientContext := sdk.Context(fabsdk.WithUser(ordererAdminUser), fabsdk.WithOrg(ordererOrgName))
7575
org1AdminClientContext := sdk.Context(fabsdk.WithUser(org1AdminUser), fabsdk.WithOrg(org1))
7676
org2AdminClientContext := sdk.Context(fabsdk.WithUser(org2AdminUser), fabsdk.WithOrg(org2))
77+
org1AdminChannelContext := sdk.ChannelContext(channelID, fabsdk.WithUser(org1AdminUser), fabsdk.WithOrg(org1))
7778
org1ChannelClientContext := sdk.ChannelContext(channelID, fabsdk.WithUser(org1User), fabsdk.WithOrg(org1))
7879
org2ChannelClientContext := sdk.ChannelContext(channelID, fabsdk.WithUser(org2User), fabsdk.WithOrg(org2))
7980

@@ -196,7 +197,7 @@ func testWithOrg1(t *testing.T, sdk *fabsdk.FabricSDK) int {
196197
initial, _ := strconv.Atoi(string(response.Payload))
197198

198199
// Ledger client will verify blockchain info
199-
ledgerClient, err := ledger.New(org1AdminClientContext, channelID)
200+
ledgerClient, err := ledger.New(org1AdminChannelContext)
200201

201202
if err != nil {
202203
t.Fatalf("Failed to create new ledger client: %s", err)

test/integration/sdk/ledger_queries_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ func TestLedgerClientQueries(t *testing.T) {
4141
//}
4242

4343
//prepare contexts
44-
org1AdminClientContext := sdk.Context(fabsdk.WithUser(org1AdminUser), fabsdk.WithOrg(org1Name))
44+
org1AdminChannelContext := sdk.ChannelContext(testSetup.ChannelID, fabsdk.WithUser(org1AdminUser), fabsdk.WithOrg(org1Name))
4545

4646
// Ledger client
47-
client, err := ledger.New(org1AdminClientContext, testSetup.ChannelID)
47+
client, err := ledger.New(org1AdminChannelContext)
4848
if err != nil {
4949
t.Fatalf("Failed to create new resource management client: %s", err)
5050
}

0 commit comments

Comments
 (0)