diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/azure.go b/staging/src/k8s.io/legacy-cloud-providers/azure/azure.go index 951fc475ea7..bb674d85ada 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/azure.go +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/azure.go @@ -73,7 +73,9 @@ import ( const ( // CloudProviderName is the value used for the --cloud-provider flag - CloudProviderName = "azure" + CloudProviderName = "azure" + // AzureStackCloudName is the cloud name of Azure Stack + AzureStackCloudName = "AZURESTACKCLOUD" rateLimitQPSDefault = 1.0 rateLimitBucketDefault = 5 backoffRetriesDefault = 6 @@ -609,6 +611,7 @@ func (az *Cloud) configAzureClients( func (az *Cloud) getAzureClientConfig(servicePrincipalToken *adal.ServicePrincipalToken) *azclients.ClientConfig { azClientConfig := &azclients.ClientConfig{ + CloudName: az.Config.Cloud, Location: az.Config.Location, SubscriptionID: az.Config.SubscriptionID, ResourceManagerEndpoint: az.Environment.ResourceManagerEndpoint, diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_standard.go b/staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_standard.go index 1a92fdc6652..d1ab0fa753e 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_standard.go +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_standard.go @@ -141,7 +141,7 @@ func (as *availabilitySet) DetachDisk(diskName, diskURI string, nodeName types.N (disk.ManagedDisk != nil && diskURI != "" && strings.EqualFold(*disk.ManagedDisk.ID, diskURI)) { // found the disk klog.V(2).Infof("azureDisk - detach disk: name %q uri %q", diskName, diskURI) - if strings.EqualFold(as.cloud.Environment.Name, "AZURESTACKCLOUD") { + if strings.EqualFold(as.cloud.Environment.Name, AzureStackCloudName) { disks = append(disks[:i], disks[i+1:]...) } else { disks[i].ToBeDetached = to.BoolPtr(true) diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_vmss.go b/staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_vmss.go index e867239491f..8777a1e42fd 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_vmss.go +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_vmss.go @@ -143,7 +143,7 @@ func (ss *scaleSet) DetachDisk(diskName, diskURI string, nodeName types.NodeName (disk.ManagedDisk != nil && diskURI != "" && strings.EqualFold(*disk.ManagedDisk.ID, diskURI)) { // found the disk klog.V(2).Infof("azureDisk - detach disk: name %q uri %q", diskName, diskURI) - if strings.EqualFold(ss.cloud.Environment.Name, "AZURESTACKCLOUD") { + if strings.EqualFold(ss.cloud.Environment.Name, AzureStackCloudName) { disks = append(disks[:i], disks[i+1:]...) } else { disks[i].ToBeDetached = to.BoolPtr(true) diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/clients/azure_client_config.go b/staging/src/k8s.io/legacy-cloud-providers/azure/clients/azure_client_config.go index cd1f8775289..e6bafd884b2 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/clients/azure_client_config.go +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/clients/azure_client_config.go @@ -26,6 +26,7 @@ import ( // ClientConfig contains all essential information to create an Azure client. type ClientConfig struct { + CloudName string Location string SubscriptionID string ResourceManagerEndpoint string diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient/azure_storageaccountclient.go b/staging/src/k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient/azure_storageaccountclient.go index 856ca92c523..47146368d98 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient/azure_storageaccountclient.go +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient/azure_storageaccountclient.go @@ -22,6 +22,7 @@ import ( "context" "fmt" "net/http" + "strings" "time" "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage" @@ -57,7 +58,11 @@ type Client struct { func New(config *azclients.ClientConfig) *Client { baseURI := config.ResourceManagerEndpoint authorizer := config.Authorizer - armClient := armclient.New(authorizer, baseURI, config.UserAgent, APIVersion, config.Location, config.Backoff) + apiVersion := APIVersion + if strings.EqualFold(config.CloudName, AzureStackCloudName) { + apiVersion = AzureStackCloudAPIVersion + } + armClient := armclient.New(authorizer, baseURI, config.UserAgent, apiVersion, config.Location, config.Backoff) rateLimiterReader, rateLimiterWriter := azclients.NewRateLimiter(config.RateLimitConfig) klog.V(2).Infof("Azure StorageAccountClient (read ops) using rate limit config: QPS=%g, bucket=%d", diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient/interface.go b/staging/src/k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient/interface.go index 5a0112c2397..557ec512992 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient/interface.go +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient/interface.go @@ -28,6 +28,10 @@ import ( const ( // APIVersion is the API version for network. APIVersion = "2019-06-01" + // AzureStackCloudAPIVersion is the API version for Azure Stack + AzureStackCloudAPIVersion = "2018-02-01" + // AzureStackCloudName is the cloud name of Azure Stack + AzureStackCloudName = "AZURESTACKCLOUD" ) // Interface is the client interface for StorageAccounts.