Преглед изворни кода

Merge pull request #994 from kubecost/sean/azure-detect-cloud

Detect the correct azure cloud api object to use by billing region
Sean Holcomb пре 4 година
родитељ
комит
1566704d3f
1 измењених фајлова са 14 додато и 1 уклоњено
  1. 14 1
      pkg/cloud/azureprovider.go

+ 14 - 1
pkg/cloud/azureprovider.go

@@ -761,7 +761,7 @@ func (az *Azure) DownloadPricingData() error {
 		a, err := auth.NewAuthorizerFromEnvironment()
 		authorizer = a
 		if err != nil { // Failed to create authorizer from environment, try from file
-			a, err := auth.NewAuthorizerFromFile(azure.PublicCloud.ResourceManagerEndpoint)
+			a, err := auth.NewAuthorizerFromFile(determineCloudByRegion(config.AzureBillingRegion).ResourceManagerEndpoint)
 			if err != nil {
 				az.RateCardPricingError = err
 				return err
@@ -923,6 +923,19 @@ func (az *Azure) DownloadPricingData() error {
 	return nil
 }
 
+// determineCloudByRegion uses region name to pick the correct Cloud Environment for the azure provider to use
+func determineCloudByRegion(region string) azure.Environment{
+	lcRegion := strings.ToLower(region)
+	if strings.Contains(lcRegion, "china") {
+		return azure.ChinaCloud
+	}
+	if strings.Contains(lcRegion, "gov") || strings.Contains(lcRegion, "dod") {
+		return azure.USGovernmentCloud
+	}
+	// Default to public cloud
+	return azure.PublicCloud
+}
+
 func (az *Azure) addPricing(features string, azurePricing *AzurePricing) {
 	if az.Pricing == nil {
 		az.Pricing = map[string]*AzurePricing{}