Source code for tokio.cli.cache_nersc_jobsdb

"""
Provides CLI interfaces for :meth:`tokio.connectors.nersc_jobsdb.NerscJobsDb.get_concurrent_jobs`
"""

import os
import time
import datetime
import argparse
import tokio.connectors.nersc_jobsdb

[docs]def main(argv=None): """Entry point for the CLI interface """ parser = argparse.ArgumentParser() parser.add_argument("start", type=str, help="start time in YYYY-MM-DDTHH:MM:SS format") parser.add_argument("end", type=str, help="end time in YYYY-MM-DDTHH:MM:SS format") parser.add_argument("host", type=str, help="return jobs running on this NERSC host") parser.add_argument("-i", "--input", type=str, default=None, help="input cache db file") parser.add_argument("-o", "--output", type=str, default=None, help="output file") args = parser.parse_args(argv) start = datetime.datetime.strptime(args.start, "%Y-%m-%dT%H:%M:%S") end = datetime.datetime.strptime(args.end, "%Y-%m-%dT%H:%M:%S") if args.input is not None: nerscjobsdb = tokio.connectors.nersc_jobsdb.NerscJobsDb(cache_file=args.input) else: nerscjobsdb = tokio.connectors.nersc_jobsdb.NerscJobsDb() nerscjobsdb.get_concurrent_jobs( int(time.mktime(start.timetuple())), int(time.mktime(end.timetuple())), args.host) cache_file = args.output if cache_file is None: i = 0 while True: cache_file = "nersc_jobsdb-%d.sqlite" % i if os.path.exists(cache_file): i += 1 else: break print("Caching to %s" % cache_file) nerscjobsdb.save_cache(cache_file)