remove all traces of skydns and etcd from code

master
Justin Riley 2016-08-02 11:54:29 -04:00
parent dd8430e548
commit 8dfa63da5d
8 changed files with 20 additions and 131 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,3 @@
oca==4.10.0
python-etcd==0.4.3
IPy==0.83
dnslib==0.9.6

View File

@ -20,7 +20,6 @@ setup(
long_description=README,
install_requires=[
"oca>=4.10.0",
"python-etcd>=0.4.3",
"IPy>=0.83",
"dnslib>=0.9.6",
],