aboutsummaryrefslogtreecommitdiffstats
path: root/bin/common/srtool_update.py
diff options
context:
space:
mode:
Diffstat (limited to 'bin/common/srtool_update.py')
-rwxr-xr-xbin/common/srtool_update.py28
1 files changed, 17 insertions, 11 deletions
diff --git a/bin/common/srtool_update.py b/bin/common/srtool_update.py
index 131918ca..ec8554ea 100755
--- a/bin/common/srtool_update.py
+++ b/bin/common/srtool_update.py
@@ -91,8 +91,9 @@ def run_updates(force_all,name_filter,is_trial):
cur_write = conn.cursor()
time_now = datetime.now() #datetime.now(pytz.utc)
- print("SRTool Update: time_now = %s" % time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT))
- status_str = "====================\n"
+ if verbose:
+ print("SRTool Update: time_now = %s" % time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT))
+ status_str = "============================================================\n"
status_str += "Update: Date=%s,Filter='%s',Force=%s\n" % (time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT),name_filter,force_all)
#get sources that have update command
@@ -172,16 +173,24 @@ def run_updates(force_all,name_filter,is_trial):
# Not yet?
if testdate > time_now:
- status_str += " Skip '%s': update time not reached (%s)\n" % (source[ORM.DATASOURCE_DESCRIPTION],testdate.strftime(ORM.DATASOURCE_DATETIME_FORMAT))
+ time_to_go = testdate - time_now
+ frequency_str = ORM.get_orm_string(source[ORM.DATASOURCE_UPDATE_FREQUENCY],ORM.DATASOURCE_FREQUENCY_STR)
+ status_str += " Skip (next=%s in days=%2s minutes=%4s,%7s):%s\n" % (testdate.strftime(ORM.DATASOURCE_DATETIME_FORMAT),time_to_go.days,time_to_go.seconds//60,frequency_str,source[ORM.DATASOURCE_DESCRIPTION])
continue
else:
- status_str += " UPDATE '%s': update time reached (%s)\n" % (source[ORM.DATASOURCE_DESCRIPTION],testdate.strftime(ORM.DATASOURCE_DATETIME_FORMAT))
+ status_str += " UPDATE '%s': Time reached (%s)\n" % (source[ORM.DATASOURCE_DESCRIPTION],testdate.strftime(ORM.DATASOURCE_DATETIME_FORMAT))
# Execute the update
if is_trial:
print("TRIAL: Update required\t...\texecuting '%s'" % (source[ORM.DATASOURCE_UPDATE]))
status_str += " > TRIAL: execute '%s'\n" % (source[ORM.DATASOURCE_UPDATE])
else:
+ # First update the datasource's last_updated_date so avoid dual triggers
+ # (e.g. a manual test run on top of an automatic run)
+ sql = "UPDATE orm_datasource SET lastUpdatedDate=? WHERE id=?"
+ cur_write.execute(sql, (time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT),source[ORM.DATASOURCE_ID],) )
+ conn.commit()
+
print("Update required\t...\texecuting '%s'" % (source[ORM.DATASOURCE_UPDATE]))
status_str += " > EXECUTE: execute '%s'\n" % (source[ORM.DATASOURCE_UPDATE])
master_write("SRTOOL_UPDATE:%s:%s:%s\n" %(time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT),source[ORM.DATASOURCE_DESCRIPTION],source[ORM.DATASOURCE_UPDATE]))
@@ -190,10 +199,6 @@ def run_updates(force_all,name_filter,is_trial):
update_command += " --force"
os.system(os.path.join(script_pathname, update_command))
- # Reset datasource's last_updated_date
- sql = "UPDATE orm_datasource SET lastUpdatedDate=? WHERE id=?"
- cur_write.execute(sql, (time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT),source[ORM.DATASOURCE_ID],) )
- conn.commit()
conn.close()
# Status summary
@@ -213,7 +218,6 @@ def configure_ds_update(datasource_description, frequency, time):
conn.commit()
conn.close()
-
#################################
# List update data sources
#
@@ -236,8 +240,10 @@ def list():
continue
frequency_str = ORM.get_orm_string(source[ORM.DATASOURCE_UPDATE_FREQUENCY],ORM.DATASOURCE_FREQUENCY_STR)
print(format_str % (source[ORM.DATASOURCE_DATA],source[ORM.DATASOURCE_SOURCE],source[ORM.DATASOURCE_NAME],frequency_str,source[ORM.DATASOURCE_UPDATE_TIME],source[ORM.DATASOURCE_DESCRIPTION]))
- if verbose:
- print(format_str % ('',source[ORM.DATASOURCE_LASTMODIFIEDDATE],source[ORM.DATASOURCE_LASTUPDATEDDATE],'','',''))
+
+ if verbose:
+ print('')
+ run_updates(False,'all',True)
#################################
# Start 'cron' job for updates