Skip to content

Commit 2218e46

Browse files
authored
Merge pull request #9 from IBM/prgavali-sl-timeout-fix
Fixed timeout for volume provisioning
2 parents 21ce857 + 808bf65 commit 2218e46

22 files changed

+155
-117
lines changed

config/config.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ type Config struct {
3838
Gen2 *Gen2Config
3939
}
4040

41-
func ReadConfig(confPath string, logger zap.Logger) (*Config, error) {
41+
//ReadConfig loads the config from file
42+
func ReadConfig(confPath string, logger *zap.Logger) (*Config, error) {
4243
// load the default config, if confPath not provided
4344
if confPath == "" {
4445
confPath = GetDefaultConfPath()
@@ -64,9 +65,9 @@ func GetDefaultConfPath() string {
6465
}
6566

6667
// ParseConfig ...
67-
func ParseConfig(filePath string, conf interface{}, logger zap.Logger) error {
68+
func ParseConfig(filePath string, conf interface{}, logger *zap.Logger) error {
6869
_, err := toml.DecodeFile(filePath, conf)
69-
if err != nil {
70+
if err != nil {
7071
logger.Error("Failed to parse config file", zap.Error(err))
7172
}
7273
return err
@@ -83,15 +84,17 @@ type BluemixConfig struct {
8384

8485
// SoftlayerConfig ...
8586
type SoftlayerConfig struct {
86-
SoftlayerBlockEnabled bool `toml:"softlayer_block_enabled" envconfig:"SOFTLAYER_BLOCK_ENABLED"`
87-
SoftlayerBlockProviderName string `toml:"softlayer_block_provider_name" envconfig:"SOFTLAYER_BLOCK_PROVIDER_NAME"`
88-
SoftlayerFileEnabled bool `toml:"softlayer_file_enabled" envconfig:"SOFTLAYER_FILE_ENABLED"`
89-
SoftlayerFileProviderName string `toml:"softlayer_file_provider_name" envconfig:"SOFTLAYER_FILE_PROVIDER_NAME"`
90-
SoftlayerUsername string `toml:"softlayer_username" json:"-"`
91-
SoftlayerAPIKey string `toml:"softlayer_api_key" json:"-"`
92-
SoftlayerEndpointURL string `toml:"softlayer_endpoint_url"`
93-
SoftlayerDataCenter string `toml:"softlayer_datacenter"`
94-
SoftlayerTimeout string `toml:"softlayer_api_timeout"`
87+
SoftlayerBlockEnabled bool `toml:"softlayer_block_enabled" envconfig:"SOFTLAYER_BLOCK_ENABLED"`
88+
SoftlayerBlockProviderName string `toml:"softlayer_block_provider_name" envconfig:"SOFTLAYER_BLOCK_PROVIDER_NAME"`
89+
SoftlayerFileEnabled bool `toml:"softlayer_file_enabled" envconfig:"SOFTLAYER_FILE_ENABLED"`
90+
SoftlayerFileProviderName string `toml:"softlayer_file_provider_name" envconfig:"SOFTLAYER_FILE_PROVIDER_NAME"`
91+
SoftlayerUsername string `toml:"softlayer_username" json:"-"`
92+
SoftlayerAPIKey string `toml:"softlayer_api_key" json:"-"`
93+
SoftlayerEndpointURL string `toml:"softlayer_endpoint_url"`
94+
SoftlayerDataCenter string `toml:"softlayer_datacenter"`
95+
SoftlayerTimeout string `toml:"softlayer_api_timeout" envconfig:"SOFTLAYER_API_TIMEOUT"`
96+
SoftlayerVolProvisionTimeout string `toml:"softlayer_vol_provision_timeout" envconfig:"SOFTLAYER_VOL_PROVISION_TIMEOUT"`
97+
SoftlayerRetryInterval string `toml:"softlayer_api_retry_interval" envconfig:"SOFTLAYER_API_RETRY_INTERVAL"`
9598
//Configuration values for JWT tokens
9699
SoftlayerJWTKID string `toml:"softlayer_jwt_kid"`
97100
SoftlayerJWTTTL int `toml:"softlayer_jwt_ttl"`

etc/libconfig.toml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[bluemix]
2-
iam_url = "https://iam.stage1.ng.bluemix.net"
2+
iam_url = "https://iam.bluemix.net"
33
iam_client_id = "bx"
44
iam_client_secret = "bx"
5-
iam_api_key = "free"
5+
iam_api_key = ""
66
refresh_token = ""
77

88

@@ -16,7 +16,9 @@ softlayer_api_key = ""
1616
softlayer_endpoint_url = "https://api.softlayer.com/rest/v3"
1717
softlayer_iam_endpoint_url = "https://api.softlayer.com/mobile/v3"
1818
softlayer_datacenter = "mex01"
19-
softlayer_api_timeout = "20s"
19+
softlayer_api_timeout = "30s"
20+
softlayer_vol_provision_timeout = "30m"
21+
softlayer_api_retry_interval = "5s"
2022

2123
[genesis]
2224
genesis_provider_enabled = false

main.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,24 @@ func main() {
5656
*/
5757

5858
// Load config file
59-
conf := config.ReadConfig("", *logger)
60-
if conf == nil {
59+
conf, err := config.ReadConfig("", logger)
60+
if err != nil {
6161
logger.Fatal("Error loading configuration")
6262
}
6363

6464
// Prepare provider registry
65-
providerRegistry, err := provider_util.InitProviders(conf, *logger)
65+
providerRegistry, err := provider_util.InitProviders(conf, logger)
6666
if err != nil {
6767
logger.Fatal("Error configuring providers", local.ZapError(err))
6868
}
6969

7070
//dc_name := "mex01"
71+
providerName := conf.Softlayer.SoftlayerBlockProviderName
72+
if conf.Softlayer.SoftlayerFileEnabled {
73+
providerName = conf.Softlayer.SoftlayerFileProviderName
74+
}
7175
logger.Info("In main before openProviderSession call", zap.Reflect("providerRegistry", providerRegistry))
72-
sess, _, err := provider_util.OpenProviderSession(conf, providerRegistry, conf.Softlayer.SoftlayerBlockProviderName, *logger)
76+
sess, _, err := provider_util.OpenProviderSession(conf, providerRegistry, providerName, logger)
7377
if err != nil {
7478
logger.Error("Failed to get session", zap.Reflect("Error", err))
7579
return
@@ -136,12 +140,15 @@ func main() {
136140
fmt.Println("You selected choice to Create volume\n")
137141
volume := &provider.Volume{}
138142
volume.VolumeType = "block"
143+
if conf.Softlayer.SoftlayerFileEnabled {
144+
volume.VolumeType = "file"
145+
}
139146
dcName := ""
140147
volSize := 0
141148
Iops := "0"
142149
tier := ""
143150
providerType := ""
144-
//volume.SnapshotSpace = 0
151+
145152
var choice int
146153
fmt.Printf("\nPlease enter storage type choice 1- for endurance 2- for performance: ")
147154
_, er11 = fmt.Scanf("%d", &choice)
@@ -171,6 +178,7 @@ func main() {
171178
_, er11 = fmt.Scanf("%s", &tier)
172179
volume.Tier = &tier
173180
}
181+
volume.SnapshotSpace = &volSize
174182
_, errr := sess.VolumeCreate(*volume)
175183
if errr == nil {
176184
logger.Info("Successfully ordered volume ================>", zap.Reflect("StorageType", volume.ProviderType))

provider/auth/token_exchange.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ type TokenExchangeService interface {
3030

3131
// ExchangeRefreshTokenForAccessToken ...
3232
// TODO Deprecate when no longer reliant on refresh token authentication
33-
ExchangeRefreshTokenForAccessToken(refreshToken string, logger zap.Logger) (*AccessToken, error)
33+
ExchangeRefreshTokenForAccessToken(refreshToken string, logger *zap.Logger) (*AccessToken, error)
3434

3535
// ExchangeAccessTokenForIMSToken ...
36-
ExchangeAccessTokenForIMSToken(accessToken AccessToken, logger zap.Logger) (*IMSToken, error)
36+
ExchangeAccessTokenForIMSToken(accessToken AccessToken, logger *zap.Logger) (*IMSToken, error)
3737

3838
// ExchangeIAMAPIKeyForIMSToken ...
39-
ExchangeIAMAPIKeyForIMSToken(iamAPIKey string, logger zap.Logger) (*IMSToken, error)
39+
ExchangeIAMAPIKeyForIMSToken(iamAPIKey string, logger *zap.Logger) (*IMSToken, error)
4040

4141
// ExchangeIAMAPIKeyForAccessToken ...
42-
ExchangeIAMAPIKeyForAccessToken(iamAPIKey string, logger zap.Logger) (*AccessToken, error)
42+
ExchangeIAMAPIKeyForAccessToken(iamAPIKey string, logger *zap.Logger) (*AccessToken, error)
4343
}

provider/local/provider.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ type Provider interface {
2525
// The implementation can choose to verify the credentials and return an error if they are invalid.
2626
// Alternatively, the implementation can choose to defer credential verification until individual
2727
// methods of the context are called.
28-
OpenSession(context.Context, provider.ContextCredentials, zap.Logger) (provider.Session, error)
28+
OpenSession(context.Context, provider.ContextCredentials, *zap.Logger) (provider.Session, error)
2929

3030
// Returns a configured ContextCredentialsFactory for this provider
3131
ContextCredentialsFactory(datacenter *string) (ContextCredentialsFactory, error)
@@ -35,8 +35,8 @@ type Provider interface {
3535
//go:generate counterfeiter -o fakes/context_credentials_factory.go --fake-name ContextCredentialsFactory . ContextCredentialsFactory
3636
type ContextCredentialsFactory interface {
3737
// ForIaaSAPIKey returns a config using an explicit API key for an IaaS user account
38-
ForIaaSAPIKey(iamAccountID, iaasUserID, iaasAPIKey string, logger zap.Logger) (provider.ContextCredentials, error)
38+
ForIaaSAPIKey(iamAccountID, iaasUserID, iaasAPIKey string, logger *zap.Logger) (provider.ContextCredentials, error)
3939

4040
// ForIAMAPIKey returns a config derived from an IAM API key (if applicable)
41-
ForIAMAPIKey(iamAccountID, iamAPIKey string, logger zap.Logger) (provider.ContextCredentials, error)
41+
ForIAMAPIKey(iamAccountID, iamAPIKey string, logger *zap.Logger) (provider.ContextCredentials, error)
4242
}

provider/utils/init_provider.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"go.uber.org/zap"
1717

1818
softlayer_block "github.com/IBM/ibmcloud-storage-volume-lib/volume-providers/softlayer/block"
19+
softlayer_file "github.com/IBM/ibmcloud-storage-volume-lib/volume-providers/softlayer/file"
1920

2021
"github.com/IBM/ibmcloud-storage-volume-lib/config"
2122
"github.com/IBM/ibmcloud-storage-volume-lib/lib/provider"
@@ -24,7 +25,7 @@ import (
2425
"github.com/IBM/ibmcloud-storage-volume-lib/provider/registry"
2526
)
2627

27-
func InitProviders(conf *config.Config, logger zap.Logger) (registry.Providers, error) {
28+
func InitProviders(conf *config.Config, logger *zap.Logger) (registry.Providers, error) {
2829
var haveProviders bool
2930
providerRegistry := &registry.ProviderRegistry{}
3031
// BLOCK volume registration
@@ -41,7 +42,7 @@ func InitProviders(conf *config.Config, logger zap.Logger) (registry.Providers,
4142

4243
// FILE volume registration
4344
if conf.Softlayer != nil && conf.Softlayer.SoftlayerFileEnabled {
44-
prov, err := softlayer_block.NewProvider(conf, logger)
45+
prov, err := softlayer_file.NewProvider(conf, logger)
4546
if err != nil {
4647
return nil, err
4748
}
@@ -70,7 +71,7 @@ func isEmptyStringValue(value *string) bool {
7071
return value == nil || *value == ""
7172
}
7273

73-
func OpenProviderSession(conf *config.Config, providers registry.Providers, providerID string, logger zap.Logger) (session provider.Session, fatal bool, err1 error) {
74+
func OpenProviderSession(conf *config.Config, providers registry.Providers, providerID string, logger *zap.Logger) (session provider.Session, fatal bool, err1 error) {
7475
logger.Info("In OpenProviderSession methods")
7576
prov, err := providers.Get(providerID)
7677
if err != nil {
@@ -97,7 +98,7 @@ func OpenProviderSession(conf *config.Config, providers registry.Providers, prov
9798
return
9899
}
99100

100-
func GenerateContextCredentials(conf *config.Config, providerID string, contextCredentialsFactory local.ContextCredentialsFactory, logger zap.Logger) (provider.ContextCredentials, error) {
101+
func GenerateContextCredentials(conf *config.Config, providerID string, contextCredentialsFactory local.ContextCredentialsFactory, logger *zap.Logger) (provider.ContextCredentials, error) {
101102
logger.Info("Generating generateContextCredentials for ", zap.String("Provider ID", providerID))
102103

103104
AccountID := conf.Bluemix.IamClientID

volume-providers/iam/token_exchange.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import (
2121
"github.com/IBM-Bluemix/bluemix-cli-sdk/common/rest"
2222

2323
"github.com/IBM/ibmcloud-storage-volume-lib/config"
24-
"github.com/IBM/ibmcloud-storage-volume-lib/provider/auth"
2524
"github.com/IBM/ibmcloud-storage-volume-lib/lib/utils"
25+
"github.com/IBM/ibmcloud-storage-volume-lib/provider/auth"
2626
)
2727

2828
type tokenExchangeService struct {
@@ -49,7 +49,7 @@ type tokenExchangeRequest struct {
4949
tes *tokenExchangeService
5050
request *rest.Request
5151
client *rest.Client
52-
logger zap.Logger
52+
logger *zap.Logger
5353
}
5454

5555
type tokenExchangeResponse struct {
@@ -59,7 +59,7 @@ type tokenExchangeResponse struct {
5959
}
6060

6161
// ExchangeRefreshTokenForAccessToken ...
62-
func (tes *tokenExchangeService) ExchangeRefreshTokenForAccessToken(refreshToken string, logger zap.Logger) (*auth.AccessToken, error) {
62+
func (tes *tokenExchangeService) ExchangeRefreshTokenForAccessToken(refreshToken string, logger *zap.Logger) (*auth.AccessToken, error) {
6363
r := tes.newTokenExchangeRequest(logger)
6464

6565
r.request.Field("grant_type", "refresh_token")
@@ -69,7 +69,7 @@ func (tes *tokenExchangeService) ExchangeRefreshTokenForAccessToken(refreshToken
6969
}
7070

7171
// ExchangeAccessTokenForIMSToken ...
72-
func (tes *tokenExchangeService) ExchangeAccessTokenForIMSToken(accessToken auth.AccessToken, logger zap.Logger) (*auth.IMSToken, error) {
72+
func (tes *tokenExchangeService) ExchangeAccessTokenForIMSToken(accessToken auth.AccessToken, logger *zap.Logger) (*auth.IMSToken, error) {
7373
r := tes.newTokenExchangeRequest(logger)
7474

7575
r.request.Field("grant_type", "urn:ibm:params:oauth:grant-type:derive")
@@ -80,7 +80,7 @@ func (tes *tokenExchangeService) ExchangeAccessTokenForIMSToken(accessToken auth
8080
}
8181

8282
// ExchangeIAMAPIKeyForIMSToken ...
83-
func (tes *tokenExchangeService) ExchangeIAMAPIKeyForIMSToken(iamAPIKey string, logger zap.Logger) (*auth.IMSToken, error) {
83+
func (tes *tokenExchangeService) ExchangeIAMAPIKeyForIMSToken(iamAPIKey string, logger *zap.Logger) (*auth.IMSToken, error) {
8484
r := tes.newTokenExchangeRequest(logger)
8585

8686
r.request.Field("grant_type", "urn:ibm:params:oauth:grant-type:apikey")
@@ -91,7 +91,7 @@ func (tes *tokenExchangeService) ExchangeIAMAPIKeyForIMSToken(iamAPIKey string,
9191
}
9292

9393
// ExchangeIAMAPIKeyForAccessToken ...
94-
func (tes *tokenExchangeService) ExchangeIAMAPIKeyForAccessToken(iamAPIKey string, logger zap.Logger) (*auth.AccessToken, error) {
94+
func (tes *tokenExchangeService) ExchangeIAMAPIKeyForAccessToken(iamAPIKey string, logger *zap.Logger) (*auth.AccessToken, error) {
9595
r := tes.newTokenExchangeRequest(logger)
9696

9797
r.request.Field("grant_type", "urn:ibm:params:oauth:grant-type:apikey")
@@ -119,7 +119,7 @@ func (r *tokenExchangeRequest) exchangeForIMSToken() (*auth.IMSToken, error) {
119119
}, nil
120120
}
121121

122-
func (tes *tokenExchangeService) newTokenExchangeRequest(logger zap.Logger) *tokenExchangeRequest {
122+
func (tes *tokenExchangeService) newTokenExchangeRequest(logger *zap.Logger) *tokenExchangeRequest {
123123
client := rest.NewClient()
124124
client.HTTPClient = tes.httpClient
125125

volume-providers/iam/token_exchange_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func Test_ExchangeRefreshTokenForAccessToken_Success(t *testing.T) {
7878
tes, err := NewTokenExchangeService(&bluemixConf)
7979
assert.NoError(t, err)
8080

81-
r, err := tes.ExchangeRefreshTokenForAccessToken("testrefreshtoken", *logger)
81+
r, err := tes.ExchangeRefreshTokenForAccessToken("testrefreshtoken", logger)
8282
assert.Nil(t, err)
8383
if assert.NotNil(t, r) {
8484
assert.Equal(t, (*r).Token, "at_success")
@@ -113,7 +113,7 @@ func Test_ExchangeRefreshTokenForAccessToken_FailedDuringRequest(t *testing.T) {
113113
tes, err := NewTokenExchangeService(&bluemixConf)
114114
assert.NoError(t, err)
115115

116-
r, err := tes.ExchangeRefreshTokenForAccessToken("badrefreshtoken", *logger)
116+
r, err := tes.ExchangeRefreshTokenForAccessToken("badrefreshtoken", logger)
117117
assert.Nil(t, r)
118118
if assert.NotNil(t, err) {
119119
assert.Equal(t, "IAM token exchange request failed: did not work", err.Error())
@@ -145,7 +145,7 @@ func Test_ExchangeRefreshTokenForAccessToken_FailedDuringRequest_no_message(t *t
145145
tes, err := NewTokenExchangeService(&bluemixConf)
146146
assert.NoError(t, err)
147147

148-
r, err := tes.ExchangeRefreshTokenForAccessToken("badrefreshtoken", *logger)
148+
r, err := tes.ExchangeRefreshTokenForAccessToken("badrefreshtoken", logger)
149149
assert.Nil(t, r)
150150
if assert.NotNil(t, err) {
151151
assert.Equal(t, "Unexpected IAM token exchange response", err.Error())
@@ -177,7 +177,7 @@ func Test_ExchangeRefreshTokenForAccessToken_FailedNoIamUrl(t *testing.T) {
177177
tes, err := NewTokenExchangeService(&bluemixConf)
178178
assert.NoError(t, err)
179179

180-
r, err := tes.ExchangeRefreshTokenForAccessToken("testrefreshtoken", *logger)
180+
r, err := tes.ExchangeRefreshTokenForAccessToken("testrefreshtoken", logger)
181181
assert.Nil(t, r)
182182

183183
if assert.NotNil(t, err) {
@@ -211,7 +211,7 @@ func Test_ExchangeRefreshTokenForAccessToken_FailedRequesting_empty_body(t *test
211211
tes, err := NewTokenExchangeService(&bluemixConf)
212212
assert.NoError(t, err)
213213

214-
r, err := tes.ExchangeRefreshTokenForAccessToken("badrefreshtoken", *logger)
214+
r, err := tes.ExchangeRefreshTokenForAccessToken("badrefreshtoken", logger)
215215
assert.Nil(t, r)
216216

217217
if assert.NotNil(t, err) {
@@ -246,7 +246,7 @@ func Test_ExchangeAccessTokenForIMSToken_Success(t *testing.T) {
246246
tes, err := NewTokenExchangeService(&bluemixConf)
247247
assert.NoError(t, err)
248248

249-
r, err := tes.ExchangeAccessTokenForIMSToken(auth.AccessToken{Token: "testaccesstoken"}, *logger)
249+
r, err := tes.ExchangeAccessTokenForIMSToken(auth.AccessToken{Token: "testaccesstoken"}, logger)
250250
assert.Nil(t, err)
251251
if assert.NotNil(t, r) {
252252
assert.Equal(t, (*r).UserID, 123)
@@ -282,7 +282,7 @@ func Test_ExchangeAccessTokenForIMSToken_FailedDuringRequest(t *testing.T) {
282282
tes, err := NewTokenExchangeService(&bluemixConf)
283283
assert.NoError(t, err)
284284

285-
r, err := tes.ExchangeAccessTokenForIMSToken(auth.AccessToken{Token: "badaccesstoken"}, *logger)
285+
r, err := tes.ExchangeAccessTokenForIMSToken(auth.AccessToken{Token: "badaccesstoken"}, logger)
286286
assert.Nil(t, r)
287287
if assert.NotNil(t, err) {
288288
assert.Equal(t, "IAM token exchange request failed: did not work", err.Error())
@@ -321,7 +321,7 @@ func Test_ExchangeAccessTokenForIMSToken_FailedAccountLocked(t *testing.T) {
321321
tes, err := NewTokenExchangeService(&bluemixConf)
322322
assert.NoError(t, err)
323323

324-
r, err := tes.ExchangeAccessTokenForIMSToken(auth.AccessToken{Token: "badaccesstoken"}, *logger)
324+
r, err := tes.ExchangeAccessTokenForIMSToken(auth.AccessToken{Token: "badaccesstoken"}, logger)
325325
assert.Nil(t, r)
326326
if assert.NotNil(t, err) {
327327
assert.Equal(t, "Infrastructure account is temporarily locked", err.Error())
@@ -354,7 +354,7 @@ func Test_ExchangeAccessTokenForIMSToken_FailedDuringRequest_no_message(t *testi
354354
tes, err := NewTokenExchangeService(&bluemixConf)
355355
assert.NoError(t, err)
356356

357-
r, err := tes.ExchangeAccessTokenForIMSToken(auth.AccessToken{Token: "badrefreshtoken"}, *logger)
357+
r, err := tes.ExchangeAccessTokenForIMSToken(auth.AccessToken{Token: "badrefreshtoken"}, logger)
358358
assert.Nil(t, r)
359359
if assert.NotNil(t, err) {
360360
assert.Equal(t, "Unexpected IAM token exchange response", err.Error())
@@ -385,7 +385,7 @@ func Test_ExchangeAccessTokenForIMSToken_FailedRequesting_empty_body(t *testing.
385385
tes, err := NewTokenExchangeService(&bluemixConf)
386386
assert.NoError(t, err)
387387

388-
r, err := tes.ExchangeAccessTokenForIMSToken(auth.AccessToken{Token: "badrefreshtoken"}, *logger)
388+
r, err := tes.ExchangeAccessTokenForIMSToken(auth.AccessToken{Token: "badrefreshtoken"}, logger)
389389
assert.Nil(t, r)
390390

391391
if assert.NotNil(t, err) {
@@ -465,7 +465,7 @@ func Test_ExchangeIAMAPIKeyForAccessToken(t *testing.T) {
465465
tes, err := NewTokenExchangeService(&bluemixConf)
466466
assert.NoError(t, err)
467467

468-
r, actualError := tes.ExchangeIAMAPIKeyForAccessToken("apikey1", *logger)
468+
r, actualError := tes.ExchangeIAMAPIKeyForAccessToken("apikey1", logger)
469469
if testCase.expectedError == nil {
470470
assert.NoError(t, actualError)
471471
if assert.NotNil(t, r) {

volume-providers/softlayer/auth/apikey.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717
)
1818

1919
// ForAPIKey ...
20-
func (ccf *contextCredentialsFactory) ForIaaSAPIKey(iamAccountID, userid, apikey string, logger zap.Logger) (provider.ContextCredentials, error) {
20+
func (ccf *contextCredentialsFactory) ForIaaSAPIKey(iamAccountID, userid, apikey string, logger *zap.Logger) (provider.ContextCredentials, error) {
2121
return provider.ContextCredentials{
2222
AuthType: provider.IaaSAPIKey,
2323
IAMAccountID: iamAccountID,

volume-providers/softlayer/auth/apikey_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func Test_ForIaaSAPIKey(t *testing.T) {
6767
},
6868
}
6969

70-
contextCredentials, err := ccf.ForIaaSAPIKey(account, username, apiKey, *logger)
70+
contextCredentials, err := ccf.ForIaaSAPIKey(account, username, apiKey, logger)
7171

7272
assert.NoError(t, err)
7373

0 commit comments

Comments
 (0)