diff --git a/pkg/cloudprovider/providers/azure/auth/azure_auth.go b/pkg/cloudprovider/providers/azure/auth/azure_auth.go index 948206f8eb6..a2760fbcd14 100644 --- a/pkg/cloudprovider/providers/azure/auth/azure_auth.go +++ b/pkg/cloudprovider/providers/azure/auth/azure_auth.go @@ -43,7 +43,7 @@ type AzureAuthConfig struct { // The password of the client certificate for an AAD application with RBAC access to talk to Azure RM APIs AADClientCertPassword string `json:"aadClientCertPassword" yaml:"aadClientCertPassword"` // Use managed service identity for the virtual machine to access Azure ARM APIs - UseManagedIdentityExtension bool `json:"useManagedIdentityExtension"` + UseManagedIdentityExtension bool `json:"useManagedIdentityExtension" yaml:"useManagedIdentityExtension"` // The ID of the Azure Subscription that the cluster is deployed in SubscriptionID string `json:"subscriptionId" yaml:"subscriptionId"` } diff --git a/pkg/cloudprovider/providers/azure/azure.go b/pkg/cloudprovider/providers/azure/azure.go index d37a7b2e45b..38a1aa4426d 100644 --- a/pkg/cloudprovider/providers/azure/azure.go +++ b/pkg/cloudprovider/providers/azure/azure.go @@ -109,11 +109,8 @@ type Config struct { // Use instance metadata service where possible UseInstanceMetadata bool `json:"useInstanceMetadata" yaml:"useInstanceMetadata"` - // Use managed service identity for the virtual machine to access Azure ARM APIs - UseManagedIdentityExtension bool `json:"useManagedIdentityExtension"` - // Maximum allowed LoadBalancer Rule Count is the limit enforced by Azure Load balancer - MaximumLoadBalancerRuleCount int `json:"maximumLoadBalancerRuleCount"` + MaximumLoadBalancerRuleCount int `json:"maximumLoadBalancerRuleCount" yaml:"maximumLoadBalancerRuleCount"` } // Cloud holds the config and clients diff --git a/pkg/cloudprovider/providers/azure/azure_test.go b/pkg/cloudprovider/providers/azure/azure_test.go index 11801f42255..1569ec34a4a 100644 --- a/pkg/cloudprovider/providers/azure/azure_test.go +++ b/pkg/cloudprovider/providers/azure/azure_test.go @@ -17,6 +17,7 @@ limitations under the License. package azure import ( + "bytes" "context" "encoding/json" "fmt" @@ -37,10 +38,85 @@ import ( "github.com/Azure/azure-sdk-for-go/arm/compute" "github.com/Azure/azure-sdk-for-go/arm/network" "github.com/Azure/go-autorest/autorest/to" + "github.com/stretchr/testify/assert" ) var testClusterName = "testCluster" +func TestParseConfig(t *testing.T) { + azureConfig := `{ + "aadClientCertPassword": "aadClientCertPassword", + "aadClientCertPath": "aadClientCertPath", + "aadClientId": "aadClientId", + "aadClientSecret": "aadClientSecret", + "cloud":"AzurePublicCloud", + "cloudProviderBackoff": true, + "cloudProviderBackoffDuration": 1, + "cloudProviderBackoffExponent": 1, + "cloudProviderBackoffJitter": 1, + "cloudProviderBackoffRetries": 1, + "cloudProviderRatelimit": true, + "cloudProviderRateLimitBucket": 1, + "CloudProviderRateLimitBucketWrite": 1, + "cloudProviderRateLimitQPS": 1, + "CloudProviderRateLimitQPSWrite": 1, + "location": "location", + "maximumLoadBalancerRuleCount": 1, + "primaryAvailabilitySetName": "primaryAvailabilitySetName", + "primaryScaleSetName": "primaryScaleSetName", + "resourceGroup": "resourceGroup", + "routeTableName": "routeTableName", + "securityGroupName": "securityGroupName", + "subnetName": "subnetName", + "subscriptionId": "subscriptionId", + "tenantId": "tenantId", + "useInstanceMetadata": true, + "useManagedIdentityExtension": true, + "vnetName": "vnetName", + "vnetResourceGroup": "vnetResourceGroup", + vmType: "standard" + }` + expected := &Config{ + AzureAuthConfig: auth.AzureAuthConfig{ + AADClientCertPassword: "aadClientCertPassword", + AADClientCertPath: "aadClientCertPath", + AADClientID: "aadClientId", + AADClientSecret: "aadClientSecret", + Cloud: "AzurePublicCloud", + SubscriptionID: "subscriptionId", + TenantID: "tenantId", + UseManagedIdentityExtension: true, + }, + CloudProviderBackoff: true, + CloudProviderBackoffDuration: 1, + CloudProviderBackoffExponent: 1, + CloudProviderBackoffJitter: 1, + CloudProviderBackoffRetries: 1, + CloudProviderRateLimit: true, + CloudProviderRateLimitBucket: 1, + CloudProviderRateLimitBucketWrite: 1, + CloudProviderRateLimitQPS: 1, + CloudProviderRateLimitQPSWrite: 1, + Location: "location", + MaximumLoadBalancerRuleCount: 1, + PrimaryAvailabilitySetName: "primaryAvailabilitySetName", + PrimaryScaleSetName: "primaryScaleSetName", + ResourceGroup: "resourceGroup", + RouteTableName: "routeTableName", + SecurityGroupName: "securityGroupName", + SubnetName: "subnetName", + UseInstanceMetadata: true, + VMType: "standard", + VnetName: "vnetName", + VnetResourceGroup: "vnetResourceGroup", + } + + buffer := bytes.NewBufferString(azureConfig) + config, err := parseConfig(buffer) + assert.NoError(t, err) + assert.Equal(t, expected, config) +} + // Test flipServiceInternalAnnotation func TestFlipServiceInternalAnnotation(t *testing.T) { svc := getTestService("servicea", v1.ProtocolTCP, 80)