add new 'add' and 'remove' subcommands
Allows manually adding and removing hosts from DNS. These will be utilized by ONE hook scripts.master
parent
8114dbed88
commit
38d9e539fb
|
@ -2,6 +2,7 @@ import argparse
|
|||
|
||||
from onedns import monitor
|
||||
from onedns import logger
|
||||
from onedns.clients import skydns
|
||||
|
||||
|
||||
def get_kwargs(args, prefix):
|
||||
|
@ -17,6 +18,16 @@ def daemon(args, one_args, etcd_args):
|
|||
mon.run(args.interval)
|
||||
|
||||
|
||||
def add(args, one_args, etcd_args):
|
||||
client = skydns.SkyDNSClient(args.domain, etcd_kwargs=etcd_args)
|
||||
client.add_host(args.hostname, args.ip)
|
||||
|
||||
|
||||
def remove(args, one_args, etcd_args):
|
||||
client = skydns.SkyDNSClient(args.domain, etcd_kwargs=etcd_args)
|
||||
client.remove_host(args.hostname, args.ip)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description='OneDNS - Dynamic DNS for OpenNebula')
|
||||
|
@ -45,6 +56,16 @@ def main():
|
|||
'-i', '--interval', required=False, type=int, default=60,
|
||||
help="how often in seconds to poll ONE and update DNS")
|
||||
|
||||
add_parser = subparsers.add_parser('add')
|
||||
add_parser.set_defaults(func=add)
|
||||
add_parser.add_argument('hostname', help='name of host to add')
|
||||
add_parser.add_argument('ip', help='ip of host to add')
|
||||
|
||||
remove_parser = subparsers.add_parser('remove')
|
||||
remove_parser.set_defaults(func=remove)
|
||||
remove_parser.add_argument('hostname', help='name of host to remove')
|
||||
remove_parser.add_argument('ip', help='ip of host to remove')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
logger.configure_onedns_logging(debug=args.debug)
|
||||
|
|
|
@ -30,16 +30,30 @@ class SkyDNSClient(object):
|
|||
log.debug("forward path: {path}".format(path=forward))
|
||||
self._etcd.write(forward, json.dumps(dict(host=ip)))
|
||||
|
||||
def remove_forward(self, hostname, ip):
|
||||
forward = self._get_forward_ns(hostname)
|
||||
log.debug("removing forward: {path}".format(path=forward))
|
||||
self._etcd.delete(forward)
|
||||
|
||||
def add_reverse(self, ip, hostname):
|
||||
reverse = self._get_reverse_ns(ip)
|
||||
fqdn = '.'.join([hostname, self.domain])
|
||||
log.debug("reverse path: {path}".format(path=reverse))
|
||||
self._etcd.write(reverse, json.dumps(dict(host=fqdn)))
|
||||
|
||||
def remove_reverse(self, ip, hostname):
|
||||
reverse = self._get_reverse_ns(ip)
|
||||
log.debug("removing reverse: {path}".format(path=reverse))
|
||||
self._etcd.delete(reverse)
|
||||
|
||||
def add_host(self, hostname, ip):
|
||||
self.add_forward(hostname, ip)
|
||||
self.add_reverse(ip, hostname)
|
||||
|
||||
def remove_host(self, hostname, ip):
|
||||
self.remove_forward(hostname, ip)
|
||||
self.remove_reverse(ip, hostname)
|
||||
|
||||
def register(self, vm):
|
||||
log.info("Registering VM: {vm}".format(vm=vm.name))
|
||||
hostname = RE_VALIDNAME.sub('', vm.name).rstrip('.')
|
||||
|
|
Loading…
Reference in New Issue