github.com/kyma-project/kyma-environment-broker@v0.0.1/common/hyperscaler/azure/env.go (about)

     1  package azure
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/kyma-project/kyma-environment-broker/internal/euaccess"
     7  
     8  	"github.com/kyma-project/kyma-environment-broker/common/hyperscaler"
     9  	"github.com/kyma-project/kyma-environment-broker/internal"
    10  	"github.com/kyma-project/kyma-environment-broker/internal/broker"
    11  	"github.com/kyma-project/kyma-environment-broker/internal/provider"
    12  )
    13  
    14  func mapRegion(credentials hyperscaler.Credentials, parameters internal.ProvisioningParameters) (string, error) {
    15  	if credentials.HyperscalerType != hyperscaler.Azure {
    16  		return "", fmt.Errorf("cannot use credential for hyperscaler of type %v on hyperscaler of type %v", credentials.HyperscalerType, hyperscaler.Azure)
    17  	}
    18  	if parameters.Parameters.Region == nil || *(parameters.Parameters.Region) == "" {
    19  		return provider.DefaultAzureRegion, nil
    20  	}
    21  	region := *(parameters.Parameters.Region)
    22  	switch parameters.PlanID {
    23  	case broker.AzurePlanID, broker.AzureLitePlanID:
    24  		if !isInList(broker.AzureRegions(euaccess.IsEURestrictedAccess(parameters.PlatformRegion)), region) {
    25  			return "", fmt.Errorf("supplied region \"%v\" is not a valid region for Azure", region)
    26  		}
    27  
    28  	case broker.GCPPlanID:
    29  		if azureRegion, mappingExists := gcpToAzureRegionMapping()[region]; mappingExists {
    30  			region = azureRegion
    31  			break
    32  		}
    33  		return "", fmt.Errorf("supplied gcp region \"%v\" cannot be mapped to Azure", region)
    34  	default:
    35  		return "", fmt.Errorf("cannot map from PlanID %v to azure regions", parameters.PlanID)
    36  	}
    37  	return region, nil
    38  }
    39  
    40  func isInList(list []string, item string) bool {
    41  	for _, val := range list {
    42  		if val == item {
    43  			return true
    44  		}
    45  	}
    46  	return false
    47  }