2016-07-14 16:56:32 +03:00
|
|
|
import argparse
|
|
|
|
|
2016-07-21 16:52:27 +03:00
|
|
|
from onedns import api
|
2016-07-20 17:03:37 +03:00
|
|
|
from onedns import utils
|
2016-07-14 16:56:32 +03:00
|
|
|
from onedns import logger
|
2016-07-21 16:52:27 +03:00
|
|
|
from onedns import monitor
|
2016-07-14 16:56:32 +03:00
|
|
|
|
|
|
|
|
2016-08-02 18:54:29 +03:00
|
|
|
def daemon(args, one_args):
|
|
|
|
mon = monitor.OneMonitor(args.domain, one_kwargs=one_args)
|
2016-07-19 16:14:34 +03:00
|
|
|
mon.run(args.interval)
|
|
|
|
|
|
|
|
|
2016-08-02 18:54:29 +03:00
|
|
|
def add_host(args, one_args):
|
|
|
|
pass
|
2016-07-19 16:15:15 +03:00
|
|
|
|
|
|
|
|
2016-08-02 18:54:29 +03:00
|
|
|
def remove_host(args, one_args):
|
|
|
|
pass
|
2016-07-19 16:15:15 +03:00
|
|
|
|
|
|
|
|
2016-08-02 18:54:29 +03:00
|
|
|
def add_vm(args, one_args):
|
|
|
|
client = api.OneDNS(args.domain, one_kwargs=one_args)
|
2016-07-21 16:52:27 +03:00
|
|
|
client.add_vm_by_id(args.id)
|
|
|
|
|
|
|
|
|
2016-08-02 18:54:29 +03:00
|
|
|
def remove_vm(args, one_args):
|
|
|
|
client = api.OneDNS(args.domain, one_kwargs=one_args)
|
2016-07-21 16:52:27 +03:00
|
|
|
client.remove_vm_by_id(args.id)
|
|
|
|
|
|
|
|
|
2016-08-02 18:54:29 +03:00
|
|
|
def shell(args, one_args):
|
|
|
|
onemon = monitor.OneMonitor(args.domain, one_kwargs=one_args)
|
2016-07-20 17:03:37 +03:00
|
|
|
oneclient = onemon._one
|
2016-08-02 18:54:29 +03:00
|
|
|
ns = dict(onemon=onemon, oneclient=oneclient, log=logger.log)
|
2016-07-20 17:03:37 +03:00
|
|
|
utils.shell(local_ns=ns)
|
|
|
|
|
|
|
|
|
2016-07-21 22:21:47 +03:00
|
|
|
def main(args=None):
|
2016-07-15 05:28:22 +03:00
|
|
|
parser = argparse.ArgumentParser(
|
|
|
|
description='OneDNS - Dynamic DNS for OpenNebula')
|
2016-07-19 16:11:49 +03:00
|
|
|
parser.add_argument('--debug', required=False,
|
|
|
|
action='store_true', default=False,
|
2016-07-15 05:28:22 +03:00
|
|
|
help='ONE controller host address')
|
2016-07-19 16:11:49 +03:00
|
|
|
parser.add_argument('-d', '--domain', required=False, default='one.local',
|
|
|
|
help='DNS domain to use')
|
2016-07-14 16:56:32 +03:00
|
|
|
parser.add_argument('--one-address', required=False,
|
|
|
|
help='ONE controller host address')
|
|
|
|
parser.add_argument('--one-secret', required=False,
|
|
|
|
help='ONE credentials to use (e.g. user:key)')
|
|
|
|
parser.add_argument('--one-proxy', required=False,
|
|
|
|
help='proxy host to use to connect to ONE controller')
|
2016-07-19 16:14:34 +03:00
|
|
|
subparsers = parser.add_subparsers()
|
|
|
|
|
|
|
|
daemon_parser = subparsers.add_parser('daemon')
|
|
|
|
daemon_parser.set_defaults(func=daemon)
|
|
|
|
daemon_parser.add_argument(
|
|
|
|
'-i', '--interval', required=False, type=int, default=60,
|
|
|
|
help="how often in seconds to poll ONE and update DNS")
|
|
|
|
|
2016-07-19 16:15:15 +03:00
|
|
|
add_parser = subparsers.add_parser('add')
|
2016-07-21 16:52:27 +03:00
|
|
|
add_subparser = add_parser.add_subparsers()
|
|
|
|
|
|
|
|
add_vm_parser = add_subparser.add_parser('vm')
|
|
|
|
add_vm_parser.set_defaults(func=add_vm)
|
|
|
|
add_vm_parser.add_argument('id', type=int, help='id of the vm to add')
|
|
|
|
|
|
|
|
add_host_parser = add_subparser.add_parser('host')
|
|
|
|
add_host_parser.set_defaults(func=add_host)
|
|
|
|
add_host_parser.add_argument('hostname', help='name of host to add')
|
|
|
|
add_host_parser.add_argument('ip', help='ip of host to add')
|
|
|
|
|
|
|
|
rm_parser = subparsers.add_parser('remove')
|
|
|
|
rm_subparser = rm_parser.add_subparsers()
|
|
|
|
|
|
|
|
rm_vm_parser = rm_subparser.add_parser('vm')
|
|
|
|
rm_vm_parser.set_defaults(func=remove_vm)
|
|
|
|
rm_vm_parser.add_argument('id', type=int, help='id of the vm to add')
|
|
|
|
|
|
|
|
rm_host_parser = rm_subparser.add_parser('host')
|
|
|
|
rm_host_parser.set_defaults(func=remove_host)
|
|
|
|
rm_host_parser.add_argument('hostname', help='name of host to remove')
|
|
|
|
rm_host_parser.add_argument('ip', help='ip of host to remove')
|
2016-07-19 16:15:15 +03:00
|
|
|
|
2016-07-20 17:03:37 +03:00
|
|
|
shell_parser = subparsers.add_parser('shell')
|
|
|
|
shell_parser.set_defaults(func=shell)
|
|
|
|
|
2016-07-21 22:21:47 +03:00
|
|
|
args = parser.parse_args(args=args)
|
2016-07-19 16:14:34 +03:00
|
|
|
|
2016-07-15 05:28:22 +03:00
|
|
|
logger.configure_onedns_logging(debug=args.debug)
|
2016-07-19 16:14:34 +03:00
|
|
|
|
2016-07-21 22:11:30 +03:00
|
|
|
args_dict = vars(args)
|
|
|
|
one_args = utils.get_kwargs_from_dict(args_dict, 'one_')
|
2016-07-19 16:14:34 +03:00
|
|
|
|
2016-08-02 18:54:29 +03:00
|
|
|
args.func(args, one_args)
|