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