region.go raw

   1  package region
   2  
   3  import (
   4  	"fmt"
   5  	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/region"
   6  	"sort"
   7  	"strings"
   8  )
   9  
  10  var (
  11  	CN_EAST_2 = region.NewRegion("cn-east-2",
  12  		"https://dns.cn-east-2.myhuaweicloud.com")
  13  	CN_EAST_3 = region.NewRegion("cn-east-3",
  14  		"https://dns.cn-east-3.myhuaweicloud.com")
  15  	CN_NORTH_1 = region.NewRegion("cn-north-1",
  16  		"https://dns.cn-north-1.myhuaweicloud.com")
  17  	CN_NORTH_4 = region.NewRegion("cn-north-4",
  18  		"https://dns.cn-north-4.myhuaweicloud.com")
  19  	CN_SOUTH_1 = region.NewRegion("cn-south-1",
  20  		"https://dns.cn-south-1.myhuaweicloud.com")
  21  	CN_SOUTHWEST_2 = region.NewRegion("cn-southwest-2",
  22  		"https://dns.cn-southwest-2.myhuaweicloud.com")
  23  	AF_SOUTH_1 = region.NewRegion("af-south-1",
  24  		"https://dns.af-south-1.myhuaweicloud.com")
  25  	AP_SOUTHEAST_1 = region.NewRegion("ap-southeast-1",
  26  		"https://dns.ap-southeast-1.myhuaweicloud.com")
  27  	AP_SOUTHEAST_2 = region.NewRegion("ap-southeast-2",
  28  		"https://dns.ap-southeast-2.myhuaweicloud.com")
  29  	AP_SOUTHEAST_3 = region.NewRegion("ap-southeast-3",
  30  		"https://dns.ap-southeast-3.myhuaweicloud.com")
  31  	SA_BRAZIL_1 = region.NewRegion("sa-brazil-1",
  32  		"https://dns.sa-brazil-1.myhuaweicloud.com")
  33  	LA_SOUTH_2 = region.NewRegion("la-south-2",
  34  		"https://dns.la-south-2.myhuaweicloud.com")
  35  	LA_NORTH_2 = region.NewRegion("la-north-2",
  36  		"https://dns.la-north-2.myhuaweicloud.com")
  37  	NA_MEXICO_1 = region.NewRegion("na-mexico-1",
  38  		"https://dns.na-mexico-1.myhuaweicloud.com")
  39  	CN_NORTH_9 = region.NewRegion("cn-north-9",
  40  		"https://dns.cn-north-9.myhuaweicloud.com")
  41  	CN_NORTH_2 = region.NewRegion("cn-north-2",
  42  		"https://dns.cn-north-2.myhuaweicloud.com")
  43  	CN_SOUTH_2 = region.NewRegion("cn-south-2",
  44  		"https://dns.cn-south-2.myhuaweicloud.com")
  45  	AP_SOUTHEAST_4 = region.NewRegion("ap-southeast-4",
  46  		"https://dns.ap-southeast-4.myhuaweicloud.com")
  47  	AE_AD_1 = region.NewRegion("ae-ad-1",
  48  		"https://dns.ae-ad-1.myhuaweicloud.com")
  49  	RU_MOSCOW_1 = region.NewRegion("ru-moscow-1",
  50  		"https://dns.ru-moscow-1.myhuaweicloud.com")
  51  	ME_EAST_1 = region.NewRegion("me-east-1",
  52  		"https://dns.me-east-1.myhuaweicloud.com")
  53  	AP_SOUTHEAST_5 = region.NewRegion("ap-southeast-5",
  54  		"https://dns.ap-southeast-5.myhuaweicloud.com")
  55  	CN_EAST_5 = region.NewRegion("cn-east-5",
  56  		"https://dns.cn-east-5.myhuaweicloud.com")
  57  	CN_EAST_4 = region.NewRegion("cn-east-4",
  58  		"https://dns.cn-east-4.myhuaweicloud.com")
  59  	TR_WEST_1 = region.NewRegion("tr-west-1",
  60  		"https://dns.tr-west-1.myhuaweicloud.com")
  61  	AF_NORTH_1 = region.NewRegion("af-north-1",
  62  		"https://dns.af-north-1.myhuaweicloud.com")
  63  	MY_KUALALUMPUR_1 = region.NewRegion("my-kualalumpur-1",
  64  		"https://dns.my-kualalumpur-1.myhuaweicloud.com")
  65  )
  66  
  67  var staticFields = map[string]*region.Region{
  68  	"cn-east-2":        CN_EAST_2,
  69  	"cn-east-3":        CN_EAST_3,
  70  	"cn-north-1":       CN_NORTH_1,
  71  	"cn-north-4":       CN_NORTH_4,
  72  	"cn-south-1":       CN_SOUTH_1,
  73  	"cn-southwest-2":   CN_SOUTHWEST_2,
  74  	"af-south-1":       AF_SOUTH_1,
  75  	"ap-southeast-1":   AP_SOUTHEAST_1,
  76  	"ap-southeast-2":   AP_SOUTHEAST_2,
  77  	"ap-southeast-3":   AP_SOUTHEAST_3,
  78  	"sa-brazil-1":      SA_BRAZIL_1,
  79  	"la-south-2":       LA_SOUTH_2,
  80  	"la-north-2":       LA_NORTH_2,
  81  	"na-mexico-1":      NA_MEXICO_1,
  82  	"cn-north-9":       CN_NORTH_9,
  83  	"cn-north-2":       CN_NORTH_2,
  84  	"cn-south-2":       CN_SOUTH_2,
  85  	"ap-southeast-4":   AP_SOUTHEAST_4,
  86  	"ae-ad-1":          AE_AD_1,
  87  	"ru-moscow-1":      RU_MOSCOW_1,
  88  	"me-east-1":        ME_EAST_1,
  89  	"ap-southeast-5":   AP_SOUTHEAST_5,
  90  	"cn-east-5":        CN_EAST_5,
  91  	"cn-east-4":        CN_EAST_4,
  92  	"tr-west-1":        TR_WEST_1,
  93  	"af-north-1":       AF_NORTH_1,
  94  	"my-kualalumpur-1": MY_KUALALUMPUR_1,
  95  }
  96  
  97  var provider = region.DefaultProviderChain("DNS")
  98  
  99  func getRegionIds() []string {
 100  	ids := make([]string, 0, len(staticFields))
 101  	for key := range staticFields {
 102  		ids = append(ids, key)
 103  	}
 104  	sort.Strings(ids)
 105  	return ids
 106  }
 107  
 108  func SafeValueOf(regionId string) (region *region.Region, err error) {
 109  	defer func() {
 110  		if r := recover(); r != nil {
 111  			err = fmt.Errorf("%v", r)
 112  		}
 113  	}()
 114  	region = ValueOf(regionId)
 115  	return region, err
 116  }
 117  
 118  // Deprecated: This function may panic under certain circumstances. Use SafeValueOf instead.
 119  func ValueOf(regionId string) *region.Region {
 120  	if regionId == "" {
 121  		panic("unexpected empty parameter: regionId")
 122  	}
 123  
 124  	reg := provider.GetRegion(regionId)
 125  	if reg != nil {
 126  		return reg
 127  	}
 128  
 129  	if _, ok := staticFields[regionId]; ok {
 130  		return staticFields[regionId]
 131  	}
 132  	panic(fmt.Sprintf("region id '%s' is not in the following supported regions of service 'DNS': [%s]", regionId, strings.Join(getRegionIds(), ", ")))
 133  }
 134