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.")