#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
import argparse

from pyeole import scriptargs
from pyeole.log import init_logging
from pyeole.service import manage_services
from creole.reconfigure import services
from pyeole.ihm import only_root

only_root()

def parse_cmdline():

    service_actions=['apply', 'configure', 'enable', 'disable', 'status',
                     'start', 'stop', 'restart', 'reload']

    parser = argparse.ArgumentParser(description="Action sur les services",
                                     parents=[scriptargs.container(),
                                              scriptargs.logging('info')])
    parser.add_argument('service', help="Nom du service")
    parser.add_argument('action', choices=service_actions,
                        help="Action à effectuer")
    parser.add_argument("-f", "--force", action="store_true", default=False,
                        help="Ne pas valider l'état de service")
    parser.add_argument("-s", "--silent", action="store_true", default=False,
                        help="Ne pas affichier sur la console")

    opts = parser.parse_args()

    if opts.verbose:
        opts.log_level = 'info'
    if opts.debug:
        opts.log_level = 'debug'
    if opts.silent:
        opts.log_level = 'error'


    return opts

def main():
    options = parse_cmdline()
    log = init_logging(level=options.log_level)
    try:
        display = 'console'
        if options.silent:
            display = 'log'
        if options.service == 'all':
            if options.action == 'restart':
                services('stop', display_title=False, try_restart_lxc=False)
                services('start', display_title=False, try_restart_lxc=False)
            else:
                services(options.action, display_title=False, try_restart_lxc=False)
            ret = True
        else:
            ret = manage_services(options.action, options.service,
                                 container=options.container, force=options.force,
                             display=display)
    except Exception as err:
        if options.debug:
            log.debug(err, exc_info=True)
        else:
            log.error(err)
        sys.exit(1)
    sys.exit(ret)

if __name__ == '__main__':
    main()

