Skip to content

Commit 5f9279c

Browse files
MartinForRealcvvz
authored andcommitted
refactor: load config with configloader
Signed-off-by: Fan Shang Xiang <[email protected]>
1 parent 4328477 commit 5f9279c

File tree

5 files changed

+22
-28
lines changed

5 files changed

+22
-28
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ require (
4646
github.com/satori/go.uuid v1.2.0
4747
k8s.io/apiserver v0.28.4
4848
k8s.io/pod-security-admission v0.28.4
49+
sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.0-20231205023417-1ba5a224ab0e
4950
)
5051

5152
require (
@@ -161,7 +162,6 @@ require (
161162
k8s.io/kubelet v0.28.4 // indirect
162163
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect
163164
sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.0.0-20231205023417-1ba5a224ab0e // indirect
164-
sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.0.0-20231205023417-1ba5a224ab0e // indirect
165165
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
166166
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
167167
)

pkg/blob/azure.go

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,17 @@ import (
2222
"os"
2323
"strings"
2424

25-
"golang.org/x/net/context"
26-
2725
kv "github.com/Azure/azure-sdk-for-go/services/keyvault/2016-10-01/keyvault"
2826
"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
2927
"github.com/Azure/azure-sdk-for-go/storage"
30-
3128
"github.com/Azure/go-autorest/autorest"
32-
29+
"golang.org/x/net/context"
3330
clientset "k8s.io/client-go/kubernetes"
3431
"k8s.io/client-go/rest"
3532
"k8s.io/client-go/tools/clientcmd"
3633
"k8s.io/klog/v2"
3734
"k8s.io/utils/pointer"
38-
35+
"sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader"
3936
azure "sigs.k8s.io/cloud-provider-azure/pkg/provider"
4037
providerconfig "sigs.k8s.io/cloud-provider-azure/pkg/provider/config"
4138
)
@@ -52,20 +49,14 @@ func IsAzureStackCloud(cloud *azure.Cloud) bool {
5249
}
5350

5451
// getCloudProvider get Azure Cloud Provider
55-
func GetCloudProvider(kubeconfig, nodeID, secretName, secretNamespace, userAgent string, allowEmptyCloudConfig bool, kubeAPIQPS float64, kubeAPIBurst int) (*azure.Cloud, error) {
52+
func GetCloudProvider(ctx context.Context, kubeconfig, nodeID, secretName, secretNamespace, userAgent string, allowEmptyCloudConfig bool, kubeAPIQPS float64, kubeAPIBurst int) (*azure.Cloud, error) {
5653
var (
5754
config *azure.Config
5855
kubeClient *clientset.Clientset
5956
fromSecret bool
6057
)
6158

62-
az := &azure.Cloud{
63-
InitSecretConfig: azure.InitSecretConfig{
64-
SecretName: secretName,
65-
SecretNamespace: secretNamespace,
66-
CloudConfigKey: "cloud-config",
67-
},
68-
}
59+
az := &azure.Cloud{}
6960
az.Environment.StorageEndpointSuffix = storage.DefaultBaseURL
7061

7162
kubeCfg, err := getKubeConfig(kubeconfig)
@@ -85,19 +76,26 @@ func GetCloudProvider(kubeconfig, nodeID, secretName, secretNamespace, userAgent
8576
}
8677

8778
if kubeClient != nil {
88-
klog.V(2).Infof("reading cloud config from secret %s/%s", az.SecretNamespace, az.SecretName)
8979
az.KubeClient = kubeClient
90-
config, err = az.GetConfigFromSecret()
80+
klog.V(2).Infof("reading cloud config from secret %s/%s", secretNamespace, secretName)
81+
config, err := configloader.Load[azure.Config](ctx, &configloader.K8sSecretLoaderConfig{
82+
K8sSecretConfig: configloader.K8sSecretConfig{
83+
SecretName: secretName,
84+
SecretNamespace: secretNamespace,
85+
CloudConfigKey: "cloud-config",
86+
},
87+
KubeClient: kubeClient,
88+
}, nil)
9189
if err == nil && config != nil {
9290
fromSecret = true
9391
}
9492
if err != nil {
95-
klog.V(2).Infof("InitializeCloudFromSecret: failed to get cloud config from secret %s/%s: %v", az.SecretNamespace, az.SecretName, err)
93+
klog.V(2).Infof("InitializeCloudFromSecret: failed to get cloud config from secret %s/%s: %v", secretNamespace, secretName, err)
9694
}
9795
}
9896

9997
if config == nil {
100-
klog.V(2).Infof("could not read cloud config from secret %s/%s", az.SecretNamespace, az.SecretName)
98+
klog.V(2).Infof("could not read cloud config from secret %s/%s", secretNamespace, secretName)
10199
credFile, ok := os.LookupEnv(DefaultAzureCredentialFileEnv)
102100
if ok && strings.TrimSpace(credFile) != "" {
103101
klog.V(2).Infof("%s env var set as %v", DefaultAzureCredentialFileEnv, credFile)
@@ -106,15 +104,11 @@ func GetCloudProvider(kubeconfig, nodeID, secretName, secretNamespace, userAgent
106104
klog.V(2).Infof("use default %s env var: %v", DefaultAzureCredentialFileEnv, credFile)
107105
}
108106

109-
credFileConfig, err := os.Open(credFile)
107+
config, err = configloader.Load[azure.Config](ctx, nil, &configloader.FileLoaderConfig{
108+
FilePath: credFile,
109+
})
110110
if err != nil {
111111
klog.Warningf("load azure config from file(%s) failed with %v", credFile, err)
112-
} else {
113-
defer credFileConfig.Close()
114-
klog.V(2).Infof("read cloud config from file: %s successfully", credFile)
115-
if config, err = azure.ParseConfig(credFileConfig); err != nil {
116-
klog.Warningf("parse config file(%s) failed with error: %v", credFile, err)
117-
}
118112
}
119113
}
120114

pkg/blob/azure_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ users:
168168
}
169169
os.Setenv(DefaultAzureCredentialFileEnv, fakeCredFile)
170170
}
171-
cloud, err := GetCloudProvider(test.kubeconfig, test.nodeID, "", "", test.userAgent, test.allowEmptyCloudConfig, 25.0, 50)
171+
cloud, err := GetCloudProvider(context.Background(), test.kubeconfig, test.nodeID, "", "", test.userAgent, test.allowEmptyCloudConfig, 25.0, 50)
172172
if !reflect.DeepEqual(err, test.expectedErr) && test.expectedErr != nil && !strings.Contains(err.Error(), test.expectedErr.Error()) {
173173
t.Errorf("desc: %s,\n input: %q, GetCloudProvider err: %v, expectedErr: %v", test.desc, test.kubeconfig, err, test.expectedErr)
174174
}

pkg/blobplugin/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func handle() {
9898
userAgent := blob.GetUserAgent(driverOptions.DriverName, *customUserAgent, *userAgentSuffix)
9999
klog.V(2).Infof("driver userAgent: %s", userAgent)
100100

101-
cloud, err := blob.GetCloudProvider(*kubeconfig, driverOptions.NodeID, *cloudConfigSecretName, *cloudConfigSecretNamespace, userAgent, *allowEmptyCloudConfig, *kubeAPIQPS, *kubeAPIBurst)
101+
cloud, err := blob.GetCloudProvider(context.Background(), *kubeconfig, driverOptions.NodeID, *cloudConfigSecretName, *cloudConfigSecretNamespace, userAgent, *allowEmptyCloudConfig, *kubeAPIQPS, *kubeAPIBurst)
102102
if err != nil {
103103
klog.Fatalf("failed to get Azure Cloud Provider, error: %v", err)
104104
}

test/e2e/suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ var _ = ginkgo.SynchronizedBeforeSuite(func(ctx ginkgo.SpecContext) []byte {
152152
BlobfuseProxyConnTimout: 5,
153153
EnableBlobMockMount: false,
154154
}
155-
cloud, err := blob.GetCloudProvider(kubeconfig, driverOptions.NodeID, "", "", "", false, 0, 0)
155+
cloud, err := blob.GetCloudProvider(context.Background(), kubeconfig, driverOptions.NodeID, "", "", "", false, 0, 0)
156156
gomega.Expect(err).NotTo(gomega.HaveOccurred())
157157
blobDriver = blob.NewDriver(&driverOptions, cloud)
158158
go func() {

0 commit comments

Comments
 (0)