remove all traces of skydns and etcd from code
parent
dd8430e548
commit
8dfa63da5d
|
@ -1,10 +1,2 @@
|
|||
# OneDNS
|
||||
Dyanmic DNS for OpenNebula
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
$ docker-compose -f one-dns.yaml up
|
||||
$ python setup.py install
|
||||
$ onedns --etcd-host=http://localhost:2379 --client-cert /path/to/ssl/cert
|
||||
```
|
||||
|
|
22
one-dns.yaml
22
one-dns.yaml
|
@ -1,22 +0,0 @@
|
|||
version: '2'
|
||||
services:
|
||||
etcd:
|
||||
image: quay.io/coreos/etcd:v2.3.2
|
||||
restart: always
|
||||
ports:
|
||||
- "${ETCD_PORT}:${ETCD_PORT}"
|
||||
volumes:
|
||||
- "/tmp/data:/data"
|
||||
command: --listen-client-urls http://0.0.0.0:${ETCD_PORT} --advertise-client-urls http://0.0.0.0:${ETCD_PORT} --data-dir /data
|
||||
|
||||
skydns:
|
||||
image: skynetservices/skydns:2.5.3a
|
||||
restart: always
|
||||
ports:
|
||||
- "${DNS_PORT}:${DNS_PORT}"
|
||||
- "${DNS_PORT}:${DNS_PORT}/udp"
|
||||
links:
|
||||
- etcd
|
||||
depends_on:
|
||||
- etcd
|
||||
command: -machines http://etcd:${ETCD_PORT} -addr 0.0.0.0:${DNS_PORT} -no-rec
|
|
@ -1,18 +1,16 @@
|
|||
from onedns import exception
|
||||
from onedns.clients import one
|
||||
from onedns.clients import skydns
|
||||
from onedns.logger import log
|
||||
|
||||
|
||||
class OneDNS(object):
|
||||
"""
|
||||
This class bridges the gap between OpenNebula and SkyDNS APIs. It primarily
|
||||
provides convenience methods for adding/removing VMs to SkyDNS.
|
||||
This class provides convenience methods for adding/removing VMs to the
|
||||
DynamicResolver.
|
||||
"""
|
||||
|
||||
def __init__(self, domain, one_kwargs={}, etcd_kwargs={}):
|
||||
def __init__(self, domain, one_kwargs={}):
|
||||
self._one = one.OneClient(**one_kwargs)
|
||||
self._skydns = skydns.SkyDNSClient(domain, etcd_kwargs=etcd_kwargs)
|
||||
|
||||
def _check_for_networks(self, vm):
|
||||
if not hasattr(vm.template, 'nics'):
|
||||
|
@ -34,14 +32,14 @@ class OneDNS(object):
|
|||
dns_entries = self._get_vm_dns_entries(vm)
|
||||
log.info("Adding VM {id}: {vm}".format(id=vm.id, vm=vm.name))
|
||||
for name, ip in dns_entries.items():
|
||||
self._skydns.add_host(name, ip)
|
||||
self.add_host(name, ip)
|
||||
|
||||
def remove_vm(self, vm):
|
||||
self._check_for_networks(vm)
|
||||
dns_entries = self._get_vm_dns_entries(vm)
|
||||
log.info("Removing VM {id}: {vm}".format(id=vm.id, vm=vm.name))
|
||||
for name, ip in dns_entries.items():
|
||||
self._skydns.remove_host(name, ip)
|
||||
self.remove_host(name, ip)
|
||||
|
||||
def add_vm_by_id(self, vm_id):
|
||||
vm = self._one.get_vm_by_id(vm_id)
|
||||
|
|
|
@ -4,45 +4,35 @@ from onedns import api
|
|||
from onedns import utils
|
||||
from onedns import logger
|
||||
from onedns import monitor
|
||||
from onedns.clients import skydns
|
||||
|
||||
|
||||
def daemon(args, one_args, etcd_args):
|
||||
mon = monitor.OneMonitor(args.domain, one_kwargs=one_args,
|
||||
etcd_kwargs=etcd_args)
|
||||
def daemon(args, one_args):
|
||||
mon = monitor.OneMonitor(args.domain, one_kwargs=one_args)
|
||||
mon.run(args.interval)
|
||||
|
||||
|
||||
def add_host(args, one_args, etcd_args):
|
||||
client = skydns.SkyDNSClient(args.domain, etcd_kwargs=etcd_args)
|
||||
client.add_host(args.hostname, args.ip)
|
||||
def add_host(args, one_args):
|
||||
pass
|
||||
|
||||
|
||||
def remove_host(args, one_args, etcd_args):
|
||||
client = skydns.SkyDNSClient(args.domain, etcd_kwargs=etcd_args)
|
||||
client.remove_host(args.hostname, args.ip)
|
||||
def remove_host(args, one_args):
|
||||
pass
|
||||
|
||||
|
||||
def add_vm(args, one_args, etcd_args):
|
||||
client = api.OneDNS(args.domain, one_kwargs=one_args,
|
||||
etcd_kwargs=etcd_args)
|
||||
def add_vm(args, one_args):
|
||||
client = api.OneDNS(args.domain, one_kwargs=one_args)
|
||||
client.add_vm_by_id(args.id)
|
||||
|
||||
|
||||
def remove_vm(args, one_args, etcd_args):
|
||||
client = api.OneDNS(args.domain, one_kwargs=one_args,
|
||||
etcd_kwargs=etcd_args)
|
||||
def remove_vm(args, one_args):
|
||||
client = api.OneDNS(args.domain, one_kwargs=one_args)
|
||||
client.remove_vm_by_id(args.id)
|
||||
|
||||
|
||||
def shell(args, one_args, etcd_args):
|
||||
onemon = monitor.OneMonitor(args.domain, one_kwargs=one_args,
|
||||
etcd_kwargs=etcd_args)
|
||||
def shell(args, one_args):
|
||||
onemon = monitor.OneMonitor(args.domain, one_kwargs=one_args)
|
||||
oneclient = onemon._one
|
||||
skyclient = onemon._skydns
|
||||
etcdclient = skyclient._etcd
|
||||
ns = dict(onemon=onemon, skyclient=skyclient, oneclient=oneclient,
|
||||
etcdclient=etcdclient, log=logger.log)
|
||||
ns = dict(onemon=onemon, oneclient=oneclient, log=logger.log)
|
||||
utils.shell(local_ns=ns)
|
||||
|
||||
|
||||
|
@ -60,12 +50,6 @@ def main(args=None):
|
|||
help='ONE credentials to use (e.g. user:key)')
|
||||
parser.add_argument('--one-proxy', required=False,
|
||||
help='proxy host to use to connect to ONE controller')
|
||||
parser.add_argument('--etcd-host', required=False,
|
||||
help='etcd host to connect to')
|
||||
parser.add_argument('--etcd-port', required=False, type=int, default=4001,
|
||||
help='etcd port to connect to')
|
||||
parser.add_argument('--etcd-cert', required=False, type=int,
|
||||
help='path to etcd client ssl cert')
|
||||
subparsers = parser.add_subparsers()
|
||||
|
||||
daemon_parser = subparsers.add_parser('daemon')
|
||||
|
@ -107,6 +91,5 @@ def main(args=None):
|
|||
|
||||
args_dict = vars(args)
|
||||
one_args = utils.get_kwargs_from_dict(args_dict, 'one_')
|
||||
etcd_args = utils.get_kwargs_from_dict(args_dict, 'etcd_')
|
||||
|
||||
args.func(args, one_args, etcd_args)
|
||||
args.func(args, one_args)
|
||||
|
|
|
@ -1,60 +0,0 @@
|
|||
import re
|
||||
import json
|
||||
|
||||
import etcd
|
||||
|
||||
from onedns.logger import log
|
||||
|
||||
RE_VALIDNAME = re.compile('[^\w\d.-]')
|
||||
|
||||
|
||||
class SkyDNSClient(object):
|
||||
def __init__(self, domain, etcd_kwargs={}):
|
||||
self.domain = domain
|
||||
self._reverse_domain_parts = domain.split('.')
|
||||
self._reverse_domain_parts.reverse()
|
||||
self._etcd = etcd.Client(**etcd_kwargs)
|
||||
|
||||
def _sanitize_name(self, name):
|
||||
return RE_VALIDNAME.sub('', name).rstrip('.')
|
||||
|
||||
def _skydns_ns(self, parts):
|
||||
return '/'.join(['skydns'] + parts)
|
||||
|
||||
def _get_forward_ns(self, hostname):
|
||||
return self._skydns_ns(self._reverse_domain_parts + [hostname])
|
||||
|
||||
def _get_reverse_ns(self, ip):
|
||||
ip_parts = ip.split('.')
|
||||
return self._skydns_ns(['arpa/in-addr'] + ip_parts)
|
||||
|
||||
def add_forward(self, hostname, ip):
|
||||
forward = self._get_forward_ns(hostname)
|
||||
log.debug("adding forward: {path}".format(path=forward))
|
||||
self._etcd.write(forward, json.dumps(dict(host=ip)))
|
||||
|
||||
def remove_forward(self, hostname):
|
||||
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("adding reverse: {path}".format(path=reverse))
|
||||
self._etcd.write(reverse, json.dumps(dict(host=fqdn)))
|
||||
|
||||
def remove_reverse(self, ip):
|
||||
reverse = self._get_reverse_ns(ip)
|
||||
log.debug("removing reverse: {path}".format(path=reverse))
|
||||
self._etcd.delete(reverse)
|
||||
|
||||
def add_host(self, hostname, ip):
|
||||
hostname = self._sanitize_name(hostname)
|
||||
self.add_forward(hostname, ip)
|
||||
self.add_reverse(ip, hostname)
|
||||
|
||||
def remove_host(self, hostname, ip):
|
||||
hostname = self._sanitize_name(hostname)
|
||||
self.remove_forward(hostname)
|
||||
self.remove_reverse(ip)
|
|
@ -5,7 +5,7 @@ from onedns import api
|
|||
|
||||
class OneMonitor(api.OneDNS):
|
||||
"""
|
||||
Daemon that syncs OpenNebula VMs with SkyDNS
|
||||
Daemon that syncs OpenNebula VMs with OneDNS
|
||||
"""
|
||||
def run(self, interval=60):
|
||||
while True:
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
oca==4.10.0
|
||||
python-etcd==0.4.3
|
||||
IPy==0.83
|
||||
dnslib==0.9.6
|
||||
|
|
Loading…
Reference in New Issue