Skip to content

Commit 3c4515d

Browse files
authored
Merge pull request #606 from andyzhangx/add-more-golinters
test: add more golinters
2 parents 3fd6076 + ed4750b commit 3c4515d

File tree

14 files changed

+42
-39
lines changed

14 files changed

+42
-39
lines changed

.github/workflows/static.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ jobs:
1313
uses: golangci/golangci-lint-action@v2
1414
with:
1515
version: v1.43
16-
args: -E=gofmt,deadcode,unused,varcheck,ineffassign,revive,misspell,exportloopref,asciicheck,bodyclose -D=staticcheck --timeout=30m0s
16+
# https://golangci-lint.run/usage/linters/
17+
args: -E=gofmt,deadcode,unused,varcheck,ineffassign,revive,misspell,exportloopref,asciicheck,bodyclose,depguard,dogsled,dupl,durationcheck,errname,errorlint,forbidigo -D=staticcheck --timeout=30m0s

pkg/blob/azure.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package blob
1818

1919
import (
20+
"errors"
2021
"fmt"
2122
"os"
2223
"strings"
@@ -63,8 +64,8 @@ func getCloudProvider(kubeconfig, nodeID, secretName, secretNamespace, userAgent
6364
kubeClient, err := getKubeClient(kubeconfig)
6465
if err != nil {
6566
klog.Warningf("get kubeconfig(%s) failed with error: %v", kubeconfig, err)
66-
if !os.IsNotExist(err) && err != rest.ErrNotInCluster {
67-
return az, fmt.Errorf("failed to get KubeClient: %v", err)
67+
if !os.IsNotExist(err) && !errors.Is(err, rest.ErrNotInCluster) {
68+
return az, fmt.Errorf("failed to get KubeClient: %w", err)
6869
}
6970
}
7071

@@ -111,7 +112,7 @@ func getCloudProvider(kubeconfig, nodeID, secretName, secretNamespace, userAgent
111112
if allowEmptyCloudConfig {
112113
klog.V(2).Infof("no cloud config provided, error: %v, driver will run without cloud config", err)
113114
} else {
114-
return az, fmt.Errorf("no cloud config provided, error: %v", err)
115+
return az, fmt.Errorf("no cloud config provided, error: %w", err)
115116
}
116117
} else {
117118
config.UserAgent = userAgent
@@ -148,13 +149,13 @@ func getCloudProvider(kubeconfig, nodeID, secretName, secretNamespace, userAgent
148149
func (d *Driver) getKeyVaultSecretContent(ctx context.Context, vaultURL string, secretName string, secretVersion string) (content string, err error) {
149150
kvClient, err := d.initializeKvClient()
150151
if err != nil {
151-
return "", fmt.Errorf("failed to get keyvaultClient: %v", err)
152+
return "", fmt.Errorf("failed to get keyvaultClient: %w", err)
152153
}
153154

154155
klog.V(2).Infof("get secret from vaultURL(%v), sercretName(%v), secretVersion(%v)", vaultURL, secretName, secretVersion)
155156
secret, err := kvClient.GetSecret(ctx, vaultURL, secretName, secretVersion)
156157
if err != nil {
157-
return "", fmt.Errorf("get secret from vaultURL(%v), sercretName(%v), secretVersion(%v) failed with error: %v", vaultURL, secretName, secretVersion, err)
158+
return "", fmt.Errorf("get secret from vaultURL(%v), sercretName(%v), secretVersion(%v) failed with error: %w", vaultURL, secretName, secretVersion, err)
158159
}
159160
return *secret.Value, nil
160161
}

pkg/blob/azure_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,14 +234,14 @@ func TestGetKeyVaultSecretContent(t *testing.T) {
234234
secretVersion := "v1"
235235
_, err := d.getKeyVaultSecretContent(context.TODO(), valueURL, secretName, secretVersion)
236236
expectedErr := fmt.Errorf("failed to get keyvaultClient: no credentials provided for Azure cloud provider")
237-
if !reflect.DeepEqual(expectedErr, err) {
237+
if !strings.EqualFold(expectedErr.Error(), err.Error()) {
238238
t.Errorf("actualErr: (%v), expectedErr: (%v)", err, expectedErr)
239239
}
240240
d.cloud.AADClientID = "unit-test"
241241
d.cloud.AADClientSecret = "unit-test"
242242
expectedErr = fmt.Errorf("get secret from vaultURL(unit-test), sercretName(unit-test), secretVersion(v1) failed with error: keyvault.BaseClient#GetSecret: Failure preparing request: StatusCode=0 -- Original Error: autorest: No scheme detected in URL unit-test")
243243
_, err = d.getKeyVaultSecretContent(context.TODO(), valueURL, secretName, secretVersion)
244-
if !reflect.DeepEqual(expectedErr, err) {
244+
if !strings.EqualFold(expectedErr.Error(), err.Error()) {
245245
t.Errorf("actualErr: (%v), expectedErr: (%v)", err, expectedErr)
246246
}
247247
}

pkg/blob/blob.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ func (d *Driver) GetAuthEnv(ctx context.Context, volumeID, protocol string, attr
417417
accountName, secretNamespace, secretName, err)
418418
accountKey, err = d.cloud.GetStorageAccesskey(ctx, accountName, rgName)
419419
if err != nil {
420-
return accountName, containerName, authEnv, fmt.Errorf("no key for storage account(%s) under resource group(%s), err %v", accountName, rgName, err)
420+
return accountName, containerName, authEnv, fmt.Errorf("no key for storage account(%s) under resource group(%s), err %w", accountName, rgName, err)
421421
}
422422
}
423423
}
@@ -517,7 +517,7 @@ func (d *Driver) GetStorageAccountAndContainer(ctx context.Context, volumeID str
517517

518518
accountKey, err = d.cloud.GetStorageAccesskey(ctx, accountName, rgName)
519519
if err != nil {
520-
return "", "", "", "", fmt.Errorf("no key for storage account(%s) under resource group(%s), err %v", accountName, rgName, err)
520+
return "", "", "", "", fmt.Errorf("no key for storage account(%s) under resource group(%s), err %w", accountName, rgName, err)
521521
}
522522
}
523523
}
@@ -614,7 +614,7 @@ func setAzureCredentials(kubeClient kubernetes.Interface, accountName, accountKe
614614
err = nil
615615
}
616616
if err != nil {
617-
return "", fmt.Errorf("couldn't create secret %v", err)
617+
return "", fmt.Errorf("couldn't create secret %w", err)
618618
}
619619
return secretName, err
620620
}
@@ -649,7 +649,7 @@ func (d *Driver) GetStorageAccountFromSecret(secretName, secretNamespace string)
649649

650650
secret, err := d.cloud.KubeClient.CoreV1().Secrets(secretNamespace).Get(context.TODO(), secretName, metav1.GetOptions{})
651651
if err != nil {
652-
return "", "", fmt.Errorf("could not get secret(%v): %v", secretName, err)
652+
return "", "", fmt.Errorf("could not get secret(%v): %w", secretName, err)
653653
}
654654

655655
return string(secret.Data[defaultSecretAccountName][:]), string(secret.Data[defaultSecretAccountKey][:]), nil

pkg/blob/blob_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"os"
2525
"reflect"
2626
"sort"
27+
"strings"
2728
"testing"
2829

2930
"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-02-01/storage"
@@ -472,7 +473,7 @@ func TestGetAuthEnv(t *testing.T) {
472473
mockStorageAccountsClient.EXPECT().ListKeys(gomock.Any(), gomock.Any(), gomock.Any()).Return(accountListKeysResult, rerr).AnyTimes()
473474
_, _, _, err := d.GetAuthEnv(context.TODO(), volumeID, "", attrib, secret)
474475
expectedErr := fmt.Errorf("no key for storage account(storageaccountname) under resource group(rg), err Retriable: false, RetryAfter: 0s, HTTPStatusCode: 0, RawError: test")
475-
if !reflect.DeepEqual(err, expectedErr) {
476+
if !strings.EqualFold(err.Error(), expectedErr.Error()) {
476477
t.Errorf("actualErr: (%v), expectedErr: (%v)", err, expectedErr)
477478
}
478479
},
@@ -581,7 +582,7 @@ func TestGetStorageAccountAndContainer(t *testing.T) {
581582
mockStorageAccountsClient.EXPECT().ListKeys(gomock.Any(), gomock.Any(), gomock.Any()).Return(accountListKeysResult, rerr).AnyTimes()
582583
_, _, _, _, err := d.GetStorageAccountAndContainer(context.TODO(), volumeID, attrib, secret)
583584
expectedErr := fmt.Errorf("no key for storage account(f5713de20cde511e8ba4900) under resource group(rg), err Retriable: false, RetryAfter: 0s, HTTPStatusCode: 0, RawError: test")
584-
if !reflect.DeepEqual(err, expectedErr) {
585+
if !strings.EqualFold(err.Error(), expectedErr.Error()) {
585586
t.Errorf("actualErr: (%v), expectedErr: (%v)", err, expectedErr)
586587
}
587588
},

pkg/blob/controllerserver.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
237237

238238
if accountKey == "" {
239239
if accountName, accountKey, err = d.GetStorageAccesskey(ctx, accountOptions, req.GetSecrets(), secretName, secretNamespace); err != nil {
240-
return nil, fmt.Errorf("failed to GetStorageAccesskey on account(%s) rg(%s), error: %v", accountOptions.Name, accountOptions.ResourceGroup, err)
240+
return nil, fmt.Errorf("failed to GetStorageAccesskey on account(%s) rg(%s), error: %w", accountOptions.Name, accountOptions.ResourceGroup, err)
241241
}
242242
}
243243

@@ -262,7 +262,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
262262
blobClient := client.GetBlobService()
263263
container := blobClient.GetContainerReference(validContainerName)
264264
if _, err = container.CreateIfNotExists(&azstorage.CreateContainerOptions{Access: azstorage.ContainerAccessTypePrivate}); err != nil {
265-
return nil, fmt.Errorf("failed to create container(%s) on account(%s) type(%s) rg(%s) location(%s) size(%d), error: %v", validContainerName, accountName, storageAccountType, resourceGroup, location, requestGiB, err)
265+
return nil, fmt.Errorf("failed to create container(%s) on account(%s) type(%s) rg(%s) location(%s) size(%d), error: %w", validContainerName, accountName, storageAccountType, resourceGroup, location, requestGiB, err)
266266
}
267267

268268
if storeAccountKey && len(req.GetSecrets()) == 0 {
@@ -331,7 +331,7 @@ func (d *Driver) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest)
331331
if len(req.GetSecrets()) == 0 { // check whether account is provided by secret
332332
accountKey, err = d.cloud.GetStorageAccesskey(ctx, accountName, resourceGroupName)
333333
if err != nil {
334-
return nil, fmt.Errorf("no key for storage account(%s) under resource group(%s), err %v", accountName, resourceGroupName, err)
334+
return nil, fmt.Errorf("no key for storage account(%s) under resource group(%s), err %w", accountName, resourceGroupName, err)
335335
}
336336
} else {
337337
accountName, accountKey, err = getStorageAccount(req.GetSecrets())
@@ -351,7 +351,7 @@ func (d *Driver) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest)
351351
err = wait.ExponentialBackoff(d.cloud.RequestBackoff(), func() (bool, error) {
352352
_, err := container.DeleteIfExists(nil)
353353
if err != nil && !strings.Contains(err.Error(), "ContainerBeingDeleted") {
354-
return false, fmt.Errorf("failed to delete container(%s) on account(%s), error: %v", containerName, accountName, err)
354+
return false, fmt.Errorf("failed to delete container(%s) on account(%s), error: %w", containerName, accountName, err)
355355
}
356356
return true, nil
357357
})
@@ -388,7 +388,7 @@ func (d *Driver) ValidateVolumeCapabilities(ctx context.Context, req *csi.Valida
388388
if len(req.GetSecrets()) == 0 { // check whether account is provided by secret
389389
accountKey, err = d.cloud.GetStorageAccesskey(ctx, accountName, resourceGroupName)
390390
if err != nil {
391-
return nil, fmt.Errorf("no key for storage account(%s) under resource group(%s), err %v", accountName, resourceGroupName, err)
391+
return nil, fmt.Errorf("no key for storage account(%s) under resource group(%s), err %w", accountName, resourceGroupName, err)
392392
}
393393
} else {
394394
accountName, accountKey, err = getStorageAccount(req.GetSecrets())

pkg/blob/controllerserver_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"fmt"
2222
"reflect"
23+
"strings"
2324
"testing"
2425

2526
"google.golang.org/grpc/codes"
@@ -314,7 +315,7 @@ func TestDeleteVolume(t *testing.T) {
314315
mockStorageAccountsClient.EXPECT().ListKeys(gomock.Any(), gomock.Any(), gomock.Any()).Return(accountListKeysResult, rerr).AnyTimes()
315316
expectedErr := fmt.Errorf("no key for storage account(test) under resource group(unit), err Retriable: false, RetryAfter: 0s, HTTPStatusCode: 0, RawError: test")
316317
_, err := d.DeleteVolume(context.Background(), req)
317-
if !reflect.DeepEqual(err, expectedErr) {
318+
if !strings.EqualFold(err.Error(), expectedErr.Error()) {
318319
t.Errorf("actualErr: (%v), expectedErr: (%v)", err, expectedErr)
319320
}
320321
},
@@ -443,7 +444,7 @@ func TestValidateVolumeCapabilities(t *testing.T) {
443444
mockStorageAccountsClient.EXPECT().ListKeys(gomock.Any(), gomock.Any(), gomock.Any()).Return(accountListKeysResult, rerr).AnyTimes()
444445
expectedErr := fmt.Errorf("no key for storage account(test) under resource group(unit), err Retriable: false, RetryAfter: 0s, HTTPStatusCode: 0, RawError: test")
445446
_, err := d.ValidateVolumeCapabilities(context.Background(), req)
446-
if !reflect.DeepEqual(err, expectedErr) {
447+
if !strings.EqualFold(err.Error(), expectedErr.Error()) {
447448
t.Errorf("actualErr: (%v), expectedErr: (%v)", err, expectedErr)
448449
}
449450
},

pkg/blob/nodeserver.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ func (d *Driver) mountBlobfuseWithProxy(args string, authEnv []string) (string,
129129
klog.V(2).Infof("mouting using blobfuse proxy")
130130
var resp *mount_azure_blob.MountAzureBlobResponse
131131
var output string
132-
connectionTimout := time.Duration(d.blobfuseProxyConnTimout)
133-
ctx, cancel := context.WithTimeout(context.Background(), connectionTimout*time.Second)
132+
connectionTimout := time.Duration(d.blobfuseProxyConnTimout) * time.Second
133+
ctx, cancel := context.WithTimeout(context.Background(), connectionTimout)
134134
defer cancel()
135135
conn, err := grpc.DialContext(ctx, d.blobfuseProxyEndpoint, grpc.WithInsecure(), grpc.WithBlock())
136136
if err == nil {
@@ -309,7 +309,7 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe
309309
}
310310

311311
if err != nil {
312-
err = fmt.Errorf("Mount failed with error: %v, output: %v", err, output)
312+
err = fmt.Errorf("Mount failed with error: %w, output: %v", err, output)
313313
klog.Errorf("%v", err)
314314
notMnt, mntErr := d.mounter.IsLikelyNotMountPoint(targetPath)
315315
if mntErr != nil {

pkg/blob/nodeserver_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@ func TestNewMountClient(t *testing.T) {
139139
// will result in following error: failed to build resolver: invalid (non-empty) authority: tmp
140140
client := NewMountClient(conn)
141141
valueType := reflect.TypeOf(client).String()
142-
fmt.Println(valueType)
143142
assert.Equal(t, valueType, "*blob.MountClient")
144143
}
145144

pkg/blobfuse-proxy/server/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func (server *MountServer) MountAzureBlob(ctx context.Context,
6666
result.Output = string(output)
6767
klog.V(2).Infof("blobfuse output: %s\n", result.Output)
6868
if err != nil {
69-
return &result, fmt.Errorf("%v %s", err, result.Output)
69+
return &result, fmt.Errorf("%w %s", err, result.Output)
7070
}
7171
return &result, nil
7272
}

0 commit comments

Comments
 (0)