Skip to content

Commit 51cbe4c

Browse files
committed
fix: set default userAgent issue
fix golint refactor fix ut
1 parent 6a19c3a commit 51cbe4c

File tree

2 files changed

+53
-27
lines changed

2 files changed

+53
-27
lines changed

pkg/blob/azure.go

Lines changed: 46 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import (
3535
"k8s.io/klog/v2"
3636

3737
"sigs.k8s.io/cloud-provider-azure/pkg/auth"
38-
azureprovider "sigs.k8s.io/cloud-provider-azure/pkg/provider"
38+
azure "sigs.k8s.io/cloud-provider-azure/pkg/provider"
3939
)
4040

4141
var (
@@ -45,50 +45,74 @@ var (
4545
)
4646

4747
// IsAzureStackCloud decides whether the driver is running on Azure Stack Cloud.
48-
func IsAzureStackCloud(cloud *azureprovider.Cloud) bool {
48+
func IsAzureStackCloud(cloud *azure.Cloud) bool {
4949
return strings.EqualFold(cloud.Config.Cloud, "AZURESTACKCLOUD")
5050
}
5151

5252
// getCloudProvider get Azure Cloud Provider
53-
func getCloudProvider(kubeconfig, nodeID, secretName, secretNamespace, userAgent string) (*azureprovider.Cloud, error) {
54-
az := &azureprovider.Cloud{
55-
InitSecretConfig: azureprovider.InitSecretConfig{
53+
func getCloudProvider(kubeconfig, nodeID, secretName, secretNamespace, userAgent string) (*azure.Cloud, error) {
54+
az := &azure.Cloud{
55+
InitSecretConfig: azure.InitSecretConfig{
5656
SecretName: secretName,
5757
SecretNamespace: secretNamespace,
5858
CloudConfigKey: "cloud-config",
5959
},
6060
}
61-
az.UserAgent = userAgent
61+
az.Environment.StorageEndpointSuffix = storage.DefaultBaseURL
62+
6263
kubeClient, err := getKubeClient(kubeconfig)
63-
if err != nil && !os.IsNotExist(err) && err != rest.ErrNotInCluster {
64-
return az, fmt.Errorf("failed to get KubeClient: %v", err)
64+
if err != nil {
65+
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)
68+
}
6569
}
6670

71+
var (
72+
config *azure.Config
73+
fromSecret bool
74+
)
75+
6776
if kubeClient != nil {
68-
klog.V(2).Infof("reading cloud config from secret")
77+
klog.V(2).Infof("reading cloud config from secret %s/%s", az.SecretNamespace, az.SecretName)
6978
az.KubeClient = kubeClient
70-
if err := az.InitializeCloudFromSecret(); err != nil {
71-
klog.V(2).Infof("InitializeCloudFromSecret failed with error: %v", err)
79+
config, err = az.GetConfigFromSecret()
80+
if err == nil && config != nil {
81+
fromSecret = true
82+
}
83+
if err != nil {
84+
klog.Warningf("InitializeCloudFromSecret: failed to get cloud config from secret %s/%s: %v", az.SecretNamespace, az.SecretName, err)
7285
}
7386
}
7487

75-
if az.TenantID == "" || az.SubscriptionID == "" || az.ResourceGroup == "" {
76-
klog.V(2).Infof("could not read cloud config from secret")
88+
if config == nil {
89+
klog.V(2).Infof("could not read cloud config from secret %s/%s", az.SecretNamespace, az.SecretName)
7790
credFile, ok := os.LookupEnv(DefaultAzureCredentialFileEnv)
78-
if ok {
91+
if ok && strings.TrimSpace(credFile) != "" {
7992
klog.V(2).Infof("%s env var set as %v", DefaultAzureCredentialFileEnv, credFile)
8093
} else {
8194
credFile = DefaultCredFilePath
8295
klog.V(2).Infof("use default %s env var: %v", DefaultAzureCredentialFileEnv, credFile)
8396
}
8497

85-
config, errOpenFile := os.Open(credFile)
86-
if errOpenFile != nil {
87-
err = fmt.Errorf("load azure config from file(%s) failed with %v", credFile, errOpenFile)
98+
credFileConfig, err := os.Open(credFile)
99+
if err != nil {
100+
klog.Warningf("load azure config from file(%s) failed with %v", credFile, err)
88101
} else {
89-
defer config.Close()
102+
defer credFileConfig.Close()
90103
klog.V(2).Infof("read cloud config from file: %s successfully", credFile)
91-
az, err = azureprovider.NewCloudWithoutFeatureGates(config, false)
104+
if config, err = azure.ParseConfig(credFileConfig); err != nil {
105+
klog.Warningf("parse config file(%s) failed with error: %v", credFile, err)
106+
}
107+
}
108+
}
109+
110+
if config == nil {
111+
klog.V(2).Infof("no cloud config provided, error: %v, driver will run without cloud config", err)
112+
} else {
113+
config.UserAgent = userAgent
114+
if err = az.InitializeCloudFromConfig(config, fromSecret, false); err != nil {
115+
klog.Warningf("InitializeCloudFromConfig failed with error: %v", err)
92116
}
93117
}
94118

@@ -97,13 +121,6 @@ func getCloudProvider(kubeconfig, nodeID, secretName, secretNamespace, userAgent
97121
az.KubeClient = kubeClient
98122
}
99123

100-
if err != nil {
101-
klog.V(2).Infof("no cloud config provided, error: %v, driver will run without cloud config", err)
102-
if az.Environment.StorageEndpointSuffix == "" {
103-
az.Environment.StorageEndpointSuffix = storage.DefaultBaseURL
104-
}
105-
}
106-
107124
isController := (nodeID == "")
108125
if isController {
109126
if err == nil {
@@ -117,6 +134,9 @@ func getCloudProvider(kubeconfig, nodeID, secretName, secretNamespace, userAgent
117134
klog.V(2).Infof("starting node server on node(%s)", nodeID)
118135
}
119136

137+
if az.Environment.StorageEndpointSuffix == "" {
138+
az.Environment.StorageEndpointSuffix = storage.DefaultBaseURL
139+
}
120140
return az, nil
121141
}
122142

pkg/blob/azure_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"testing"
2626

2727
"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2021-02-01/network"
28+
"github.com/Azure/azure-sdk-for-go/storage"
2829
"github.com/golang/mock/gomock"
2930

3031
"github.com/Azure/go-autorest/autorest/azure"
@@ -81,6 +82,7 @@ users:
8182
desc string
8283
kubeconfig string
8384
nodeID string
85+
userAgent string
8486
expectedErr error
8587
}{
8688
{
@@ -111,6 +113,7 @@ users:
111113
desc: "[success] out of cluster & in cluster, no kubeconfig, a fake credential file",
112114
kubeconfig: "",
113115
nodeID: "",
116+
userAgent: "useragent",
114117
expectedErr: nil,
115118
},
116119
}
@@ -150,12 +153,15 @@ users:
150153
}
151154
os.Setenv(DefaultAzureCredentialFileEnv, fakeCredFile)
152155
}
153-
cloud, err := getCloudProvider(test.kubeconfig, test.nodeID, "", "", "")
156+
cloud, err := getCloudProvider(test.kubeconfig, test.nodeID, "", "", test.userAgent)
154157
if !reflect.DeepEqual(err, test.expectedErr) {
155158
t.Errorf("desc: %s,\n input: %q, GetCloudProvider err: %v, expectedErr: %v", test.desc, test.kubeconfig, err, test.expectedErr)
156159
}
157160
if cloud == nil {
158161
t.Errorf("return value of getCloudProvider should not be nil even there is error")
162+
} else {
163+
assert.Equal(t, cloud.Environment.StorageEndpointSuffix, storage.DefaultBaseURL)
164+
assert.Equal(t, cloud.UserAgent, test.userAgent)
159165
}
160166
}
161167
}

0 commit comments

Comments
 (0)