Source code for schrodinger.job.hunt_stub
"""
This module support showing host information from SCHRODINGER/run
"""
import argparse
import logging
import os
import sys
import pymmlibs
pymmlibs.mmerr_set_mmlibs()
# isort: split
from . import jobcontrol
logger = logging.getLogger('jobc')
logger.setLevel(logging.INFO)
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(handler)
[docs]def parse_hunt_args(args):
"""
Parse the command line args.
"""
parser = argparse.ArgumentParser()
parser.add_argument("-HOST", dest="host", default="localhost")
group = parser.add_mutually_exclusive_group()
group.add_argument("-HOSTS", action="store_true", dest="list_hosts")
group.add_argument("-ENTRY",
"-CONFIG",
action="store_true",
dest="show_host")
return parser.parse_args(args)
[docs]def hunt(args=None):
"""
Read the schrodinger.hosts file and list entries.
"""
opt = parse_hunt_args(args)
if opt.show_host or opt.list_hosts:
hostsfile = jobcontrol.get_hostfile()
logger.info(f"hosts file: {hostsfile}")
if not hostsfile:
logger.warning("no hosts file was specified.")
elif not os.path.isfile(hostsfile):
logger.error("hosts file does not exist.")
entry_names = [entry.name for entry in jobcontrol.get_hosts()]
if opt.list_hosts:
logger.info("\n".join(entry_names))
return
if opt.host in entry_names:
entry = jobcontrol.get_host(opt.host)
if opt.show_host:
logger.info("\n".join(entry._hostLines()))
return
else:
logger.error(f"no entry for '{opt.host}' in hosts file.")