Skip to content

Commit

Permalink
[FAB-6406] Convert to errors package
Browse files Browse the repository at this point in the history
This change adds an errors package and changes
error generation in the SDK to use this package.

Change-Id: Ibb05609278cf80ad02f7409ae637c098b834a37b
Signed-off-by: Troy Ronda <troy@troyronda.com>
  • Loading branch information
troyronda committed Oct 4, 2017
1 parent 3eae44a commit 4c04c1c
Show file tree
Hide file tree
Showing 69 changed files with 880 additions and 698 deletions.
11 changes: 7 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,11 @@ DOCKER_CMD ?= docker
DOCKER_COMPOSE_CMD ?= docker-compose

# Build flags (overridable)
GO_LDFLAGS ?= -ldflags=-s
GO_TESTFLAGS ?=
FABRIC_SDK_EXPERIMENTAL ?= true
FABRIC_SDK_EXTRA_GO_TAGS ?=
GO_LDFLAGS ?= -ldflags=-s
GO_TESTFLAGS ?=
FABRIC_SDK_EXPERIMENTAL ?= true
FABRIC_SDK_EXTRA_GO_TAGS ?=
FABRIC_SDK_POPULATE_VENDOR ?= true

# Fabric tool versions (overridable)
FABRIC_TOOLS_VERSION ?= 1.0.1
Expand Down Expand Up @@ -138,8 +139,10 @@ thirdparty-pin:
populate: populate-vendor

populate-vendor:
ifeq ($(FABRIC_SDK_POPULATE_VENDOR),true)
@echo "Populating vendor ..."
@$(GO_DEP_CMD) ensure -vendor-only
endif

populate-clean:
rm -Rf vendor
Expand Down
7 changes: 3 additions & 4 deletions def/fabapi/context/defprovider/org.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,10 @@ SPDX-License-Identifier: Apache-2.0
package defprovider

