Skip to content

Commit d8eb59b

Browse files
author
wangjiaju.716
committed
Add ve_cr create_instance, create_namespace, create_repo
1 parent 7f19c35 commit d8eb59b

File tree

1 file changed

+135
-23
lines changed

1 file changed

+135
-23
lines changed

veadk/integrations/ve_cr/ve_cr.py

Lines changed: 135 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,20 @@ def __init__(self, access_key: str, secret_key: str, region: str = "cn-beijing")
1818
assert region in ["cn-beijing", "cn-guangzhou", "cn-shanghai"]
1919
self.version = "2022-05-12"
2020

21-
def _create_instance(self, instance_name: str = DEFAULT_CR_INSTANCE_NAME):
21+
def _create_instance(self, instance_name: str = DEFAULT_CR_INSTANCE_NAME) -> str:
22+
"""
23+
create cr instance
24+
25+
Args:
26+
instance_name: cr instance name
27+
28+
Returns:
29+
cr instance name
30+
"""
31+
status = self._check_instance(instance_name)
32+
if status != "NONEXIST":
33+
logger.debug(f"cr instance {instance_name} already running")
34+
return instance_name
2235
response = ve_request(
2336
request_body={
2437
"Name": instance_name,
@@ -34,10 +47,30 @@ def _create_instance(self, instance_name: str = DEFAULT_CR_INSTANCE_NAME):
3447
region=self.region,
3548
host=f"cr.{self.region}.volcengineapi.com",
3649
)
37-
logger.info(f"create cr instance {instance_name}: {response}")
38-
return response
50+
logger.debug(f"create cr instance {instance_name}: {response}")
51+
52+
while True:
53+
status = self._check_instance(instance_name)
54+
if status == "Running":
55+
break
56+
elif status == "Failed":
57+
raise ValueError(f"cr instance {instance_name} create failed")
58+
else:
59+
logger.debug(f"cr instance status: {status}")
60+
time.sleep(5)
61+
62+
return instance_name
3963

40-
def _check_instance(self, instance_name: str = DEFAULT_CR_INSTANCE_NAME):
64+
def _check_instance(self, instance_name: str) -> str:
65+
"""
66+
check cr instance status
67+
68+
Args:
69+
instance_name: cr instance name
70+
71+
Returns:
72+
cr instance status
73+
"""
4174
response = ve_request(
4275
request_body={
4376
"Filter": {
@@ -47,33 +80,112 @@ def _check_instance(self, instance_name: str = DEFAULT_CR_INSTANCE_NAME):
4780
action="ListRegistries",
4881
ak=self.ak,
4982
sk=self.sk,
50-
service="vecr",
83+
service="cr",
5184
version=self.version,
5285
region=self.region,
5386
host=f"cr.{self.region}.volcengineapi.com",
5487
)
88+
logger.debug(f"check cr instance {instance_name}: {response}")
5589

5690
try:
57-
return response["Result"]["Items"][0]["Status"]
58-
except Exception as e:
59-
raise ValueError(f"cr instance {instance_name} not found: {e}")
91+
if response["Result"]["TotalCount"] == 0:
92+
return "NONEXIST"
93+
return response["Result"]["Items"][0]["Status"]["Phase"]
94+
except Exception as _:
95+
raise ValueError(f"Error check cr instance {instance_name}: {response}")
96+
97+
def _create_namespace(
98+
self,
99+
instance_name: str = DEFAULT_CR_INSTANCE_NAME,
100+
namespace_name: str = DEFAULT_CR_NAMESPACE_NAME,
101+
) -> str:
102+
"""
103+
create cr namespace
104+
105+
Args:
106+
instance_name: cr instance name
107+
namespace_name: cr namespace name
108+
109+
Returns:
110+
cr namespace name
111+
"""
112+
response = ve_request(
113+
request_body={
114+
"Name": namespace_name,
115+
"Registry": instance_name,
116+
},
117+
action="CreateNamespace",
118+
ak=self.ak,
119+
sk=self.sk,
120+
service="cr",
121+
version=self.version,
122+
region=self.region,
123+
host=f"cr.{self.region}.volcengineapi.com",
124+
)
125+
logger.debug(f"create cr namespace {namespace_name}: {response}")
60126

61-
def _create_namespace(self, namespace_name: str = DEFAULT_CR_NAMESPACE_NAME):
62-
pass
127+
if "Error" in response["ResponseMetadata"]:
128+
error_code = response["ResponseMetadata"]["Error"]["Code"]
129+
error_message = response["ResponseMetadata"]["Error"]["Message"]
130+
if error_code == "AlreadyExists.Namespace":
131+
logger.debug(f"cr namespace {namespace_name} already exists")
132+
return namespace_name
133+
else:
134+
logger.error(
135+
f"Error create cr namespace {namespace_name}: {error_code} {error_message}"
136+
)
137+
raise ValueError(
138+
f"Error create cr namespace {namespace_name}: {error_code} {error_message}"
139+
)
63140

64-
def _create_repo(self, repo_name: str = DEFAULT_CR_REPO_NAME):
65-
pass
141+
return namespace_name
66142

143+
def _create_repo(
144+
self,
145+
instance_name: str = DEFAULT_CR_INSTANCE_NAME,
146+
namespace_name: str = DEFAULT_CR_NAMESPACE_NAME,
147+
repo_name: str = DEFAULT_CR_REPO_NAME,
148+
) -> str:
149+
"""
150+
create cr repo
151+
152+
Args:
153+
instance_name: cr instance name
154+
namespace_name: cr namespace name
155+
repo_name: cr repo name
156+
157+
Returns:
158+
cr repo name
159+
"""
160+
response = ve_request(
161+
request_body={
162+
"Name": repo_name,
163+
"Registry": instance_name,
164+
"Namespace": namespace_name,
165+
"Description": "veadk cr repo",
166+
},
167+
action="CreateRepository",
168+
ak=self.ak,
169+
sk=self.sk,
170+
service="cr",
171+
version=self.version,
172+
region=self.region,
173+
host=f"cr.{self.region}.volcengineapi.com",
174+
)
175+
logger.debug(f"create cr repo {repo_name}: {response}")
67176

68-
if __name__ == "__main__":
69-
cr = VeCR("", "")
70-
cr._create_instance()
177+
if "Error" in response["ResponseMetadata"]:
178+
error_code = response["ResponseMetadata"]["Error"]["Code"]
179+
error_message = response["ResponseMetadata"]["Error"]["Message"]
180+
if error_code == "AlreadyExists.Repository":
181+
logger.debug(f"cr repo {repo_name} already exists")
182+
return repo_name
183+
else:
184+
logger.error(
185+
f"Error create cr repo {repo_name}: {error_code} {error_message}"
186+
)
187+
raise ValueError(
188+
f"Error create cr repo {repo_name}: {error_code} {error_message}"
189+
)
71190

72-
while True:
73-
status = cr._check_instance()
74-
if status["Phase"] == "Running":
75-
print("cr instance running")
76-
break
77-
else:
78-
print("cr instance not running")
79-
time.sleep(30)
191+
return repo_name

0 commit comments

Comments
 (0)