@@ -65,7 +65,7 @@ def get_inventory(self, context):
6565 self ._raise_and_log (logger , "There was an issue accessing GCP, please check authentication credentials." )
6666 # raise ValueError("Can't connect to GCP")
6767 except Exception as e :
68- raise ValueError (f"There was an issue initialization GCP provider resource. { e } " )
68+ logger . exception (f"There was an issue initialization GCP provider resource. { e } " )
6969 return AutoLoadDetails ([], [])
7070
7171 # </editor-fold>
@@ -77,7 +77,7 @@ def _validate_bucket_exists(self, bucket_name: str, context, logger):
7777 if len (str (get_bucket )) < 0 :
7878 raise ValueError (f"Bucket { bucket_name } not found" )
7979 except Exception as e :
80- self . _raise_and_log ( logger , f"There was an issue accessing the bucket { bucket_name } .{ e } " )
80+ logger . exception ( f"There was an issue accessing the bucket { bucket_name } .{ e } " )
8181
8282 def _can_conntect_to_gcp (self , context , logger ) -> bool :
8383 gcp_backend_resource = GcpTfBackend .create_from_context (context )
@@ -92,15 +92,16 @@ def get_backend_data(self, context, tf_state_unique_name: str) -> str:
9292
9393 with LoggingSessionContext (context ) as logger :
9494 gcp_backend_resource = GcpTfBackend .create_from_context (context )
95- tf_state_file_string = self ._generate_state_file_string (gcp_backend_resource , tf_state_unique_name )
96- backend_data = {"tf_state_file_string" : tf_state_file_string }
9795 project_id = gcp_backend_resource .project
9896 try :
9997 gcp_service = self ._create_gcp_session (context , project_id , logger )
10098 self ._backend_secret_vars = {"credentials" : gcp_service }
99+ os .environ [GOOGLE_APPLICATION_CREDENTIALS ] = gcp_service
100+ os .environ ["GOOGLE_PROJECT" ] = project_id
101101 except Exception as e :
102- self ._raise_and_log (logger , "Inputs for Cloud Backend Access missing or incorrect" )
103-
102+ logger .exception ("Inputs for Cloud Backend Access missing or incorrect" )
103+ tf_state_file_string = self ._generate_state_file_string (gcp_backend_resource , tf_state_unique_name )
104+ backend_data = {"tf_state_file_string" : tf_state_file_string }
104105 logger .info (f"Returning backend data for creating provider file :\n { backend_data } " )
105106 response = json .dumps ({"backend_data" : backend_data , "backend_secret_vars" : self ._backend_secret_vars })
106107 return response
@@ -117,10 +118,15 @@ def delete_tfstate_file(self, context, tf_state_unique_name: str):
117118 bucket = storage_client .get_bucket (bucket_name )
118119 """Delete object under folder"""
119120 blobs = list (bucket .list_blobs (prefix = tf_state_unique_name ))
120- bucket .delete_blobs (blobs )
121- logger .info (f"Folder { tf_state_unique_name } deleted." )
121+ if len (blobs ) == 0 :
122+ logger .exception (f"Folder { tf_state_unique_name } not exists." )
123+ elif len (blobs ) > 1 :
124+ logger .exception (f"There are more than 1 Folder { tf_state_unique_name } currenlty { len (blobs )} folders exist." )
125+ else :
126+ bucket .delete_blobs (blobs )
127+ logger .info (f"Folder { tf_state_unique_name } deleted." )
122128 except Exception as e :
123- raise ValueError (f"{ tf_state_unique_name } file was not removed from backend provider" )
129+ logger . exception (f"{ tf_state_unique_name } file was not removed from backend provider" )
124130
125131 def _generate_state_file_string (self , gcp_backend_resource : GcpTfBackend , tf_state_unique_name : str ):
126132 tf_state_file_string = f'terraform {{\n \
@@ -133,21 +139,22 @@ def _generate_state_file_string(self, gcp_backend_resource: GcpTfBackend, tf_sta
133139
134140 def _create_gcp_session (self , context , project_id : str , logger ):
135141 if not project_id :
136- self . _raise_and_log ( logger , "Project id must be filled" )
142+ logger . exception ( "Project id must be filled" )
137143 api = CloudShellSessionContext (context ).get_api ()
138144 gcp_backend_resource = GcpTfBackend .create_from_context (context )
139145 json_path = gcp_backend_resource .credentials_json_path
140146 # json_path defines on GCP TF BACKEND RESOURCE
141147 if json_path :
142148 if gcp_backend_resource .cloud_provider :
143- self . _raise_and_log ( logger , "Only one method of authentication should be filled" )
149+ logger . exception ( "Only one method of authentication should be filled" )
144150 os .environ [GOOGLE_APPLICATION_CREDENTIALS ] = json_path
145151 os .environ ["GOOGLE_PROJECT" ] = project_id
146152 # Keys not defines on GCP TF BACKEND RESOURCE (CLP reference should have been set)
147153 else :
148154 # CLP had not been set...
149155 if not gcp_backend_resource .cloud_provider :
150- self ._raise_and_log (logger , "At least one method of authentication should be filled" )
156+ logger .exception ("At least one method of authentication should be filled" )
157+
151158 # Check a correct CLP has been reference
152159 clp_details = api .GetResourceDetails
153160 clp_resource_details = self ._get_and_validate_clp (clp_details , gcp_backend_resource , logger )
@@ -178,4 +185,4 @@ def _get_and_validate_clp(self, clp_details, gcp_backend_resource: str, logger)
178185
179186 def _raise_and_log (self , logger , msg ):
180187 logger .exception (msg )
181- raise ValueError (msg )
188+ raise RuntimeError (msg )
0 commit comments