2929import time
3030import traceback
3131from typing import Callable , Dict , Iterable , List , Optional , Tuple
32- from google .cloud import spanner
3332import datetime
3433from enum import Enum
3534
@@ -776,42 +775,6 @@ def _invoke_import_job(
776775 import_summary .import_stats .get ('source_data_size' , 0 ))
777776 return inputs
778777
779- def _update_import_status_table (
780- self , import_summary : ImportStatusSummary ) -> None :
781- """Updates import job status table in spanner."""
782- logging .info (
783- f'Updating { import_summary .import_name } status to { import_summary .status } in spanner.'
784- )
785- if not self .config .spanner_project_id or not self .config .spanner_instance_id or not self .config .spanner_database_id :
786- return
787- spanner_client = spanner .Client (
788- project = self .config .spanner_project_id ,
789- client_options = {'quota_project_id' : self .config .spanner_project_id })
790- instance = spanner_client .instance (self .config .spanner_instance_id )
791- database = instance .database (self .config .spanner_database_id )
792-
793- with database .batch () as batch :
794- columns = [
795- "ImportName" , "State" , "JobId" , "ExecutionTime" , "DataVolume" ,
796- "StatusUpdateTimestamp" , "NextRefreshTimestamp" , "LatestVersion"
797- ]
798- values = [
799- import_summary .import_name , import_summary .status .name ,
800- import_summary .job_id , import_summary .execution_time ,
801- import_summary .data_volume , spanner .COMMIT_TIMESTAMP ,
802- import_summary .next_refresh , import_summary .latest_version
803- ]
804- # Update import timestamp only if import completed successfully.
805- if import_summary .status == ImportStatus .READY :
806- columns .extend (["DataImportTimestamp" ])
807- values .extend ([spanner .COMMIT_TIMESTAMP ])
808-
809- batch .insert_or_update (table = "ImportStatus" ,
810- columns = tuple (columns ),
811- values = [tuple (values )])
812-
813- logging .info (f'Updated { import_summary .import_name } status in spanner.' )
814-
815778 def _update_latest_version (self , version , output_dir , import_spec ,
816779 import_summary ):
817780 if self .config .skip_gcs_upload :
@@ -821,25 +784,16 @@ def _update_latest_version(self, version, output_dir, import_spec,
821784 logging .info (f'Updating import latest version { version } ' )
822785 self .uploader .upload_string (
823786 version ,
824- os .path .join (output_dir , self .config .storage_version_filename ))
787+ os .path .join (output_dir , STAGING_PATH ,
788+ self .config .storage_version_filename ))
825789 self .uploader .upload_string (
826790 self ._import_metadata_mcf_helper (import_spec ),
827- os .path .join (output_dir , self .config .import_metadata_mcf_filename ))
791+ os .path .join (output_dir , version ,
792+ self .config .import_metadata_mcf_filename ))
828793 self .uploader .upload_string (
829794 json .dumps (dataclasses .asdict (import_summary ), default = str ),
830- os .path .join (output_dir , IMPORT_SUMMARY_FILE ))
831- # Add current version to the history of versions if import was successful.
832- if self .config .storage_version_history_filename :
833- history_filename = os .path .join (
834- output_dir , self .config .storage_version_history_filename )
835- versions_history = [version ]
836- history = self ._get_blob_content (history_filename )
837- if history :
838- versions_history .append (history )
839- self .uploader .upload_string ('\n ' .join (versions_history ),
840- history_filename )
795+ os .path .join (output_dir , version , IMPORT_SUMMARY_FILE ))
841796 logging .info (f'Updated import latest version { version } ' )
842- self ._update_import_status_table (import_summary )
843797
844798 @log_function_call
845799 def _import_one_helper (
@@ -868,21 +822,14 @@ def _import_one_helper(
868822 self .config .file_download_timeout )
869823
870824 output_dir = f'{ relative_import_dir } /{ import_name } '
871- version = self .config .import_version_override if self .config .import_version_override else _clean_time (
872- utils .pacific_time ())
825+ version = _clean_time (utils .pacific_time ())
873826 if version == 'DATE_VERSION_PLACEHOLDER' :
874827 version = datetime .datetime .now (datetime .UTC ).strftime ("%Y-%m-%d" )
875828 import_summary .latest_version = 'gs://' + os .path .join (
876829 self .config .storage_prod_bucket_name , output_dir , version , '*' , '*' ,
877830 '*.mcf' )
878831 import_summary .next_refresh = utils .next_utc_timestamp (
879832 import_spec .get ('cron_schedule' ))
880- if self .config .import_version_override and self .config .import_version_override != 'DATE_VERSION_PLACEHOLDER' :
881- logging .info (f'Import version override { version } ' )
882- import_summary .status = ImportStatus .READY
883- self ._update_latest_version (version , output_dir , import_spec ,
884- import_summary )
885- return
886833
887834 with tempfile .TemporaryDirectory () as tmpdir :
888835 requirements_path = os .path .join (absolute_import_dir ,
@@ -947,9 +894,6 @@ def _import_one_helper(
947894 import_summary .import_stats .get ('mcf_data_size' , 0 ) +
948895 import_summary .import_stats .get ('validation_data_size' , 0 ))
949896 logging .info (import_summary )
950- self .uploader .upload_string (
951- json .dumps (dataclasses .asdict (import_summary ), default = str ),
952- os .path .join (output_dir , version , IMPORT_SUMMARY_FILE ))
953897
954898 if self .config .ignore_validation_status or validation_status :
955899 import_summary .status = ImportStatus .READY
@@ -958,10 +902,7 @@ def _import_one_helper(
958902 "Staging latest version update due to validation failure." )
959903 import_summary .status = ImportStatus .VALIDATION
960904
961- # Update version and metadata files in staging folder for failed imports
962- version_dir = output_dir if import_summary .status == ImportStatus .READY else os .path .join (
963- output_dir , STAGING_PATH )
964- self ._update_latest_version (version , version_dir , import_spec ,
905+ self ._update_latest_version (version , output_dir , import_spec ,
965906 import_summary )
966907
967908 if self .importer :
0 commit comments