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

import argparse
import sys
from vmmgr import VMMgr
from vmmgr.config import Config

parser = argparse.ArgumentParser(description='VM application manager')
subparsers = parser.add_subparsers()

parser_register_app = subparsers.add_parser('register-app')
parser_register_app.set_defaults(action='register-app')
parser_register_app.add_argument('app')
parser_register_app.add_argument('login', nargs='?')
parser_register_app.add_argument('password', nargs='?')

parser_rebuild_issue = subparsers.add_parser('rebuild-issue')
parser_rebuild_issue.set_defaults(action='rebuild-issue')

parser_prepare_container = subparsers.add_parser('prepare-container')
parser_prepare_container.add_argument('lxc', nargs=argparse.REMAINDER)
parser_prepare_container.set_defaults(action='prepare-container')

parser_register_container = subparsers.add_parser('register-container')
parser_register_container.add_argument('lxc', nargs=argparse.REMAINDER)
parser_register_container.set_defaults(action='register-container')

parser_unregister_container = subparsers.add_parser('unregister-container')
parser_unregister_container.add_argument('lxc', nargs=argparse.REMAINDER)
parser_unregister_container.set_defaults(action='unregister-container')

parser_register_proxy = subparsers.add_parser('register-proxy')
parser_register_proxy.set_defaults(action='register-proxy')
parser_register_proxy.add_argument('app', help='Application name')

parser_unregister_proxy = subparsers.add_parser('unregister-proxy')
parser_unregister_proxy.set_defaults(action='unregister-proxy')
parser_unregister_proxy.add_argument('app', help='Application name')

args = parser.parse_args()
conf = Config()
mgr = VMMgr(conf)
if args.action == 'register-app':
    # Used by app install scripts
    mgr.register_app(args.app, args.login, args.password)
elif args.action == 'rebuild-issue':
    # Used on VM startup
    mgr.rebuild_issue()
elif args.action == 'prepare-container':
    # Used with LXC hooks
    mgr.prepare_container()
elif args.action == 'register-container':
    # Used with LXC hooks
    mgr.register_container()
elif args.action == 'unregister-container':
    # Used with LXC hooks
    mgr.unregister_container()
elif args.action == 'register-proxy':
    # Used in init scripts
    mgr.register_proxy(args.app)
elif args.action == 'unregister-proxy':
    # Used in init scripts
    mgr.unregister_proxy(args.app)
