@@ -34,6 +34,7 @@ def with_collections(self, collection_ids: list):
3434 collection_names = [k .split ('___' )[0 ] for k in collection_ids ]
3535 self ._conditions .append (f'{ self .__collection_name } __in={ "," .join (collection_names )} ' )
3636 return self
37+
3738 def get_size (self , private_api_prefix : str ):
3839 query_params = {'field' : 'status' , 'type' : 'collections' }
3940 main_conditions = {k [0 ]: k [1 ] for k in [k1 .split ('=' ) for k1 in self ._conditions ]}
@@ -158,6 +159,108 @@ def query_rules(self, private_api_prefix: str):
158159 return {'server_error' : f'error while invoking:{ str (e )} ' }
159160 return {'results' : query_result }
160161
162+ def delete_sqs_rules (self , new_collection : dict , private_api_prefix : str ):
163+ # $ curl --request DELETE https://example.com/rules/repeat_test --header 'Authorization: Bearer ReplaceWithTheToken'
164+ underscore_collection_name = re .sub (r'[^a-zA-Z0-9_]' , '___' , new_collection ["name" ]) # replace any character that's not alphanumeric or underscore with 3 underscores
165+ rule_name = f'{ underscore_collection_name } ___{ new_collection ["version" ]} ___rules_sqs'
166+ payload = {
167+ 'httpMethod' : 'DELETE' ,
168+ 'resource' : '/{proxy+}' ,
169+ 'path' : f'/{ self .__rules_key } /{ rule_name } ' ,
170+ 'headers' : {
171+ 'Content-Type' : 'application/json' ,
172+ },
173+ }
174+ LOGGER .debug (f'payload: { payload } ' )
175+ try :
176+ query_result = self ._invoke_api (payload , private_api_prefix )
177+ """
178+ {'statusCode': 500, 'body': '', 'headers': {}}
179+ """
180+ if query_result ['statusCode' ] >= 500 :
181+ LOGGER .error (f'server error status code: { query_result ["statusCode" ]} . details: { query_result } ' )
182+ return {'server_error' : query_result }
183+ if query_result ['statusCode' ] >= 400 :
184+ LOGGER .error (f'client error status code: { query_result ["statusCode" ]} . details: { query_result } ' )
185+ return {'client_error' : query_result }
186+ query_result = json .loads (query_result ['body' ])
187+ LOGGER .debug (f'json query_result: { query_result } ' )
188+ if 'message' not in query_result :
189+ return {'server_error' : f'invalid response: { query_result } ' }
190+ except Exception as e :
191+ LOGGER .exception ('error while invoking' )
192+ return {'server_error' : f'error while invoking:{ str (e )} ' }
193+ return {'status' : query_result ['message' ]}
194+
195+ def delete_executions (self , new_collection : dict , private_api_prefix : str ):
196+ # $ curl --request DELETE https://example.com/rules/repeat_test --header 'Authorization: Bearer ReplaceWithTheToken'
197+ request_body = {
198+ "collectionId" : f'{ new_collection ["name" ]} ___{ new_collection ["version" ]} ' ,
199+ "esBatchSize" : 10000 ,
200+ "dbBatchSize" : 50000
201+ }
202+ payload = {
203+ 'httpMethod' : 'POST' ,
204+ 'resource' : '/{proxy+}' ,
205+ 'path' : f'/executions/bulk-delete-by-collection' ,
206+ 'headers' : {
207+ 'Content-Type' : 'application/json' ,
208+ },
209+ 'body' : json .dumps (request_body )
210+ }
211+ LOGGER .debug (f'payload: { payload } ' )
212+ try :
213+ query_result = self ._invoke_api (payload , private_api_prefix )
214+ """
215+ {'statusCode': 500, 'body': '', 'headers': {}}
216+ """
217+ if query_result ['statusCode' ] >= 500 :
218+ LOGGER .error (f'server error status code: { query_result ["statusCode" ]} . details: { query_result } ' )
219+ return {'server_error' : query_result }
220+ if query_result ['statusCode' ] >= 400 :
221+ LOGGER .error (f'client error status code: { query_result ["statusCode" ]} . details: { query_result } ' )
222+ return {'client_error' : query_result }
223+ query_result = json .loads (query_result ['body' ])
224+ LOGGER .debug (f'json query_result: { query_result } ' )
225+ if 'id' not in query_result :
226+ return {'server_error' : f'invalid response: { query_result } ' }
227+ except Exception as e :
228+ LOGGER .exception ('error while invoking' )
229+ return {'server_error' : f'error while invoking:{ str (e )} ' }
230+ return {'status' : query_result }
231+
232+ def list_executions (self , new_collection : dict , private_api_prefix : str ):
233+ # $ curl --request DELETE https://example.com/rules/repeat_test --header 'Authorization: Bearer ReplaceWithTheToken'
234+ payload = {
235+ 'httpMethod' : 'GET' ,
236+ 'resource' : '/{proxy+}' ,
237+ 'path' : f'/executions' ,
238+ 'queryStringParameters' : {'limit' : '100' , 'collectionId' : f'{ new_collection ["name" ]} ___{ new_collection ["version" ]} ' },
239+ 'headers' : {
240+ 'Content-Type' : 'application/json' ,
241+ }
242+ }
243+ LOGGER .debug (f'payload: { payload } ' )
244+ try :
245+ query_result = self ._invoke_api (payload , private_api_prefix )
246+ """
247+ {'statusCode': 500, 'body': '', 'headers': {}}
248+ """
249+ if query_result ['statusCode' ] >= 500 :
250+ LOGGER .error (f'server error status code: { query_result ["statusCode" ]} . details: { query_result } ' )
251+ return {'server_error' : query_result }
252+ if query_result ['statusCode' ] >= 400 :
253+ LOGGER .error (f'client error status code: { query_result ["statusCode" ]} . details: { query_result } ' )
254+ return {'client_error' : query_result }
255+ query_result = json .loads (query_result ['body' ])
256+ LOGGER .debug (f'json query_result: { query_result } ' )
257+ if 'results' not in query_result :
258+ return {'server_error' : f'invalid response: { query_result } ' }
259+ except Exception as e :
260+ LOGGER .exception ('error while invoking' )
261+ return {'server_error' : f'error while invoking:{ str (e )} ' }
262+ return {'results' : query_result ['results' ]}
263+
161264 def create_sqs_rules (self , new_collection : dict , private_api_prefix : str , sqs_url : str , provider_name : str = '' , workflow_name : str = 'CatalogGranule' , visibility_timeout : int = 1800 ):
162265 """
163266curl --request POST "$CUMULUS_BASEURL/rules" --header "Authorization: Bearer $cumulus_token" --header 'Content-Type: application/json' --data '{
0 commit comments