#!/usr/bin/python

import os
import sys

home = os.environ.get("CUMIN_HOME", os.path.normpath("/usr/share/cumin"))
sys.path.append(os.path.join(home, "python"))

from cumin.config import CuminOptionParser, CuminDataConfig
from mint import data_app

def make_ctrl_c(sig, frame):
    log.debug("Signal received, raising KeyboardInterrupt")
    raise KeyboardInterrupt

class DataTemplate(data_app.DataAppTemplate):
    def __init__(self):

        self.default_data_section = "data"
        super(DataTemplate, self).__init__()

    def get_parser(self):
        return CuminOptionParser()

    def get_config(self, section):
        # --section controls which section is read from the config file
        # If a section other than the default is specified, require it to exist
        return CuminDataConfig(section, 
                   strict_section = section != self.default_data_section)

    def get_app(self, home, values, opts):
        from mint.main import Mint
        
        mint = Mint(home,
                    ("model", "model/admin"), 
                    opts.database)

        mint.aviary_query_servers = values.aviary_query_servers
        mint.aviary_collector_servers = values.aviary_collector_servers
        mint.aviary_locator = values.aviary_locator
        mint.aviary_key = values.aviary_key
        mint.aviary_cert = values.aviary_cert
        mint.aviary_root_cert = values.aviary_root_cert
        mint.aviary_domain_verify = values.aviary_domain_verify

        # For development use.  Default is False.  Undocumented.
        mint.aviary_suds_logs = values.aviary_suds_logs

        # Defautl is True.  Undocumented.
        mint.aviary_prefer_condor = values.aviary_prefer_condor

        if values.wallaroo_host == "None":
            values.wallaroo_host = None

        mint.wallaroo_host = values.wallaroo_host

        return mint

if __name__ == "__main__":
    try:
        import signal
        signal.signal(signal.SIGTERM, make_ctrl_c)
        sys.exit(data_app.main(DataTemplate()))
    except KeyboardInterrupt:
        sys.exit(0)
