1
1
import json
2
2
import os
3
+ from time import sleep
3
4
from typing import Optional
4
5
5
6
import pystac
@@ -81,68 +82,17 @@ def __init__(self, request_body):
81
82
self .__uds_collection = UdsCollections (es_url = os .getenv ('ES_URL' ), es_port = int (os .getenv ('ES_PORT' , '443' )), es_type = os .getenv ('ES_TYPE' , 'AWS' ), use_ssl = os .getenv ('ES_USE_SSL' , 'TRUE' ).strip () is True )
82
83
self .__cumulus_collection_query = CollectionsQuery ('' , '' )
83
84
84
- def __delete_collection_cumulus (self , cumulus_collection_doc ):
85
- delete_result = self .__cumulus_collection_query .delete_collection (self .__cumulus_lambda_prefix , cumulus_collection_doc ['name' ], cumulus_collection_doc ['version' ])
86
- if 'status' not in delete_result :
87
- LOGGER .error (f'status not in creation_result: { delete_result } ' )
85
+ def analyze_cumulus_result (self , cumulus_request_result ):
86
+ if 'status' not in cumulus_request_result :
87
+ LOGGER .error (f'status not in cumulus_request_result: { cumulus_request_result } ' )
88
88
return {
89
89
'statusCode' : 500 ,
90
90
'body' : {
91
- 'message' : delete_result
91
+ 'message' : cumulus_request_result
92
92
}
93
93
}, None
94
- return None , delete_result
94
+ return None , cumulus_request_result
95
95
96
- def __create_collection_cumulus (self , cumulus_collection_doc ):
97
- creation_result = self .__cumulus_collection_query .create_collection (cumulus_collection_doc , self .__cumulus_lambda_prefix )
98
- if 'status' not in creation_result :
99
- LOGGER .error (f'status not in creation_result: { creation_result } ' )
100
- return {
101
- 'statusCode' : 500 ,
102
- 'body' : {
103
- 'message' : creation_result
104
- }
105
- }, None
106
- return None , creation_result
107
-
108
- def __create_rules_cumulus (self , cumulus_collection_doc ):
109
- rule_creation_result = self .__cumulus_collection_query .create_sqs_rules (
110
- cumulus_collection_doc ,
111
- self .__cumulus_lambda_prefix ,
112
- self .__ingest_sqs_url ,
113
- self .__provider_id ,
114
- self .__workflow_name ,
115
- )
116
- if 'status' not in rule_creation_result :
117
- LOGGER .error (f'status not in rule_creation_result. deleting collection: { rule_creation_result } ' )
118
- delete_collection_result = self .__cumulus_collection_query .delete_collection (self .__cumulus_lambda_prefix ,
119
- cumulus_collection_doc ['name' ],
120
- cumulus_collection_doc ['version' ])
121
- self .__uds_collection .delete_collection (self .__collection_transformer .get_collection_id ())
122
- return {
123
- 'statusCode' : 500 ,
124
- 'body' : {
125
- 'message' : rule_creation_result ,
126
- 'details' : f'collection deletion result: { delete_collection_result } '
127
- }
128
- }
129
- return None
130
-
131
- def __delete_rules_cumulus (self , cumulus_collection_doc ):
132
- rule_deletion_result = self .__cumulus_collection_query .delete_sqs_rules (
133
- cumulus_collection_doc ,
134
- self .__cumulus_lambda_prefix
135
- )
136
- if 'status' not in rule_deletion_result :
137
- LOGGER .error (f'status not in rule_creation_result. deleting collection: { rule_deletion_result } ' )
138
- return {
139
- 'statusCode' : 500 ,
140
- 'body' : {
141
- 'message' : rule_deletion_result ,
142
- 'details' : f'collection deletion result: { rule_deletion_result } '
143
- }
144
- }
145
- return None
146
96
147
97
def __delete_collection_uds (self ):
148
98
try :
@@ -189,17 +139,28 @@ def __create_collection_uds(self, cumulus_collection_doc):
189
139
def delete (self ):
190
140
deletion_result = {}
191
141
try :
142
+
192
143
cumulus_collection_doc = self .__collection_transformer .from_stac (self .__request_body )
193
144
self .__provider_id = self .__provider_id if self .__collection_transformer .output_provider is None else self .__collection_transformer .output_provider
194
145
LOGGER .debug (f'__provider_id: { self .__provider_id } ' )
195
146
creation_result = 'NA'
196
147
197
148
if self .__include_cumulus :
198
- rules_deletion_result = self .__delete_rules_cumulus (cumulus_collection_doc )
199
- deletion_result ['cumulus_rule_deletion' ] = rules_deletion_result if rules_deletion_result is not None else 'succeeded'
200
- delete_err , delete_result = self .__delete_collection_cumulus (cumulus_collection_doc )
149
+ result = self .__cumulus_collection_query .delete_executions (cumulus_collection_doc , self .__cumulus_lambda_prefix )
150
+ print (f'execution list result: { result } ' )
151
+ self .__delete_collection_execution (cumulus_collection_doc , deletion_result )
152
+ self .__delete_collection_rule (cumulus_collection_doc , deletion_result )
153
+ delete_result = self .__cumulus_collection_query .delete_collection (self .__cumulus_lambda_prefix , cumulus_collection_doc ['name' ], cumulus_collection_doc ['version' ])
154
+ delete_err , delete_result = self .analyze_cumulus_result (delete_result )
155
+ if delete_err is not None :
156
+ LOGGER .error (f'deleting collection ends in error. Trying again. { delete_err } ' )
157
+ self .__delete_collection_execution (cumulus_collection_doc , deletion_result )
158
+ self .__delete_collection_rule (cumulus_collection_doc , deletion_result )
159
+ delete_result = self .__cumulus_collection_query .delete_collection (self .__cumulus_lambda_prefix , cumulus_collection_doc ['name' ], cumulus_collection_doc ['version' ])
160
+ delete_err , delete_result = self .analyze_cumulus_result (delete_result )
201
161
deletion_result ['cumulus_collection_deletion' ] = delete_err if delete_err is not None else delete_result
202
162
else :
163
+ deletion_result ['cumulus_executions_deletion' ] = 'NA'
203
164
deletion_result ['cumulus_rule_deletion' ] = 'NA'
204
165
deletion_result ['cumulus_collection_deletion' ] = 'NA'
205
166
@@ -222,23 +183,45 @@ def delete(self):
222
183
}
223
184
}
224
185
186
+ def __delete_collection_rule (self , cumulus_collection_doc , deletion_result ):
187
+ if 'cumulus_rule_deletion' in deletion_result and 'statusCode' not in deletion_result ['cumulus_rule_deletion' ]:
188
+ return
189
+ rule_deletion_result = self .__cumulus_collection_query .delete_sqs_rules (cumulus_collection_doc , self .__cumulus_lambda_prefix )
190
+ rule_delete_err , rule_delete_result = self .analyze_cumulus_result (rule_deletion_result )
191
+ deletion_result ['cumulus_rule_deletion' ] = rule_delete_err if rule_delete_err is not None else rule_delete_result
192
+ return
193
+
194
+ def __delete_collection_execution (self , cumulus_collection_doc , deletion_result ):
195
+ executions_delete_result = self .__cumulus_collection_query .delete_executions (cumulus_collection_doc , self .__cumulus_lambda_prefix )
196
+ exec_delete_err , exec_delete_result = self .analyze_cumulus_result (executions_delete_result )
197
+ deletion_result ['cumulus_executions_deletion' ] = exec_delete_err if exec_delete_err is not None else exec_delete_result
198
+ sleep (10 )
199
+ return
225
200
def create (self ):
226
201
try :
227
202
cumulus_collection_doc = self .__collection_transformer .from_stac (self .__request_body )
228
203
self .__provider_id = self .__provider_id if self .__collection_transformer .output_provider is None else self .__collection_transformer .output_provider
229
204
LOGGER .debug (f'__provider_id: { self .__provider_id } ' )
230
205
creation_result = 'NA'
231
206
if self .__include_cumulus :
232
- creation_err , creation_result = self .__create_collection_cumulus (cumulus_collection_doc )
207
+ creation_cumulus_result = self .__cumulus_collection_query .create_collection (cumulus_collection_doc , self .__cumulus_lambda_prefix )
208
+ creation_err , creation_result = self .analyze_cumulus_result (creation_cumulus_result )
233
209
if creation_err is not None :
234
210
return creation_err
235
211
uds_creation_result = self .__create_collection_uds (cumulus_collection_doc )
236
212
if uds_creation_result is not None :
237
213
return uds_creation_result
238
214
if self .__include_cumulus :
239
- create_rule_result = self .__create_rules_cumulus (cumulus_collection_doc )
240
- if create_rule_result is not None :
241
- return create_rule_result
215
+ rule_creation_result = self .__cumulus_collection_query .create_sqs_rules (
216
+ cumulus_collection_doc ,
217
+ self .__cumulus_lambda_prefix ,
218
+ self .__ingest_sqs_url ,
219
+ self .__provider_id ,
220
+ self .__workflow_name ,
221
+ )
222
+ create_rule_err , create_rule_result = self .analyze_cumulus_result (rule_creation_result )
223
+ if create_rule_err is not None :
224
+ return create_rule_err
242
225
# validation_result = pystac.Collection.from_dict(self.__request_body).validate()
243
226
# cumulus_collection_query = CollectionsQuery('', '')
244
227
#
0 commit comments