@@ -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