diff --git a/onedns/cli.py b/onedns/cli.py index b309993..8d434e4 100644 --- a/onedns/cli.py +++ b/onedns/cli.py @@ -1,6 +1,7 @@ import argparse from onedns import monitor +from onedns import utils from onedns import logger from onedns.clients import skydns @@ -28,6 +29,17 @@ def remove(args, one_args, etcd_args): client.remove_host(args.hostname, args.ip) +def shell(args, one_args, etcd_args): + onemon = monitor.OneMonitor(args.domain, one_kwargs=one_args, + etcd_kwargs=etcd_args) + oneclient = onemon._one + skyclient = onemon._skydns + etcdclient = skyclient._etcd + ns = dict(onemon=onemon, skyclient=skyclient, oneclient=oneclient, + etcdclient=etcdclient) + utils.shell(local_ns=ns) + + def main(): parser = argparse.ArgumentParser( description='OneDNS - Dynamic DNS for OpenNebula') @@ -66,6 +78,9 @@ def main(): remove_parser.add_argument('hostname', help='name of host to remove') remove_parser.add_argument('ip', help='ip of host to remove') + shell_parser = subparsers.add_parser('shell') + shell_parser.set_defaults(func=shell) + args = parser.parse_args() logger.configure_onedns_logging(debug=args.debug) diff --git a/onedns/utils.py b/onedns/utils.py new file mode 100644 index 0000000..41eb18b --- /dev/null +++ b/onedns/utils.py @@ -0,0 +1,10 @@ +from onedns.logger import log + + +def shell(local_ns={}): + try: + from IPython import embed + return embed(user_ns=local_ns) + except ImportError as e: + log.error("Unable to load IPython:\n\n%s\n" % e) + log.error("Please check that IPython is installed and working.")