/
c3mc-cloud-ksyun-region-list
executable file
·79 lines (59 loc) · 2.33 KB
/
c3mc-cloud-ksyun-region-list
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env /data/Software/mydan/python3/bin/python3
# -*- coding: utf-8 -*-
import sys
import requests
from bs4 import BeautifulSoup
from kscore.session import get_session
class Ksyun:
def __init__(self, access_id, access_key, resource_type):
self.access_id = access_id
self.access_key = access_key
self.resource_type = resource_type
def list_kec_regions(self):
s = get_session()
client = s.create_client(
"kec", ks_access_key_id=self.access_id, ks_secret_access_key=self.access_key, region_name="cn-beijing-6")
try:
response = client.describe_regions()
except Exception as e:
raise RuntimeError(
f"拉取区域列表出错, ak: {self.access_id}, resource_type: {self.resource_type}"
) from e
result = [item["Region"] for item in response["RegionSet"]]
return sorted(result)
def list_redis_regions(self):
"""查询redis资源支持的区域代码列表
"""
url = "https://docs.ksyun.com/documents/6000"
response = requests.get(url)
content = response.content
soup = BeautifulSoup(content, "html.parser")
tables = soup.find_all("table")
region_codes = []
for table in tables:
header_cells = table.find_all("th")
has_region_code = any(
header_cell.text.strip() == "地域及代码" for header_cell in header_cells
)
if has_region_code:
rows = table.find_all("tr")
for row in rows:
cells = row.find_all("td")
if cells:
region_code = cells[0].text.strip()
region_codes.append(region_code)
return [item.split()[-1] for item in region_codes]
def display(self):
regions = []
if self.resource_type == "redis":
regions = self.list_redis_regions()
elif self.resource_type == "ks3":
regions = ["cn-beijing-6"]
else:
regions = self.list_kec_regions()
for region in regions:
print(region)
def main(access_id, access_key, resource_type):
Ksyun(access_id, access_key, resource_type).display()
if __name__ == '__main__':
main(sys.argv[1], sys.argv[2], sys.argv[-1])