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 }