github.com/kubernetes-incubator/kube-aws@v0.16.4/pkg/api/region.go (about) 1 package api 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 type Region struct { 9 Name string `yaml:"region,omitempty"` 10 } 11 12 func RegionForName(name string) Region { 13 return Region{ 14 Name: name, 15 } 16 } 17 18 func (r Region) PrivateDomainName() string { 19 if r.Name == "us-east-1" { 20 return "ec2.internal" 21 } 22 return fmt.Sprintf("%s.compute.internal", r.Name) 23 } 24 25 func (r Region) PublicComputeDomainName() string { 26 switch r.Name { 27 case "us-east-1": 28 return fmt.Sprintf("compute-1.%s", r.PublicDomainName()) 29 default: 30 return fmt.Sprintf("%s.compute.%s", r.Name, r.PublicDomainName()) 31 } 32 } 33 34 func (r Region) PublicDomainName() string { 35 if r.IsChina() { 36 return "amazonaws.com.cn" 37 } 38 return "amazonaws.com" 39 } 40 41 func (r Region) String() string { 42 return r.Name 43 } 44 45 func (r Region) S3Endpoint(bucket string) string { 46 domain := "s3" 47 if r.IsChina() { 48 domain = fmt.Sprintf("s3.%s", r.Name) 49 } 50 if r.IsGovcloud() { 51 domain = fmt.Sprintf("s3-%s", r.Name) 52 } 53 return fmt.Sprintf("https://%s.%s.%s", bucket, domain, r.PublicDomainName()) 54 } 55 56 func (r Region) Partition() string { 57 if r.IsChina() { 58 return "aws-cn" 59 } 60 if r.IsGovcloud() { 61 return "aws-us-gov" 62 } 63 return "aws" 64 } 65 66 func (r Region) IsChina() bool { 67 return strings.HasPrefix(r.Name, "cn-") 68 } 69 70 func (r Region) IsGovcloud() bool { 71 return strings.HasPrefix(r.Name, "us-gov-") 72 } 73 74 func (r Region) IsEmpty() bool { 75 return r.Name == "" 76 } 77 78 func (r Region) SupportsKMS() bool { 79 return !r.IsChina() 80 } 81 82 func (r Region) SupportsNetworkLoadBalancers() bool { 83 return !r.IsChina() 84 }