@@ -32,22 +32,16 @@ def update_data_services(resource_id):
3232
3333 for db in database_list ['geoserver' ]['unregister' ]:
3434 unregister_geoserver_db (resource_id , db )
35- remove_copied_file_from_geoserver (resource_id , db )
3635
3736 for db in database_list ['geoserver' ]['register' ]:
3837 # copy geoserver files from HS to GeoServer
39- file_transfer_info = copy_file_to_geoserver (resource_id , db )
38+ file_transfer_info = copy_files_to_geoserver (resource_id , db )
4039 if file_transfer_info ['success' ] is False :
4140 response ['message' ] = file_transfer_info ['message' ]
4241 return response
4342 db_info = register_geoserver_db (resource_id , db )
4443 if db_info ['success' ] is False :
45- logging .error ("Error registering GeoServer layer. Unregistering..." )
4644 unregister_geoserver_db (resource_id , db )
47- # TODO: ideally we "inform" HS that the registration failed
48- # This is called from an async task, so we can't return a meaningful response to HS
49- logging .info ("Removing copied files from GeoServer..." )
50- remove_copied_file_from_geoserver (resource_id , db )
5145
5246 geoserver_list = get_geoserver_list (resource_id )
5347
@@ -68,12 +62,12 @@ def update_data_services(resource_id):
6862 return response
6963
7064
71-
7265def get_database_list (res_id ):
7366 """
7467 Gets a list of HydroShare databases on which web services can be published.
7568 """
7669
70+ logger .info (f"Getting database list for resource: { res_id } " )
7771 db_list = {
7872 "access" : None ,
7973 "geoserver" : {
@@ -174,12 +168,12 @@ def get_database_list(res_id):
174168 return db_list
175169
176170
177-
178171def get_geoserver_list (res_id ):
179172 """
180173 Gets a list of data stores and coverages from a GeoServer workspace.
181174 """
182175
176+ logger .info (f"Getting geoserver list for resource: { res_id } " )
183177 layer_list = []
184178
185179 geoserver_namespace = settings .DATA_SERVICES .get ("geoserver" , {}).get ('NAMESPACE' )
@@ -288,11 +282,12 @@ def get_geoserver_data_dir():
288282 return geoserver_directory
289283
290284
291- def copy_file_to_geoserver (res_id , db ):
285+ def copy_files_to_geoserver (res_id , db ):
292286 """
293287 Copy Geospatial file from HydroShare to GeoServer.
294288 """
295289
290+ logger .info (f"Copying files to GeoServer for resource: { res_id } " )
296291 geoserver_directory = get_geoserver_data_dir ()
297292
298293 layer_type = None
@@ -311,11 +306,11 @@ def copy_file_to_geoserver(res_id, db):
311306
312307 def get_and_write_file (file_url , file_path ):
313308 try :
314- logger .info (f"Copying file to GeoServer from: { file_url } " )
309+ logger .info (f"Getting file from: { file_url } " )
315310 response = requests .get (file_url )
316311 # create the directory if it doesn't exist
317312 dir_path = os .path .dirname (file_path ) + "/"
318- logger .info (f"Creating directory: { dir_path } " )
313+ logger .info (f"Checking for directory: { dir_path } " )
319314 os .makedirs (os .path .dirname (dir_path ), exist_ok = True )
320315 with open (file_path , 'w+b' ) as f :
321316 logger .info (f"Writing file to GeoServer: { file_path } " )
@@ -353,7 +348,7 @@ def get_and_write_file(file_url, file_path):
353348 return error_response
354349
355350
356- def remove_copied_file_from_geoserver (res_id , db ):
351+ def remove_copied_files_from_geoserver (res_id , db ):
357352 """
358353 Remove file from GeoServer.
359354 """
@@ -378,10 +373,11 @@ def remove_copied_file_from_geoserver(res_id, db):
378373 file_path = os .path .join (geoserver_directory , db ["hs_path" ])
379374 logger .info (f"Removing file from GeoServer: { file_path } " )
380375 os .remove (file_path )
381- for file in db ["associated_files" ]:
382- file_path = os .path .join (geoserver_directory , file )
383- logger .info (f"Removing associated file from GeoServer: { file_path } " )
384- os .remove (file_path )
376+ if db .get ("associated_files" , None ):
377+ for file in db ["associated_files" ]:
378+ file_path = os .path .join (geoserver_directory , file )
379+ logger .info (f"Removing associated file from GeoServer: { file_path } " )
380+ os .remove (file_path )
385381 except Exception as e :
386382 message = f"Error removing files from geoserver: { e } "
387383 error_response ["message" ] = message
@@ -401,6 +397,7 @@ def remove_files_for_entire_resource(res_id):
401397 Remove all files from GeoServer for a resource.
402398 """
403399
400+ logger .info (f"Removing all files for entire resource: { res_id } " )
404401 geoserver_directory = get_geoserver_data_dir ()
405402
406403 error_response = {
@@ -467,8 +464,8 @@ def register_geoserver_db(res_id, db):
467464 if json .loads (response .content .decode ('utf-8' ))[db ["verification" ]]["enabled" ] is False :
468465 logging .error (f"Verification not enabled for layer: { db ['layer_name' ]} " )
469466 return error_response
470- except :
471- logging .error (f"Error checking verification for layer: { db ['layer_name' ]} " )
467+ except Exception as e :
468+ logging .error (f"Error checking verification for layer { db ['layer_name' ]} : { e } " )
472469 return error_response
473470
474471 bbox = json .loads (response .content )[db ["verification" ]]["nativeBoundingBox" ]
@@ -477,7 +474,7 @@ def register_geoserver_db(res_id, db):
477474 response = requests .put (rest_url , headers = headers , auth = geoserver_auth , data = data )
478475
479476 if response .status_code != 200 :
480- logging .error (f"Error attempting to put layer data at { rest_url } " )
477+ logging .error (f"Error attempting to put layer data at { rest_url } : { response } " )
481478 return error_response
482479
483480 if db ["layer_type" ] == "GeographicRaster" :
@@ -518,7 +515,7 @@ def register_geoserver_db(res_id, db):
518515 except Exception as e :
519516 pass
520517
521- logger .info (f"Successfully registered GeoServer layer for resource : { res_id } " )
518+ logger .info (f"Successfully registered GeoServer layer: { db } " )
522519 add_string = ""
523520 if bbox .get ("crs" , None ):
524521 add_string = f"&srs={ bbox ['crs' ]} "
@@ -530,7 +527,7 @@ def unregister_geoserver_db(res_id, db):
530527 Removes a GeoServer layer
531528 """
532529
533- logger .info (f"Unregistering GeoServer layer for resource : { res_id } " )
530+ logger .info (f"Unregistering GeoServer layer: { db } " )
534531 geoserver_namespace = settings .DATA_SERVICES .get ("geoserver" , {}).get ('NAMESPACE' )
535532 geoserver_url = settings .DATA_SERVICES .get ("geoserver" , {}).get ('URL' )
536533 geoserver_user = settings .DATA_SERVICES .get ("geoserver" , {}).get ('USER' )
@@ -556,7 +553,12 @@ def unregister_geoserver_db(res_id, db):
556553 else :
557554 response = None
558555
556+ remove_copied_files_from_geoserver (res_id , db )
557+
559558 logger .info (f"Successfully unregistered GeoServer layer for resource: { res_id } " )
559+
560+ # TODO: ideally we "inform" HS that the registration failed
561+ # This is called from an async task, so we can't return a meaningful response to HS
560562 return response
561563
562564
@@ -604,6 +606,7 @@ def get_layer_style(max_value, min_value, ndv_value, layer_id):
604606
605607
606608def get_list_of_public_geo_resources ():
609+ logger .info ("Getting list of public geospatial resources" )
607610 hydroshare_url = "/" .join (settings .HYDROSHARE_URL .split ("/" )[:- 1 ])
608611 types = ["Geographic Feature (ESRI Shapefiles)" , "Geographic Raster" ]
609612 # replace spaces with + for the query string
0 commit comments