Skip to content

[release-1.23] cleanup: upgrade golint version and fix golint errors #1601

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/static.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ jobs:
- name: Run linter
uses: golangci/golangci-lint-action@v3
with:
version: v1.54
version: v1.60
args: -E=gofmt,unused,ineffassign,revive,misspell,exportloopref,asciicheck,bodyclose,depguard,dogsled,durationcheck,errname,forbidigo -D=staticcheck --timeout=30m0s
4 changes: 2 additions & 2 deletions hack/verify-golint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ set -euo pipefail

if [[ -z "$(command -v golangci-lint)" ]]; then
echo "Cannot find golangci-lint. Installing golangci-lint..."
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.45.0
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.60.0
export PATH=$PATH:$(go env GOPATH)/bin
fi

echo "Verifying golint"

golangci-lint run --no-config --enable=golint --disable=typecheck --deadline=10m
golangci-lint run --no-config -E=gofmt,unused,ineffassign,revive,misspell,exportloopref,asciicheck,bodyclose,depguard,dogsled,durationcheck,errname,forbidigo -D=staticcheck --timeout=30m

echo "Congratulations! Lint check completed for all Go source files."
2 changes: 1 addition & 1 deletion pkg/blob/blob.go
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ func NewDriver(options *DriverOptions, kubeClient kubernetes.Interface, cloud *p
d.Version = driverVersion
d.NodeID = options.NodeID

getter := func(key string) (interface{}, error) { return nil, nil }
getter := func(_ string) (interface{}, error) { return nil, nil }
if d.accountSearchCache, err = azcache.NewTimedCache(time.Minute, getter, false); err != nil {
klog.Fatalf("%v", err)
}
Expand Down
22 changes: 11 additions & 11 deletions pkg/blob/controllerserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,13 +203,13 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
// only do validations here, used in NodeStageVolume, NodePublishVolume
if v != "" {
if _, err := strconv.ParseUint(v, 8, 32); err != nil {
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid mountPermissions %s in storage class", v))
return nil, status.Errorf(codes.InvalidArgument, "invalid mountPermissions %s in storage class", v)
}
}
case useDataPlaneAPIField:
useDataPlaneAPI = strings.EqualFold(v, trueValue)
default:
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid parameter %q in storage class", k))
return nil, status.Errorf(codes.InvalidArgument, "invalid parameter %q in storage class", k)
}
}

Expand All @@ -220,7 +220,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
}

if matchTags && account != "" {
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("matchTags must set as false when storageAccount(%s) is provided", account))
return nil, status.Errorf(codes.InvalidArgument, "matchTags must set as false when storageAccount(%s) is provided", account)
}

