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 import argparse
from onedns import monitor from onedns import monitor
from onedns import utils
from onedns import logger from onedns import logger
from onedns.clients import skydns from onedns.clients import skydns
@ -28,6 +29,17 @@ def remove(args, one_args, etcd_args):
client.remove_host(args.hostname, args.ip) 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(): def main():
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description='OneDNS - Dynamic DNS for OpenNebula') 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('hostname', help='name of host to remove')
remove_parser.add_argument('ip', help='ip 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() args = parser.parse_args()
logger.configure_onedns_logging(debug=args.debug) 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.")