mirror of https://github.com/kubernetes/kops.git
373 lines
6.1 KiB
Go
373 lines
6.1 KiB
Go
/*
|
|
Copyright 2021 The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package zones
|
|
|
|
import (
|
|
"sort"
|
|
|
|
"github.com/scaleway/scaleway-sdk-go/scw"
|
|
"k8s.io/kops/pkg/apis/kops"
|
|
)
|
|
|
|
// These lists allow us to infer from certain well-known zones to a cloud
|
|
// Note it is safe to "overmap" zones that don't exist: we'll check later if the zones actually exist
|
|
|
|
var gceZones = []string{
|
|
"asia-east1-a",
|
|
"asia-east1-b",
|
|
"asia-east1-c",
|
|
"asia-east1-d",
|
|
|
|
"asia-east2-a",
|
|
"asia-east2-b",
|
|
"asia-east2-c",
|
|
|
|
"asia-northeast1-a",
|
|
"asia-northeast1-b",
|
|
"asia-northeast1-c",
|
|
"asia-northeast1-d",
|
|
|
|
"asia-northeast2-a",
|
|
"asia-northeast2-b",
|
|
"asia-northeast2-c",
|
|
|
|
"asia-northeast3-a",
|
|
"asia-northeast3-b",
|
|
"asia-northeast3-c",
|
|
|
|
"asia-south1-a",
|
|
"asia-south1-b",
|
|
"asia-south1-c",
|
|
|
|
"asia-southeast1-a",
|
|
"asia-southeast1-b",
|
|
|
|
"asia-southeast2-a",
|
|
"asia-southeast2-b",
|
|
"asia-southeast2-c",
|
|
|
|
"australia-southeast1-a",
|
|
"australia-southeast1-b",
|
|
"australia-southeast1-c",
|
|
|
|
"europe-north1-a",
|
|
"europe-north1-b",
|
|
"europe-north1-c",
|
|
|
|
"europe-west1-a",
|
|
"europe-west1-b",
|
|
"europe-west1-c",
|
|
"europe-west1-d",
|
|
"europe-west1-e",
|
|
|
|
"europe-west2-a",
|
|
"europe-west2-b",
|
|
"europe-west2-c",
|
|
|
|
"europe-west3-a",
|
|
"europe-west3-b",
|
|
"europe-west3-c",
|
|
|
|
"europe-west4-a",
|
|
"europe-west4-b",
|
|
"europe-west4-c",
|
|
|
|
"europe-west6-a",
|
|
"europe-west6-b",
|
|
"europe-west6-c",
|
|
|
|
"us-central1-a",
|
|
"us-central1-b",
|
|
"us-central1-c",
|
|
"us-central1-d",
|
|
"us-central1-e",
|
|
"us-central1-f",
|
|
"us-central1-g",
|
|
"us-central1-h",
|
|
|
|
"us-east1-a",
|
|
"us-east1-b",
|
|
"us-east1-c",
|
|
"us-east1-d",
|
|
|
|
"us-east4-a",
|
|
"us-east4-b",
|
|
"us-east4-c",
|
|
|
|
"us-west1-a",
|
|
"us-west1-b",
|
|
"us-west1-c",
|
|
"us-west1-d",
|
|
|
|
"us-west2-a",
|
|
"us-west2-b",
|
|
"us-west2-c",
|
|
|
|
"us-west3-a",
|
|
"us-west3-b",
|
|
"us-west3-c",
|
|
|
|
"us-west4-a",
|
|
"us-west4-b",
|
|
"us-west4-c",
|
|
|
|
"northamerica-northeast1-a",
|
|
"northamerica-northeast1-b",
|
|
"northamerica-northeast1-c",
|
|
|
|
"southamerica-east1-a",
|
|
"southamerica-east1-b",
|
|
"southamerica-east1-c",
|
|
}
|
|
|
|
var doZones = []string{
|
|
"nyc1",
|
|
"nyc3",
|
|
|
|
"sfo3",
|
|
|
|
"ams3",
|
|
|
|
"tor1",
|
|
|
|
"sgp1",
|
|
|
|
"lon1",
|
|
|
|
"fra1",
|
|
|
|
"blr1",
|
|
}
|
|
|
|
var hetznerZones = []string{
|
|
// eu-central
|
|
"fsn1",
|
|
"nbg1",
|
|
"hel1",
|
|
// us-east
|
|
"ash",
|
|
// us-west
|
|
"hil",
|
|
}
|
|
|
|
var awsZones = []string{
|
|
"af-south-1a",
|
|
"af-south-1b",
|
|
"af-south-1c",
|
|
"ap-east-1a",
|
|
"ap-east-1b",
|
|
"ap-east-1c",
|
|
"ap-northeast-1a",
|
|
"ap-northeast-1b",
|
|
"ap-northeast-1c",
|
|
"ap-northeast-1d",
|
|
"ap-northeast-2a",
|
|
"ap-northeast-2b",
|
|
"ap-northeast-2c",
|
|
"ap-northeast-2d",
|
|
"ap-northeast-3a",
|
|
"ap-northeast-3b",
|
|
"ap-northeast-3c",
|
|
"ap-south-1a",
|
|
"ap-south-1b",
|
|
"ap-south-1c",
|
|
"ap-south-2a",
|
|
"ap-south-2b",
|
|
"ap-south-2c",
|
|
"ap-southeast-1a",
|
|
"ap-southeast-1b",
|
|
"ap-southeast-1c",
|
|
"ap-southeast-2a",
|
|
"ap-southeast-2b",
|
|
"ap-southeast-2c",
|
|
"ap-southeast-3a",
|
|
"ap-southeast-3b",
|
|
"ap-southeast-3c",
|
|
"ap-southeast-4a",
|
|
"ap-southeast-4b",
|
|
"ap-southeast-4c",
|
|
"ca-central-1a",
|
|
"ca-central-1b",
|
|
"ca-central-1c",
|
|
"ca-west-1a",
|
|
"ca-west-1b",
|
|
"ca-west-1c",
|
|
"eu-central-1a",
|
|
"eu-central-1b",
|
|
"eu-central-1c",
|
|
"eu-central-2a",
|
|
"eu-central-2b",
|
|
"eu-central-2c",
|
|
"eu-north-1a",
|
|
"eu-north-1b",
|
|
"eu-north-1c",
|
|
"eu-south-1a",
|
|
"eu-south-1b",
|
|
"eu-south-1c",
|
|
"eu-south-2a",
|
|
"eu-south-2b",
|
|
"eu-south-2c",
|
|
"eu-west-1a",
|
|
"eu-west-1b",
|
|
"eu-west-1c",
|
|
"eu-west-2a",
|
|
"eu-west-2b",
|
|
"eu-west-2c",
|
|
"eu-west-3a",
|
|
"eu-west-3b",
|
|
"eu-west-3c",
|
|
"il-central-1a",
|
|
"il-central-1b",
|
|
"il-central-1c",
|
|
"me-central-1a",
|
|
"me-central-1b",
|
|
"me-central-1c",
|
|
"me-south-1a",
|
|
"me-south-1b",
|
|
"me-south-1c",
|
|
"sa-east-1a",
|
|
"sa-east-1b",
|
|
"sa-east-1c",
|
|
"us-east-1a",
|
|
"us-east-1b",
|
|
"us-east-1c",
|
|
"us-east-1d",
|
|
"us-east-1e",
|
|
"us-east-1f",
|
|
"us-east-2a",
|
|
"us-east-2b",
|
|
"us-east-2c",
|
|
"us-west-1a",
|
|
"us-west-1b",
|
|
"us-west-1c",
|
|
"us-west-2a",
|
|
"us-west-2b",
|
|
"us-west-2c",
|
|
"us-west-2d",
|
|
|
|
"us-gov-east-1a",
|
|
"us-gov-east-1b",
|
|
"us-gov-east-1c",
|
|
"us-gov-west-1a",
|
|
"us-gov-west-1b",
|
|
"us-gov-west-1c",
|
|
|
|
"cn-north-1a",
|
|
"cn-north-1b",
|
|
"cn-north-1c",
|
|
"cn-northwest-1a",
|
|
"cn-northwest-1b",
|
|
"cn-northwest-1c",
|
|
}
|
|
|
|
var azureZones = []string{
|
|
"asia",
|
|
"asiapacific",
|
|
"australia",
|
|
"australiacentral",
|
|
"australiacentral2",
|
|
"australiaeast",
|
|
"australiasoutheast",
|
|
"brazil",
|
|
"brazilsouth",
|
|
"brazilsoutheast",
|
|
"canada",
|
|
"canadacentral",
|
|
"canadaeast",
|
|
"centralindia",
|
|
"centralus",
|
|
"centraluseuap",
|
|
"centralusstage",
|
|
"eastasia",
|
|
"eastasiastage",
|
|
"eastus",
|
|
"eastus2",
|
|
"eastus2euap",
|
|
"eastus2stage",
|
|
"eastusstage",
|
|
"europe",
|
|
"francecentral",
|
|
"francesouth",
|
|
"germanynorth",
|
|
"germanywestcentral",
|
|
"global",
|
|
"india",
|
|
"japan",
|
|
"japaneast",
|
|
"japanwest",
|
|
"koreacentral",
|
|
"koreasouth",
|
|
"northcentralus",
|
|
"northcentralusstage",
|
|
"northeurope",
|
|
"norwayeast",
|
|
"norwaywest",
|
|
"southafricanorth",
|
|
"southafricawest",
|
|
"southcentralus",
|
|
"southcentralusstage",
|
|
"southeastasia",
|
|
"southeastasiastage",
|
|
"southindia",
|
|
"switzerlandnorth",
|
|
"switzerlandwest",
|
|
"uaecentral",
|
|
"uaenorth",
|
|
"uk",
|
|
"uksouth",
|
|
"ukwest",
|
|
"unitedstates",
|
|
"westcentralus",
|
|
"westeurope",
|
|
"westindia",
|
|
"westus",
|
|
"westus2",
|
|
"westus2stage",
|
|
"westusstage",
|
|
}
|
|
|
|
func scwZones() []string {
|
|
var scwZones []string
|
|
for _, zone := range scw.AllZones {
|
|
scwZones = append(scwZones, string(zone))
|
|
}
|
|
return scwZones
|
|
}
|
|
|
|
func WellKnownZonesForCloud(matchCloud kops.CloudProviderID, prefix string) []string {
|
|
var found []string
|
|
switch matchCloud {
|
|
case kops.CloudProviderAWS:
|
|
found = awsZones
|
|
case kops.CloudProviderAzure:
|
|
found = azureZones
|
|
case kops.CloudProviderDO:
|
|
found = doZones
|
|
case kops.CloudProviderGCE:
|
|
found = gceZones
|
|
case kops.CloudProviderHetzner:
|
|
found = hetznerZones
|
|
case kops.CloudProviderScaleway:
|
|
found = scwZones()
|
|
default:
|
|
return nil
|
|
}
|
|
|
|
sort.Strings(found)
|
|
return found
|
|
}
|