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  }