if resourceGroup == "" {
Expand Down Expand Up @@ -286,13 +286,13 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
if IsAzureStackCloud(d.cloud) {
accountKind = string(storage.KindStorage)
if storageAccountType != "" && storageAccountType != string(storage.SkuNameStandardLRS) && storageAccountType != string(storage.SkuNamePremiumLRS) {
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", storageAccountType, storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS))
return nil, status.Errorf(codes.InvalidArgument, "Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", storageAccountType, storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS)
}
}

tags, err := util.ConvertTagsToMap(customTags)
if err != nil {
return nil, status.Errorf(codes.InvalidArgument, err.Error())
return nil, status.Errorf(codes.InvalidArgument, "%v", err)
}

if strings.TrimSpace(storageEndpointSuffix) == "" {
Expand Down Expand Up @@ -380,7 +380,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
// search in cache first
cache, err := d.accountSearchCache.Get(lockKey, azcache.CacheReadTypeDefault)
if err != nil {
return nil, status.Errorf(codes.Internal, err.Error())
return nil, status.Errorf(codes.Internal, "%v", err)
}
if cache != nil {
accountName = cache.(string)
Expand Down Expand Up @@ -841,7 +841,7 @@ func (d *Driver) authorizeAzcopyWithIdentity() ([]string, error) {
authAzcopyEnv = append(authAzcopyEnv, fmt.Sprintf("%s=%s", azcopySPAApplicationID, azureAuthConfig.AADClientID))
authAzcopyEnv = append(authAzcopyEnv, fmt.Sprintf("%s=%s", azcopySPAClientSecret, azureAuthConfig.AADClientSecret))
authAzcopyEnv = append(authAzcopyEnv, fmt.Sprintf("%s=%s", azcopyTenantID, azureAuthConfig.TenantID))
klog.V(2).Infof(fmt.Sprintf("set AZCOPY_SPA_APPLICATION_ID=%s, AZCOPY_TENANT_ID=%s successfully", azureAuthConfig.AADClientID, azureAuthConfig.TenantID))
klog.V(2).Infof("set AZCOPY_SPA_APPLICATION_ID=%s, AZCOPY_TENANT_ID=%s successfully", azureAuthConfig.AADClientID, azureAuthConfig.TenantID)

return authAzcopyEnv, nil
}
Expand Down Expand Up @@ -897,10 +897,10 @@ func isValidVolumeCapabilities(volCaps []*csi.VolumeCapability) error {
func parseDays(dayStr string) (int32, error) {
days, err := strconv.Atoi(dayStr)
if err != nil {
return 0, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid %s:%s in storage class", softDeleteBlobsField, dayStr))
return 0, status.Errorf(codes.InvalidArgument, "invalid %s:%s in storage class", softDeleteBlobsField, dayStr)
}
if days <= 0 || days > 365 {
return 0, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid %s:%s in storage class, should be in range [1, 365]", softDeleteBlobsField, dayStr))
return 0, status.Errorf(codes.InvalidArgument, "invalid %s:%s in storage class, should be in range [1, 365]", softDeleteBlobsField, dayStr)
}

return int32(days), nil
Expand All @@ -920,11 +920,11 @@ func (d *Driver) generateSASToken(accountName, accountKey, storageEndpointSuffix

credential, err := azblob.NewSharedKeyCredential(accountName, accountKey)
if err != nil {
return "", status.Errorf(codes.Internal, fmt.Sprintf("failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", accountName, err.Error()))
return "", status.Errorf(codes.Internal, "failed to generate sas token in creating new shared key credential, accountName: %s, err: %v", accountName, err)
}
serviceClient, err := service.NewClientWithSharedKeyCredential(fmt.Sprintf("https://%s.blob.%s/", accountName, storageEndpointSuffix), credential, nil)
if err != nil {
return "", status.Errorf(codes.Internal, fmt.Sprintf("failed to generate sas token in creating new client with shared key credential, accountName: %s, err: %s", accountName, err.Error()))
return "", status.Errorf(codes.Internal, "failed to generate sas token in creating new client with shared key credential, accountName: %s, err: %v", accountName, err)
}
sasURL, err := serviceClient.GetSASURL(
sas.AccountResourceTypes{Object: true, Service: false, Container: true},
Expand Down
20 changes: 10 additions & 10 deletions pkg/blob/controllerserver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func (c *mockBlobClient) CreateContainer(_ context.Context, _, _, _, _ string, _
case MANAGEMENT:
return retry.GetError(&http.Response{}, fmt.Errorf(containerBeingDeletedManagementAPIError))
case CUSTOM:
return retry.GetError(&http.Response{}, fmt.Errorf(*c.custom))
return retry.GetError(&http.Response{}, fmt.Errorf("%v", *c.custom))
}
return nil
}
Expand All @@ -79,7 +79,7 @@ func (c *mockBlobClient) DeleteContainer(_ context.Context, _, _, _, _ string) *
case MANAGEMENT:
return retry.GetError(&http.Response{}, fmt.Errorf(containerBeingDeletedManagementAPIError))
case CUSTOM:
return retry.GetError(&http.Response{}, fmt.Errorf(*c.custom))
return retry.GetError(&http.Response{}, fmt.Errorf("%v", *c.custom))
}
return nil
}
Expand All @@ -90,7 +90,7 @@ func (c *mockBlobClient) GetContainer(_ context.Context, _, _, _, _ string) (sto
case MANAGEMENT:
return storage.BlobContainer{ContainerProperties: c.conProp}, retry.GetError(&http.Response{}, fmt.Errorf(containerBeingDeletedManagementAPIError))
case CUSTOM:
return storage.BlobContainer{ContainerProperties: c.conProp}, retry.GetError(&http.Response{}, fmt.Errorf(*c.custom))
return storage.BlobContainer{ContainerProperties: c.conProp}, retry.GetError(&http.Response{}, fmt.Errorf("%v", *c.custom))
}
return storage.BlobContainer{ContainerProperties: c.conProp}, nil
}
Expand Down Expand Up @@ -411,7 +411,7 @@ func TestCreateVolume(t *testing.T) {
controllerServiceCapability,
}

expectedErr := status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid parameter %q in storage class", "invalidparameter"))
expectedErr := status.Errorf(codes.InvalidArgument, "invalid parameter %q in storage class", "invalidparameter")
_, err := d.CreateVolume(context.Background(), req)
if !reflect.DeepEqual(err, expectedErr) {
t.Errorf("Unexpected error: %v", err)
Expand All @@ -433,7 +433,7 @@ func TestCreateVolume(t *testing.T) {
controllerServiceCapability,
}

expectedErr := status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid %s %s in storage class", "mountPermissions", "0abc"))
expectedErr := status.Errorf(codes.InvalidArgument, "invalid %s %s in storage class", "mountPermissions", "0abc")
_, err := d.CreateVolume(context.Background(), req)
if !reflect.DeepEqual(err, expectedErr) {
t.Errorf("Unexpected error: %v", err)
Expand Down Expand Up @@ -529,7 +529,7 @@ func TestCreateVolume(t *testing.T) {
controllerServiceCapability,
}

expectedErr := status.Errorf(codes.InvalidArgument, fmt.Sprintf("Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", "unit-test", storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS))
expectedErr := status.Errorf(codes.InvalidArgument, "Invalid skuName value: %s, as Azure Stack only supports %s and %s Storage Account types.", "unit-test", storage.SkuNamePremiumLRS, storage.SkuNameStandardLRS)
_, err := d.CreateVolume(context.Background(), req)
if !reflect.DeepEqual(err, expectedErr) {
t.Errorf("Unexpected error: %v", err)
Expand Down Expand Up @@ -1088,7 +1088,7 @@ func TestValidateVolumeCapabilities(t *testing.T) {
clientErr: NULL,
containerProp: &storage.ContainerProperties{},
expectedRes: nil,
expectedErr: status.Errorf(codes.Internal, retry.GetError(&http.Response{}, fmt.Errorf(containerBeingDeletedDataplaneAPIError)).Error().Error()),
expectedErr: status.Errorf(codes.Internal, "%v", retry.GetError(&http.Response{}, fmt.Errorf(containerBeingDeletedDataplaneAPIError)).Error()),
},
/*{ //Volume being shown as not existing. ContainerProperties.Deleted not setting correctly??
name: "Successful I/O",
Expand Down Expand Up @@ -1756,7 +1756,7 @@ func TestGenerateSASToken(t *testing.T) {
accountName: "unit-test",
accountKey: "fakeValue",
want: "",
expectedErr: status.Errorf(codes.Internal, fmt.Sprintf("failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "unit-test", "decode account key: illegal base64 data at input byte 8")),
expectedErr: status.Errorf(codes.Internal, "failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "unit-test", "decode account key: illegal base64 data at input byte 8"),
},
}
for _, tt := range tests {
Expand Down Expand Up @@ -1971,7 +1971,7 @@ func TestGetAzcopyAuth(t *testing.T) {
}

expectedAccountSASToken := ""
expectedErr := status.Errorf(codes.Internal, fmt.Sprintf("failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "accountName", "decode account key: illegal base64 data at input byte 8"))
expectedErr := status.Errorf(codes.Internal, "failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "accountName", "decode account key: illegal base64 data at input byte 8")
accountSASToken, _, err := d.getAzcopyAuth(context.Background(), "accountName", "", "core.windows.net", &azure.AccountOptions{}, secrets, "secretsName", "secretsNamespace", false)
if !reflect.DeepEqual(err, expectedErr) || !reflect.DeepEqual(accountSASToken, expectedAccountSASToken) {
t.Errorf("Unexpected accountSASToken: %s, Unexpected error: %v", accountSASToken, err)
Expand All @@ -1992,7 +1992,7 @@ func TestGetAzcopyAuth(t *testing.T) {

ctx := context.Background()
expectedAccountSASToken := ""
expectedErr := status.Errorf(codes.Internal, fmt.Sprintf("failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "accountName", "decode account key: illegal base64 data at input byte 8"))
expectedErr := status.Errorf(codes.Internal, "failed to generate sas token in creating new shared key credential, accountName: %s, err: %s", "accountName", "decode account key: illegal base64 data at input byte 8")
accountSASToken, _, err := d.getAzcopyAuth(ctx, "accountName", "", "core.windows.net", &azure.AccountOptions{}, secrets, "secretsName", "secretsNamespace", false)
if !reflect.DeepEqual(err, expectedErr) || !reflect.DeepEqual(accountSASToken, expectedAccountSASToken) {
t.Errorf("Unexpected accountSASToken: %s, Unexpected error: %v", accountSASToken, err)
Expand Down
12 changes: 6 additions & 6 deletions pkg/blob/nodeserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ func (d *Driver) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolu
if perm := getValueInMap(context, mountPermissionsField); perm != "" {
var err error
if mountPermissions, err = strconv.ParseUint(perm, 8, 32); err != nil {
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid mountPermissions %s", perm))
return nil, status.Errorf(codes.InvalidArgument, "invalid mountPermissions %s", perm)
}
}
}
Expand Down Expand Up @@ -141,7 +141,7 @@ func (d *Driver) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolu
klog.Warningf("NodePublishVolume: mock mount on volumeID(%s), this is only for TESTING!!!", volumeID)
if err := volumehelper.MakeDir(target, os.FileMode(mountPermissions)); err != nil {
klog.Errorf("MakeDir failed on target: %s (%v)", target, err)
return nil, status.Errorf(codes.Internal, err.Error())
return nil, status.Errorf(codes.Internal, "%v", err)
}
return &csi.NodePublishVolumeResponse{}, nil
}
Expand Down Expand Up @@ -288,7 +288,7 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe
var err error
var perm uint64
if perm, err = strconv.ParseUint(v, 8, 32); err != nil {
return nil, status.Errorf(codes.InvalidArgument, fmt.Sprintf("invalid mountPermissions %s", v))
return nil, status.Errorf(codes.InvalidArgument, "invalid mountPermissions %s", v)
}
if perm == 0 {
performChmodOp = false
Expand All @@ -310,7 +310,7 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe

_, accountName, _, containerName, authEnv, err := d.GetAuthEnv(ctx, volumeID, protocol, attrib, secrets)
if err != nil {
return nil, status.Errorf(codes.Internal, err.Error())
return nil, status.Errorf(codes.Internal, "%v", err)
}

// replace pv/pvc name namespace metadata in subDir
Expand Down Expand Up @@ -391,7 +391,7 @@ func (d *Driver) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRe
klog.Warningf("NodeStageVolume: mock mount on volumeID(%s), this is only for TESTING!!!", volumeID)
if err := volumehelper.MakeDir(targetPath, os.FileMode(mountPermissions)); err != nil {
klog.Errorf("MakeDir failed on target: %s (%v)", targetPath, err)
return nil, status.Errorf(codes.Internal, err.Error())
return nil, status.Errorf(codes.Internal, "%v", err)
}
return &csi.NodeStageVolumeResponse{}, nil
}
Expand Down Expand Up @@ -504,7 +504,7 @@ func (d *Driver) NodeGetVolumeStats(_ context.Context, req *csi.NodeGetVolumeSta
// check if the volume stats is cached
cache, err := d.volStatsCache.Get(req.VolumeId, azcache.CacheReadTypeDefault)
if err != nil {
return nil, status.Errorf(codes.Internal, err.Error())
return nil, status.Errorf(codes.Internal, "%v", err)
}
if cache != nil {
resp := cache.(csi.NodeGetVolumeStatsResponse)
Expand Down
4 changes: 2 additions & 2 deletions pkg/csi-common/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func ParseEndpoint(ep string) (string, string, error) {
func Listen(ctx context.Context, endpoint string) (net.Listener, error) {
proto, addr, err := ParseEndpoint(endpoint)
if err != nil {
klog.Errorf(err.Error())
klog.Errorf("%v", err)
return nil, err
}

Expand All @@ -53,7 +53,7 @@ func Listen(ctx context.Context, endpoint string) (net.Listener, error) {
addr = "/" + addr
}
if err := os.Remove(addr); err != nil && !os.IsNotExist(err) {
klog.Errorf("Failed to remove %s, error: %s", addr, err.Error())
klog.Errorf("Failed to remove %s, error: %v", addr, err)
return nil, err
}
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/csi-common/utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func TestLogGRPC(t *testing.T) {
klog.SetOutput(buf)
defer klog.SetOutput(io.Discard)

handler := func(ctx context.Context, req interface{}) (interface{}, error) { return nil, nil }
handler := func(_ context.Context, _ interface{}) (interface{}, error) { return nil, nil }
info := grpc.UnaryServerInfo{
FullMethod: "fake",
}
Expand Down
4 changes: 2 additions & 2 deletions test/e2e/dynamic_provisioning_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() {
testDriver driver.PVTestDriver
)

ginkgo.BeforeEach(func(ctx ginkgo.SpecContext) {
ginkgo.BeforeEach(func(_ ginkgo.SpecContext) {
checkPodsRestart := testCmd{
command: "sh",
args: []string{"test/utils/check_driver_pods_restart.sh"},
Expand Down Expand Up @@ -827,7 +827,7 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() {
test.Run(ctx, cs, ns)
})

ginkgo.It("[blob.csi.azure.com] verify examples", ginkgo.Label("flaky"), func(ctx ginkgo.SpecContext) {
ginkgo.It("[blob.csi.azure.com] verify examples", ginkgo.Label("flaky"), func(_ ginkgo.SpecContext) {
createExampleDeployment := testCmd{
command: "bash",
args: []string{"hack/verify-examples.sh"},
Expand Down
6 changes: 3 additions & 3 deletions test/e2e/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ var _ = ginkgo.SynchronizedBeforeSuite(func(ctx ginkgo.SpecContext) []byte {
}
execTestCmd([]testCmd{e2eBootstrap, createMetricsSVC})
return nil
}, func(ctx ginkgo.SpecContext, data []byte) {
}, func(_ ginkgo.SpecContext, _ []byte) {
// k8s.io/kubernetes/test/e2e/framework requires env KUBECONFIG to be set
// it does not fall back to defaults
if os.Getenv(kubeconfigEnvVar) == "" {
Expand Down Expand Up @@ -132,7 +132,7 @@ var _ = ginkgo.SynchronizedBeforeSuite(func(ctx ginkgo.SpecContext) []byte {
}()
})

var _ = ginkgo.SynchronizedAfterSuite(func(ctx ginkgo.SpecContext) {},
var _ = ginkgo.SynchronizedAfterSuite(func(_ ginkgo.SpecContext) {},
func(ctx ginkgo.SpecContext) {
blobLog := testCmd{
command: "bash",
Expand Down Expand Up @@ -181,7 +181,7 @@ func execTestCmd(cmds []testCmd) {
cmdSh.Stderr = os.Stderr
err := cmdSh.Run()
if err != nil {
log.Printf("Failed to run command: %s %s, Error: %s\n", cmd.command, strings.Join(cmd.args, " "), err.Error())
log.Printf("Failed to run command: %s %s, Error: %v\n", cmd.command, strings.Join(cmd.args, " "), err)
if !cmd.ignoreError {
gomega.Expect(err).NotTo(gomega.HaveOccurred())
}
Expand Down
Loading