diff --git a/staging/src/k8s.io/legacy-cloud-providers/vsphere/credentialmanager.go b/staging/src/k8s.io/legacy-cloud-providers/vsphere/credentialmanager.go index 64db83926fc..59d186f9bac 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/vsphere/credentialmanager.go +++ b/staging/src/k8s.io/legacy-cloud-providers/vsphere/credentialmanager.go @@ -77,6 +77,8 @@ func (secretCredentialManager *SecretCredentialManager) GetCredential(server str klog.Warningf("secret %q not found in namespace %q", secretCredentialManager.SecretName, secretCredentialManager.SecretNamespace) } + // Converting server FQIN to lowercase to consolidate with config parsing approach + server = strings.ToLower(server) credential, found := secretCredentialManager.Cache.GetCredential(server) if !found { klog.Errorf("credentials not found for server %q", server) diff --git a/staging/src/k8s.io/legacy-cloud-providers/vsphere/credentialmanager_test.go b/staging/src/k8s.io/legacy-cloud-providers/vsphere/credentialmanager_test.go index d8ec6ed5fdf..b4909f4d337 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/vsphere/credentialmanager_test.go +++ b/staging/src/k8s.io/legacy-cloud-providers/vsphere/credentialmanager_test.go @@ -20,6 +20,7 @@ package vsphere import ( "reflect" + "strings" "testing" corev1 "k8s.io/api/core/v1" @@ -37,6 +38,7 @@ func TestSecretCredentialManager_GetCredential(t *testing.T) { testPassword = "password" testServer = "0.0.0.0" testServer2 = "0.0.1.1" + testServerFQIN = "ExAmple.com" testUserServer2 = "user1" testPasswordServer2 = "password1" testIncorrectServer = "1.1.1.1" @@ -89,6 +91,14 @@ func TestSecretCredentialManager_GetCredential(t *testing.T) { }, } + fqinSecret := &corev1.Secret{ + ObjectMeta: metaObj, + Data: map[string][]byte{ + testServerFQIN + "." + userKey: []byte(testUser), + testServerFQIN + "." + passwordKey: []byte(testPassword), + }, + } + emptySecret := &corev1.Secret{ ObjectMeta: metaObj, Data: map[string][]byte{}, @@ -183,6 +193,20 @@ func TestSecretCredentialManager_GetCredential(t *testing.T) { }, }, }, + { + testName: "GetCredential for FQIN server name", + ops: []string{addSecretOp, getCredentialsOp}, + expectedValues: []interface{}{ + OpSecretTest{ + fqinSecret, + }, + GetCredentialsTest{ + username: testUser, + password: testPassword, + server: testServerFQIN, + }, + }, + }, } // TODO: replace 0 with NoResyncPeriodFunc() once it moved out pkg/controller/controller_utils.go in k/k. @@ -254,9 +278,10 @@ func TestSecretCredentialManager_GetCredential(t *testing.T) { func TestParseSecretConfig(t *testing.T) { var ( - testUsername = "Admin" - testPassword = "Password" - testIP = "10.20.30.40" + testUsername = "Admin" + testPassword = "Password" + testIP = "10.20.30.40" + testServerFQIN = "ExAmple.com" ) var testcases = []struct { testName string @@ -311,6 +336,20 @@ func TestParseSecretConfig(t *testing.T) { }, expectedError: ErrCredentialMissing, }, + { + testName: "FQIN stored as lowercase", + data: map[string][]byte{ + testServerFQIN + ".username": []byte(testUsername), + testServerFQIN + ".password": []byte(testPassword), + }, + config: map[string]*Credential{ + strings.ToLower(testServerFQIN): { + User: testUsername, + Password: testPassword, + }, + }, + expectedError: nil, + }, { testName: "IP with unknown key", data: map[string][]byte{