From 388739a2e08cfb4709b9f326966d32ce9858de14 Mon Sep 17 00:00:00 2001 From: Justin Riley Date: Wed, 20 Jul 2016 10:03:37 -0400 Subject: [PATCH] add shell subcommand for IPython development --- onedns/cli.py | 15 +++++++++++++++ onedns/utils.py | 10 ++++++++++ 2 files changed, 25 insertions(+) create mode 100644 onedns/utils.py 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.")