import (
"fmt"

"github.com/hyperledger/fabric-sdk-go/api/apiconfig"
fabca "github.com/hyperledger/fabric-sdk-go/api/apifabca"
fab "github.com/hyperledger/fabric-sdk-go/api/apifabclient"
"github.com/hyperledger/fabric-sdk-go/pkg/errors"
fabricCAClient "github.com/hyperledger/fabric-sdk-go/pkg/fabric-ca-client"
credentialMgr "github.com/hyperledger/fabric-sdk-go/pkg/fabric-client/credentialmgr"
"github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/bccsp"
Expand All @@ -30,7 +29,7 @@ func NewOrgClientFactory() *OrgClientFactory {
func (f *OrgClientFactory) NewMSPClient(orgName string, config apiconfig.Config) (fabca.FabricCAClient, error) {
mspClient, err := fabricCAClient.NewFabricCAClient(config, orgName)
if err != nil {
return nil, fmt.Errorf("NewFabricCAClient returned error: %v", err)
return nil, errors.WithMessage(err, "NewFabricCAClient failed")
}

return mspClient, nil
Expand All @@ -41,7 +40,7 @@ func (f *OrgClientFactory) NewCredentialManager(orgName string, config apiconfig

credentialMgr, err := credentialMgr.NewCredentialManager(orgName, config, cryptoProvider)
if err != nil {
return nil, fmt.Errorf("NewCredentialManager returned error: %v", err)
return nil, errors.WithMessage(err, "NewCredentialManager failed")
}

return credentialMgr, nil
Expand Down
7 changes: 3 additions & 4 deletions def/fabapi/context/defprovider/sdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@ SPDX-License-Identifier: Apache-2.0
package defprovider

import (
"fmt"

"github.com/hyperledger/fabric-sdk-go/api/apiconfig"
fab "github.com/hyperledger/fabric-sdk-go/api/apifabclient"

"github.com/hyperledger/fabric-sdk-go/def/fabapi/opt"
configImpl "github.com/hyperledger/fabric-sdk-go/pkg/config"
"github.com/hyperledger/fabric-sdk-go/pkg/errors"
kvs "github.com/hyperledger/fabric-sdk-go/pkg/fabric-client/keyvaluestore"

signingMgr "github.com/hyperledger/fabric-sdk-go/pkg/fabric-client/signingmgr"
discovery "github.com/hyperledger/fabric-sdk-go/pkg/fabric-txn/discovery"
"github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/bccsp"
Expand Down Expand Up @@ -49,7 +48,7 @@ func (f *DefaultProviderFactory) NewStateStoreProvider(o opt.StateStoreOpts, con

stateStore, err := kvs.CreateNewFileKeyValueStore(stateStorePath)
if err != nil {
return nil, fmt.Errorf("CreateNewFileKeyValueStore returned error[%s]", err)
return nil, errors.WithMessage(err, "CreateNewFileKeyValueStore failed")
}
return stateStore, nil
}
Expand Down
24 changes: 12 additions & 12 deletions def/fabapi/context/defprovider/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ SPDX-License-Identifier: Apache-2.0
package defprovider

import (
"fmt"

"github.com/hyperledger/fabric-sdk-go/api/apiconfig"
fab "github.com/hyperledger/fabric-sdk-go/api/apifabclient"
"github.com/hyperledger/fabric-sdk-go/api/apitxn"

"github.com/hyperledger/fabric-sdk-go/def/fabapi/context"
"github.com/hyperledger/fabric-sdk-go/pkg/errors"
clientImpl "github.com/hyperledger/fabric-sdk-go/pkg/fabric-client"
"github.com/hyperledger/fabric-sdk-go/pkg/fabric-client/events"
"github.com/hyperledger/fabric-sdk-go/pkg/fabric-client/orderer"
Expand Down Expand Up @@ -51,17 +51,17 @@ func (f *SessionClientFactory) NewChannelClient(sdk context.SDK, session context

channel, err := getChannel(client, channelName)
if err != nil {
return nil, fmt.Errorf("Unable to create channel:%v", err)
return nil, errors.WithMessage(err, "create channel failed")
}

discovery, err := sdk.DiscoveryProvider().NewDiscoveryService(channel)
if err != nil {
return nil, fmt.Errorf("Unable to create discovery service:%v", err)
return nil, errors.WithMessage(err, "create discovery service failed")
}

eventHub, err := getEventHub(client, channelName, session)
if err != nil {
return nil, err
return nil, errors.WithMessage(err, "getEventHub failed")
}

return chImpl.NewChannelClient(client, channel, discovery, eventHub)
Expand All @@ -72,18 +72,18 @@ func getChannel(client fab.FabricClient, channelID string) (fab.Channel, error)

channel, err := client.NewChannel(channelID)
if err != nil {
return nil, fmt.Errorf("NewChannel return error: %v", err)
return nil, errors.WithMessage(err, "NewChannel failed")
}

chConfig, err := client.Config().ChannelConfig(channel.Name())
if err != nil {
return nil, fmt.Errorf("Error reading channel config: %v", err)
return nil, errors.WithMessage(err, "reading channel config failed")
}

for _, name := range chConfig.Orderers {
ordererConfig, err := client.Config().OrdererConfig(name)
if err != nil {
return nil, fmt.Errorf("Unable to retrieve configuration for orderer(%s): %s", name, err)
return nil, errors.WithMessage(err, "retrieve configuration for orderer failed")
}

serverHostOverride := ""
Expand All @@ -92,11 +92,11 @@ func getChannel(client fab.FabricClient, channelID string) (fab.Channel, error)
}
orderer, err := orderer.NewOrderer(ordererConfig.URL, ordererConfig.TLSCACerts.Path, serverHostOverride, client.Config())
if err != nil {
return nil, fmt.Errorf("NewOrderer return error: %v", err)
return nil, errors.WithMessage(err, "NewOrderer failed")
}
err = channel.AddOrderer(orderer)
if err != nil {
return nil, fmt.Errorf("Error adding orderer: %v", err)
return nil, errors.WithMessage(err, "adding orderer failed")
}
}

Expand All @@ -107,7 +107,7 @@ func getEventHub(client fab.FabricClient, channelID string, session context.Sess

peerConfig, err := client.Config().ChannelPeers(channelID)
if err != nil {
return nil, fmt.Errorf("Unable to read configuration for channel(%s) peers: %s", channelID, err)
return nil, errors.WithMessage(err, "read configuration for channel peers failed")
}

serverHostOverride := ""
Expand All @@ -126,7 +126,7 @@ func getEventHub(client fab.FabricClient, channelID string, session context.Sess
}

if eventSource == nil {
return nil, fmt.Errorf("Unable to find peer event source for channel: %s", channelID)
return nil, errors.New("unable to find peer event source for channel")
}

// Event source found create event hub
Expand Down
39 changes: 19 additions & 20 deletions def/fabapi/fabapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,15 @@ SPDX-License-Identifier: Apache-2.0
package fabapi

import (
"fmt"

"github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/bccsp"

"github.com/hyperledger/fabric-sdk-go/api/apiconfig"
"github.com/hyperledger/fabric-sdk-go/api/apifabclient"
"github.com/hyperledger/fabric-sdk-go/api/apitxn"

"github.com/hyperledger/fabric-sdk-go/def/fabapi/context"
"github.com/hyperledger/fabric-sdk-go/def/fabapi/context/defprovider"
"github.com/hyperledger/fabric-sdk-go/def/fabapi/opt"
"github.com/hyperledger/fabric-sdk-go/pkg/errors"
"github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/bccsp"
)

// Options encapsulates configuration for the SDK
Expand Down Expand Up @@ -81,35 +80,35 @@ func NewSDK(options Options) (*FabricSDK, error) {
// Initialize config provider
config, err := sdk.ProviderFactory.NewConfigProvider(sdk.ConfigOpts, sdkOpts)
if err != nil {
return nil, fmt.Errorf("Failed to initialize config [%s]", err)
return nil, errors.WithMessage(err, "failed to initialize config")
}
sdk.configProvider = config

// Initialize crypto provider
cryptosuite, err := sdk.ProviderFactory.NewCryptoSuiteProvider(sdk.configProvider.CSPConfig())
if err != nil {
return nil, fmt.Errorf("Failed to initialize crypto suite [%s]", err)
return nil, errors.WithMessage(err, "failed to initialize crypto suite")
}
sdk.cryptoSuite = cryptosuite

// Initialize state store
store, err := sdk.ProviderFactory.NewStateStoreProvider(sdk.StateStoreOpts, sdk.configProvider)
if err != nil {
return nil, fmt.Errorf("Failed to initialize state store [%s]", err)
return nil, errors.WithMessage(err, "failed to initialize state store")
}
sdk.stateStore = store

// Initialize discovery provider
discoveryProvider, err := sdk.ProviderFactory.NewDiscoveryProvider(sdk.configProvider)
if err != nil {
return nil, fmt.Errorf("Failed to initialize discovery provider [%s]", err)
return nil, errors.WithMessage(err, "failed to initialize discovery provider")
}
sdk.discoveryProvider = discoveryProvider

// Initialize Signing Manager
signingMgr, err := sdk.ProviderFactory.NewSigningManager(sdk.CryptoSuiteProvider(), sdk.configProvider)
if err != nil {
return nil, fmt.Errorf("Failed to initialize signing manager [%s]", err)
return nil, errors.WithMessage(err, "failed to initialize signing manager")
}
sdk.signingManager = signingMgr

Expand Down Expand Up @@ -171,11 +170,11 @@ func (sdk *FabricSDK) NewChannelClient(channelName string, userName string) (api
// Read default org name from configuration
client, err := sdk.configProvider.Client()
if err != nil {
return nil, fmt.Errorf("Unable to retrieve client from network config: %s", err)
return nil, errors.WithMessage(err, "unable to retrieve client from network config")
}

if client.Organization == "" {
return nil, fmt.Errorf("Must provide default organisation name in configuration")
return nil, errors.New("must provide default organisation name in configuration")
}

opt := &ChannelClientOpts{OrgName: client.Organization, ConfigProvider: sdk.configProvider}
Expand All @@ -187,12 +186,12 @@ func (sdk *FabricSDK) NewChannelClient(channelName string, userName string) (api
func (sdk *FabricSDK) NewChannelClientWithOpts(channelName string, userName string, opt *ChannelClientOpts) (apitxn.ChannelClient, error) {

if opt == nil || opt.OrgName == "" {
return nil, fmt.Errorf("Organization name must be provided")
return nil, errors.New("organization name must be provided")
}

session, err := sdk.NewPreEnrolledUserSession(opt.OrgName, userName)
if err != nil {
return nil, fmt.Errorf("Error getting pre-enrolled user session: %v", err)
return nil, errors.WithMessage(err, "failed to get pre-enrolled user session")
}

configProvider := sdk.ConfigProvider()
Expand All @@ -202,7 +201,7 @@ func (sdk *FabricSDK) NewChannelClientWithOpts(channelName string, userName stri

client, err := sdk.SessionFactory.NewChannelClient(sdk, session, configProvider, channelName)
if err != nil {
return nil, fmt.Errorf("NewChannelClient returned error: %v", err)
return nil, errors.WithMessage(err, "failed to created new channel client")
}

return client, nil
Expand All @@ -213,17 +212,17 @@ func (sdk *FabricSDK) NewPreEnrolledUser(orgID string, userName string) (apifabc

credentialMgr, err := sdk.ContextFactory.NewCredentialManager(orgID, sdk.ConfigProvider(), sdk.CryptoSuiteProvider())
if err != nil {
return nil, fmt.Errorf("Error getting credential manager: %s ", err)
return nil, errors.WithMessage(err, "failed to get credential manager")
}

signingIdentity, err := credentialMgr.GetSigningIdentity(userName)
if err != nil {
return nil, fmt.Errorf("Error getting signing identity: %s ", err)
return nil, errors.WithMessage(err, "failed to get signing identity")
}

user, err := NewPreEnrolledUser(sdk.ConfigProvider(), userName, signingIdentity)
if err != nil {
return nil, fmt.Errorf("NewUser returned error: %v", err)
return nil, errors.WithMessage(err, "NewPreEnrolledUser returned error")
}

return user, nil
Expand All @@ -234,17 +233,17 @@ func (sdk *FabricSDK) NewPreEnrolledUserSession(orgID string, userName string) (

context, err := sdk.NewContext(orgID)
if err != nil {
return nil, fmt.Errorf("Error getting a context for org: %s", err)
return nil, errors.WithMessage(err, "failed to get context for org")
}

user, err := sdk.NewPreEnrolledUser(orgID, userName)
if err != nil {
return nil, fmt.Errorf("Error getting pre-enrolled user: %v", err)
return nil, errors.WithMessage(err, "failed to get pre-enrolled user")
}

session, err := sdk.NewSession(context, user)
if err != nil {
return nil, fmt.Errorf("NewSession returned error: %v", err)
return nil, errors.WithMessage(err, "NewSession returned error")
}

return session, nil
Expand Down
Loading

0 comments on commit 4c04c1c

Please sign in to comment.