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

Commit 83bfc05

Browse files
committed
[FAB-10568] endpoint config refactoring
- endpoint config functions to return only required information. - network config struct fixed to match endpointconfig entities not config file structure. - separate structs for unmarshalling and for entity returns Change-Id: Iff4bc70df917371eb0cd92ba40f56ade58f68d7c Signed-off-by: Sudesh Shetty <sudesh.shetty@securekey.com>
1 parent aedc226 commit 83bfc05

File tree

30 files changed

+461
-339
lines changed

30 files changed

+461
-339
lines changed

pkg/client/resmgmt/resmgmt_test.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,8 +1272,8 @@ func getNoOrdererBackend(backend ...core.ConfigBackend) *mocks.MockConfigBackend
12721272
func getInvalidChannelOrdererBackend(backend ...core.ConfigBackend) *mocks.MockConfigBackend {
12731273

12741274
//Create an invalid channel
1275-
channels := make(map[string]fab.ChannelNetworkConfig)
1276-
mychannel := fab.ChannelNetworkConfig{
1275+
channels := make(map[string]fabImpl.ChannelEndpointConfig)
1276+
mychannel := fabImpl.ChannelEndpointConfig{
12771277
Orderers: []string{"invalid.orderer.com"},
12781278
}
12791279
channels["mychannel"] = mychannel
@@ -1287,7 +1287,7 @@ func getInvalidChannelOrdererBackend(backend ...core.ConfigBackend) *mocks.MockC
12871287
func getInvalidOrdererBackend(backend ...core.ConfigBackend) *mocks.MockConfigBackend {
12881288

12891289
//Create invalid orderer
1290-
networkConfig := fab.NetworkConfig{}
1290+
networkConfig := endpointConfigEntity{}
12911291
err := lookup.New(backend...).UnmarshalKey("orderers", &networkConfig.Orderers)
12921292
if err != nil {
12931293
panic(err)
@@ -1306,7 +1306,7 @@ func getInvalidOrdererBackend(backend ...core.ConfigBackend) *mocks.MockConfigBa
13061306
func getNoEventSourceBackend(backend ...core.ConfigBackend) *mocks.MockConfigBackend {
13071307

13081308
//Create no event source channels
1309-
networkConfig := fab.NetworkConfig{}
1309+
networkConfig := endpointConfigEntity{}
13101310
err := lookup.New(backend...).UnmarshalKey("channels", &networkConfig.Channels)
13111311
if err != nil {
13121312
panic(err)
@@ -1339,3 +1339,9 @@ EDAKBggqhkjOPQQDAgNHADBEAiAHp5Rbp9Em1G/UmKn8WsCbqDfWecVbZPQj3RK4
13391339
oG5kQQIgQAe4OOKYhJdh3f7URaKfGTf492/nmRmtK+ySKjpHSrU=
13401340
-----END CERTIFICATE-----
13411341
`
1342+
1343+
//endpointConfigEntity contains endpoint config elements needed by endpointconfig
1344+
type endpointConfigEntity struct {
1345+
Orderers map[string]fabImpl.OrdererConfig
1346+
Channels map[string]fabImpl.ChannelEndpointConfig
1347+
}

pkg/common/providers/fab/network.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,24 @@ SPDX-License-Identifier: Apache-2.0
77
package fab
88

99
import (
10+
"crypto/x509"
11+
1012
"github.com/hyperledger/fabric-sdk-go/pkg/common/errors/retry"
11-
"github.com/hyperledger/fabric-sdk-go/pkg/core/config/endpoint"
1213
)
1314

1415
// NetworkConfig provides a static definition of endpoint configuration network
1516
type NetworkConfig struct {
1617
Name string
1718
Description string
1819
Version string
19-
Channels map[string]ChannelNetworkConfig
20+
Channels map[string]ChannelEndpointConfig
2021
Organizations map[string]OrganizationConfig
2122
Orderers map[string]OrdererConfig
2223
Peers map[string]PeerConfig
2324
}
2425

25-
// ChannelNetworkConfig provides the definition of channels for the network
26-
type ChannelNetworkConfig struct {
26+
// ChannelEndpointConfig provides the definition of channels for the network
27+
type ChannelEndpointConfig struct {
2728
// Orderers list of ordering service nodes
2829
Orderers []string
2930
// Peers a list of peer-channels that are part of this organization
@@ -70,7 +71,7 @@ type NetworkPeer struct {
7071
type OrganizationConfig struct {
7172
MSPID string
7273
CryptoPath string
73-
Users map[string]endpoint.TLSKeyPair
74+
Users map[string]CertKeyPair
7475
Peers []string
7576
CertificateAuthorities []string
7677
}
@@ -79,15 +80,15 @@ type OrganizationConfig struct {
7980
type OrdererConfig struct {
8081
URL string
8182
GRPCOptions map[string]interface{}
82-
TLSCACerts endpoint.TLSConfig
83+
TLSCACert *x509.Certificate
8384
}
8485

8586
// PeerConfig defines a peer configuration
8687
type PeerConfig struct {
8788
URL string
8889
EventURL string
8990
GRPCOptions map[string]interface{}
90-
TLSCACerts endpoint.TLSConfig
91+
TLSCACert *x509.Certificate
9192
}
9293

9394
// MatchConfig contains match pattern and substitution pattern
@@ -104,3 +105,9 @@ type MatchConfig struct {
104105
// this is used for Name mapping instead of hostname mappings
105106
MappedName string
106107
}
108+
109+
// CertKeyPair contains the private key and certificate
110+
type CertKeyPair struct {
111+
Cert []byte
112+
Key []byte
113+
}

pkg/common/providers/fab/provider.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ type EndpointConfig interface {
8484
PeerConfig(nameOrURL string) (*PeerConfig, bool)
8585
NetworkConfig() *NetworkConfig
8686
NetworkPeers() []NetworkPeer
87-
ChannelConfig(name string) (*ChannelNetworkConfig, bool)
87+
ChannelConfig(name string) (*ChannelEndpointConfig, bool)
8888
ChannelPeers(name string) ([]ChannelPeer, bool)
8989
ChannelOrderers(name string) ([]OrdererConfig, bool)
9090
TLSCACertPool(certConfig ...*x509.Certificate) (*x509.CertPool, error)

pkg/common/providers/test/mockfab/mockfab.gen.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/core/config/endpoint/endpoint.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,15 @@ type MutualTLSConfig struct {
6565
}
6666

6767
// TLSKeyPair contains the private key and certificate for TLS encryption
68+
//TODO to be removed from here, instead 'TLSKeyCertPair' should be used
69+
//deprecated
6870
type TLSKeyPair struct {
6971
Key TLSConfig
7072
Cert TLSConfig
7173
}
7274

7375
// TLSConfig TLS configuration used in the sdk's configs.
76+
//deprecated
7477
type TLSConfig struct {
7578
// the following two fields are interchangeable.
7679
// If Path is available, then it will be used to load the cert

pkg/core/config/lookup/lookup_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ type networkConfig struct {
4242
Description string
4343
Version string
4444
Client msp.ClientConfig
45-
Channels map[string]fab.ChannelNetworkConfig
45+
Channels map[string]fab.ChannelEndpointConfig
4646
Organizations map[string]fab.OrganizationConfig
4747
Orderers map[string]fab.OrdererConfig
4848
Peers map[string]fab.PeerConfig

pkg/fab/channel/transactor_test.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ func TestOrderersURLOverride(t *testing.T) {
166166

167167
//Override orderer URL in endpoint config
168168
//Create an empty network config
169-
networkConfig := fab.NetworkConfig{}
169+
networkConfig := endpointConfigEntity{}
170170
err = lookup.New(configBackends...).UnmarshalKey("orderers", &networkConfig.Orderers)
171171
if err != nil {
172172
t.Fatal("failed to unmarshal orderer")
@@ -182,7 +182,7 @@ func TestOrderersURLOverride(t *testing.T) {
182182
backends = append(backends, configBackends...)
183183
endpointCfg, err := fabImpl.ConfigFromBackend(backends...)
184184
if err != nil {
185-
t.Fatal("failed to get endpoint config")
185+
t.Fatal("failed to get endpoint config", err)
186186
}
187187

188188
user := mspmocks.NewMockSigningIdentity("test", "test")
@@ -197,3 +197,11 @@ func TestOrderersURLOverride(t *testing.T) {
197197
assert.Equal(t, 1, len(o), "expected one orderer from response orderers list")
198198
assert.Equal(t, sampleOrdererURL, o[0].URL(), "orderer URL override from endpointconfig channels is not working as expected")
199199
}
200+
201+
//endpointConfigEntity contains endpoint config elements needed by endpointconfig
202+
type endpointConfigEntity struct {
203+
Channels map[string]fab.ChannelEndpointConfig
204+
Organizations map[string]fabImpl.OrganizationConfig
205+
Orderers map[string]fabImpl.OrdererConfig
206+
Peers map[string]fabImpl.PeerConfig
207+
}

pkg/fab/chconfig/chconfig.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,19 +247,19 @@ func (c *ChannelConfig) resolveOptsFromConfig(ctx context.Client) error {
247247
return nil
248248
}
249249

250-
func (c *ChannelConfig) resolveMaxResponsesOptsFromConfig(chSdkCfg *fab.ChannelNetworkConfig) {
250+
func (c *ChannelConfig) resolveMaxResponsesOptsFromConfig(chSdkCfg *fab.ChannelEndpointConfig) {
251251
if c.opts.MaxTargets == 0 && &chSdkCfg.Policies != nil && &chSdkCfg.Policies.QueryChannelConfig != nil {
252252
c.opts.MaxTargets = chSdkCfg.Policies.QueryChannelConfig.MaxTargets
253253
}
254254
}
255255

256-
func (c *ChannelConfig) resolveMinResponsesOptsFromConfig(chSdkCfg *fab.ChannelNetworkConfig) {
256+
func (c *ChannelConfig) resolveMinResponsesOptsFromConfig(chSdkCfg *fab.ChannelEndpointConfig) {
257257
if c.opts.MinResponses == 0 && &chSdkCfg.Policies != nil && &chSdkCfg.Policies.QueryChannelConfig != nil {
258258
c.opts.MinResponses = chSdkCfg.Policies.QueryChannelConfig.MinResponses
259259
}
260260
}
261261

262-
func (c *ChannelConfig) resolveRetryOptsFromConfig(chSdkCfg *fab.ChannelNetworkConfig) {
262+
func (c *ChannelConfig) resolveRetryOptsFromConfig(chSdkCfg *fab.ChannelEndpointConfig) {
263263
if c.opts.RetryOpts.RetryableCodes == nil {
264264
if c.opts.RetryOpts.RetryableCodes == nil && &chSdkCfg.Policies != nil && &chSdkCfg.Policies.QueryChannelConfig != nil {
265265
c.opts.RetryOpts = chSdkCfg.Policies.QueryChannelConfig.RetryOpts

pkg/fab/chconfig/chconfig_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func TestChannelConfigWithPeerWithRetries(t *testing.T) {
6868
defRetryOpts.InitialBackoff = 5 * time.Millisecond
6969
defRetryOpts.BackoffFactor = 1.0
7070

71-
chConfig := &fab.ChannelNetworkConfig{
71+
chConfig := &fab.ChannelEndpointConfig{
7272
Policies: fab.ChannelPolicies{QueryChannelConfig: fab.QueryChannelConfigPolicy{
7373
MinResponses: 2,
7474
MaxTargets: 1, //Ignored since we pass targets
@@ -182,7 +182,7 @@ func TestResolveOptsFromConfig(t *testing.T) {
182182

183183
defRetryOpts := retry.DefaultOpts
184184

185-
chConfig := &fab.ChannelNetworkConfig{
185+
chConfig := &fab.ChannelEndpointConfig{
186186
Policies: fab.ChannelPolicies{QueryChannelConfig: fab.QueryChannelConfigPolicy{
187187
MinResponses: 8,
188188
MaxTargets: 9,
@@ -340,11 +340,11 @@ func (pp *mockProposalProcessor) ProcessTransactionProposal(reqCtx reqContext.Co
340340
//customMockConfig to mock config to override channel configuration options
341341
type customMockConfig struct {
342342
*mocks.MockConfig
343-
chConfig *fab.ChannelNetworkConfig
343+
chConfig *fab.ChannelEndpointConfig
344344
called bool
345345
}
346346

347-
func (c *customMockConfig) ChannelConfig(name string) (*fab.ChannelNetworkConfig, bool) {
347+
func (c *customMockConfig) ChannelConfig(name string) (*fab.ChannelEndpointConfig, bool) {
348348
c.called = true
349349
return c.chConfig, true
350350
}

pkg/fab/comm/connectionopts.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -146,23 +146,19 @@ type connectTimeoutSetter interface {
146146
}
147147

148148
// OptsFromPeerConfig returns a set of connection options from the given peer config
149-
func OptsFromPeerConfig(peerCfg *fab.PeerConfig) ([]options.Opt, error) {
150-
certificate, _, err := peerCfg.TLSCACerts.TLSCert()
151-
if err != nil {
152-
return nil, err
153-
}
149+
func OptsFromPeerConfig(peerCfg *fab.PeerConfig) []options.Opt {
154150

155151
opts := []options.Opt{
156152
WithHostOverride(getServerNameOverride(peerCfg)),
157153
WithFailFast(getFailFast(peerCfg)),
158154
WithKeepAliveParams(getKeepAliveOptions(peerCfg)),
159-
WithCertificate(certificate),
155+
WithCertificate(peerCfg.TLSCACert),
160156
}
161157
if isInsecureAllowed(peerCfg) {
162158
opts = append(opts, WithInsecure())
163159
}
164160

165-
return opts, nil
161+
return opts
166162
}
167163

168164
func getServerNameOverride(peerCfg *fab.PeerConfig) string {

0 commit comments

Comments
 (0)