add shell subcommand for IPython development

master
Justin Riley 2016-07-20 10:03:37 -04:00
parent b8b9dab77c
commit 388739a2e0
2 changed files with 25 additions and 0 deletions

View File

@ -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)

10
onedns/utils.py Normal file
View File

@ -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.")