Skip to content

Commit b23cacb

Browse files
Merge pull request #155 from mhearne-usgs/tsunami
Tsunami
2 parents 24eeeec + 04b1887 commit b23cacb

File tree

4 files changed

+40
-22
lines changed

4 files changed

+40
-22
lines changed

adminpager

+13-3
Original file line numberDiff line numberDiff line change
@@ -470,8 +470,16 @@ def main(args):
470470
if args.tsunami[1] not in ['on','off']:
471471
print('Tsunami syntax: adminpager --tsunami EVENT on/off')
472472
sys.exit(1)
473-
result = pdataframe = admin.toggleTsunami(args.tsunami[0],args.tsunami[1])
473+
#toggling re-runs PAGER, including whatever transfer may happen
474+
result,stdout,stderr = admin.toggleTsunami(args.tsunami[0],args.tsunami[1])
474475
print('Tsunami status has been set to %s for event %s' % (args.tsunami[1],args.tsunami[0]))
476+
if result:
477+
lines = stdout.decode('utf-8').split('\n')
478+
print('This event has been re-run successfully, with the output:')
479+
for line in lines:
480+
print(line)
481+
if not result:
482+
print('This event has not been re-run successfully, with the output:"%s"' % (stderr))
475483
sys.exit(0)
476484

477485
if args.stats:
@@ -511,9 +519,11 @@ if __name__ == '__main__':
511519
To release an event: "adminpager --release EVENTID"
512520
To renotify for an event: "adminpager --renotify EVENTID"
513521
514-
Setting tsunami flag for an event (does not re-run):
522+
Setting tsunami flag for an event (will re-run PAGER):
523+
515524
To toggle the tsunami flag ON for an event: "adminpager --tsunami EVENTID on"
516525
To toggle the tsunami flag OFF for an event: "adminpager --tsunami EVENTID off"
526+
To allow PAGER to use ComCat/magnitude to determine tsunami behavior: "adminpager --tsunami EVENTID auto"
517527
518528
Querying existing events:
519529
To print a list of the events from the last 14 days: "adminpager --query recent"
@@ -553,7 +563,7 @@ if __name__ == '__main__':
553563
help="Print or change PAGER (and also possibly PAGER MAIL) primary/secondary status.")
554564
argparser.add_argument("--tsunami", nargs=2,
555565
help="Toggle tsunami warning on PAGER alert",
556-
metavar=('EVENT','on/off'))
566+
metavar=('EVENT','on/off/auto'))
557567
argparser.add_argument('--query',nargs='*',metavar='PARAM',
558568
help="List events that match the query. Params are [START/all/recent [MAG [ALERT [END [VERSION]]]]].")
559569
argparser.add_argument("--history",

losspager/io/pagerdata.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def setInputs(self,shakegrid,timezone_file,pagerversion,versioncode,
6666
self._elapsed_minutes = elapsed
6767

6868
def setExposure(self,exposure,econ_exposure):
69-
nmmi,self._maxmmi = self._get_maxmmi(exposure)
69+
self._maxmmi,nmmi = self._get_maxmmi(exposure)
7070
#convert all numpy integers to python integers
7171
new_exposure = {}
7272
for key,value in exposure.items():

losspager/utils/admin.py

+24-16
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import shutil
88
import json
99
import getpass
10+
from distutils.spawn import find_executable
1011

1112
#local imports
1213
from losspager.utils.exception import PagerException
@@ -175,9 +176,12 @@ def createEventFolder(self,eventid,event_time):
175176
authid,allids = ccinfo.getAssociatedIds()
176177
allids.append(authid)
177178
for eid in allids:
178-
eventfolder = os.path.join(outfolder,eid+event_time.strftime(DATETIMEFMT))
179-
if os.path.isdir(eventfolder):
180-
return eventfolder
179+
#here we need to look for the *folder* containing the *pattern* with
180+
#the eid in question. getEventFolder does this for us.
181+
teventfolder = self.getEventFolder(eid)
182+
if teventfolder is not None:
183+
eventfolder = teventfolder
184+
break
181185
except:
182186
pass
183187
if not os.path.isdir(eventfolder):
@@ -402,19 +406,23 @@ def toggleTsunami(self,eventid,tsunami='off'):
402406
f.write('%s' % tsunami)
403407
f.close()
404408

405-
version_folders = sorted(glob.glob(os.path.join(event_folder,'version.*')))
406-
jsonfile = os.path.join(version_folders[-1],'json','event.json')
407-
f = open(jsonfile,'rt')
408-
jdict = json.load(f)
409-
f.close()
410-
if jdict['event']['tsunami'] == tsunami:
411-
return False
412-
jdict['event']['tsunami'] = toggle[tsunami]
413-
f = open(jsonfile,'wt')
414-
json.dump(jdict,f)
415-
f.close()
416-
return True
417-
409+
version_folder = sorted(glob.glob(os.path.join(event_folder,'version.*')))[-1]
410+
res,stdout,stderr = self.runPager(version_folder,tsunami=tsunami)
411+
return (res,stdout,stderr)
412+
413+
def runPager(self,versionfolder,release=False,cancel=False,tsunami='auto'):
414+
gridfile = os.path.join(versionfolder,'grid.xml')
415+
pagerbin = find_executable('pager')
416+
if pagerbin is None:
417+
raise PagerException('Could not find PAGER executable on this system.')
418+
pagercmd = pagerbin + ' %s' % gridfile
419+
if release:
420+
pagercmd += ' --release'
421+
if cancel:
422+
pagercmd += ' --cancel'
423+
pagercmd += ' --tsunami=%s' % tsunami
424+
res,stdout,stderr = get_command_output(pagercmd)
425+
return (res,stdout,stderr)
418426

419427
def query(self,start_time=datetime.datetime(1800,1,1),end_time=datetime.datetime.utcnow(),
420428
mag_threshold=0.0,alert_threshold='green',version='last',eventid=None):

setup_env.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ rm openquake.zip
3636
#pip install git+https://github.com/gem/oq-hazardlib.git
3737

3838
#download MapIO, install it using pip locally
39-
curl --max-time 60 --retry 3 -L https://github.com/usgs/MapIO/archive/v0.5.157.zip -o mapio.zip
39+
curl --max-time 60 --retry 3 -L https://github.com/usgs/MapIO/archive/v0.6.zip -o mapio.zip
4040
pip install mapio.zip
4141
rm mapio.zip
4242
#pip install git+https://github.com/usgs/MapIO.git
4343

44-
#download MapIO, install it using pip locally
44+
#download impactutils, install it using pip locally
4545
curl --max-time 60 --retry 3 -L https://github.com/usgs/earthquake-impact-utils/archive/master.zip -o impact.zip
4646
pip install impact.zip
4747
rm impact.zip

0 commit comments

Comments
 (0)