#!/usr/bin/env python
  
import logging

import argparse
from crosscore._version import __version__
from crosscore import commands
import crosscore.daemon

#
# The crosscore user interface.
#
# All commands take the form:
#
#    xcore <command> [<args>]
#
parser = argparse.ArgumentParser(description='Crossbow: Cloud clusters for distributed computing.')
parser.add_argument('-V', '--version', action='version', version=__version__)
subparsers = parser.add_subparsers(dest='subparser_name')

status_parser = subparsers.add_parser('status', description='Status of crosscore cluster', help='status of crosscore cluster')
tart_parser = subparsers.add_parser('start', description='Start crosscore', help='create cloud resources')
restart_parser = subparsers.add_parser('restart', description='Restart crosscoreafter shutdown', help='recreate cloud resources')
shutdown_parser = subparsers.add_parser('shutdown', description='Shutdown and clean up entirely', help='terminate and delete all resources')

daemon_parser = subparsers.add_parser('daemon', description='Control the crosscore daemon', help='control the xcore daemon')
daemon_parser.add_argument('action', help='start, stop or query the daemon')

args = parser.parse_args()

if args.subparser_name == 'status':
    response = commands.status()
    print(response)
elif args.subparser_name == 'start':
    commands.start()
elif args.subparser_name == 'restart':
    commands.start(restart=True)
elif args.subparser_name == 'shutdown':
    commands.shutdown()
elif args.subparser_name == 'daemon':
    if args.action == 'start':
        crosscore.daemon.start_daemon()
    elif args.action == 'stop':
        crosscore.daemon.stop_daemon()
    elif args.action == 'status':
        if crosscore.daemon.daemon_running():
            print('daemon running')
        else:
            print('daemon not running')
    elif args.action == 'log':
        response = crosscore.daemon.daemon_log()
        print(response)
    else:
        print('Error - unknown action "{}"'.format(args.action))
