Added central backend changes and rpc plugin. Added write_database flag to mysqlbind agent.
Change-Id: I6097536958648128372a54facb0f73e0e53b3673
This commit is contained in:
parent
52c7dd4fb3
commit
ac596c2e0d
|
@ -26,5 +26,6 @@ cfg.CONF.register_opts([
|
|||
|
||||
|
||||
def get_backend(conf):
|
||||
LOG.debug("backend_driver: %s" % cfg.CONF.backend_driver)
|
||||
return Plugin.get_plugin(cfg.CONF.backend_driver, ns=__name__,
|
||||
conf=conf, invoke_on_load=True)
|
||||
|
|
|
@ -43,7 +43,12 @@ class MySQLBind9Backend(base.Backend):
|
|||
cfg.StrOpt('rndc-config-file',
|
||||
default=None, help='RNDC Config File'),
|
||||
cfg.StrOpt('rndc-key-file', default=None, help='RNDC Key File'),
|
||||
cfg.StrOpt('database-connection', default=None,
|
||||
cfg.StrOpt('dns-server-type', default='master',
|
||||
help='slave or master DNS server?'),
|
||||
cfg.BoolOpt('write-database', default=True,
|
||||
help='Write to the DNS mysqlbind database?'),
|
||||
cfg.StrOpt('database-connection',
|
||||
default=cfg.CONF.database_connection,
|
||||
help='SQL Connection'),
|
||||
cfg.StrOpt('database-dns-table',
|
||||
default='dns_domains',
|
||||
|
@ -67,9 +72,8 @@ class MySQLBind9Backend(base.Backend):
|
|||
def start(self):
|
||||
super(MySQLBind9Backend, self).start()
|
||||
|
||||
LOG.debug("DB_CONN %s" % cfg.CONF[self.name].database_connection)
|
||||
|
||||
self._db = SqlSoup(cfg.CONF[self.name].database_connection)
|
||||
if cfg.CONF[self.name].write_database:
|
||||
self._db = SqlSoup(cfg.CONF[self.name].database_connection)
|
||||
|
||||
self._sync_domains()
|
||||
|
||||
|
@ -230,33 +234,39 @@ class MySQLBind9Backend(base.Backend):
|
|||
def create_domain(self, context, domain):
|
||||
LOG.debug('create_domain()')
|
||||
|
||||
self._add_soa_record(domain)
|
||||
self._add_ns_records(domain)
|
||||
if cfg.CONF[self.name].write_database:
|
||||
self._add_soa_record(domain)
|
||||
self._add_ns_records(domain)
|
||||
|
||||
self._sync_domains()
|
||||
|
||||
def update_domain(self, context, domain):
|
||||
LOG.debug('update_domain()')
|
||||
self._update_soa_record(domain)
|
||||
self._update_ns_records(domain)
|
||||
if cfg.CONF[self.name].write_database:
|
||||
self._update_soa_record(domain)
|
||||
self._update_ns_records(domain)
|
||||
|
||||
def delete_domain(self, context, domain):
|
||||
LOG.debug('delete_domain()')
|
||||
self._delete_db_domain_records(domain['id'])
|
||||
if cfg.CONF[self.name].write_database:
|
||||
self._delete_db_domain_records(domain['id'])
|
||||
|
||||
self._sync_domains()
|
||||
|
||||
def create_record(self, context, domain, record):
|
||||
LOG.debug('create_record()')
|
||||
self._insert_db_record(domain['id'], record)
|
||||
if cfg.CONF[self.name].write_database:
|
||||
self._insert_db_record(domain['id'], record)
|
||||
|
||||
def update_record(self, context, domain, record):
|
||||
LOG.debug('update_record()')
|
||||
self._update_db_record(record)
|
||||
if cfg.CONF[self.name].write_database:
|
||||
self._update_db_record(record)
|
||||
|
||||
def delete_record(self, context, domain, record):
|
||||
LOG.debug('Delete Record')
|
||||
self._delete_db_record(record)
|
||||
if cfg.CONF[self.name].write_database:
|
||||
self._delete_db_record(record)
|
||||
|
||||
def _sync_domains(self):
|
||||
"""
|
||||
|
@ -292,6 +302,8 @@ class MySQLBind9Backend(base.Backend):
|
|||
output_path,
|
||||
domains=domains,
|
||||
state_path=abs_state_path,
|
||||
dns_server_type=cfg.CONF[self.name].
|
||||
dns_server_type,
|
||||
dns_db_schema=url['database'],
|
||||
dns_db_table=cfg.CONF[self.name].
|
||||
database_dns_table,
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
# Copyright 2012 Managed I.T.
|
||||
#
|
||||
# Author: Kiall Mac Innes <kiall@managedit.ie>
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
from moniker.backend import base
|
||||
from moniker.agent import api as agent_api
|
||||
|
||||
|
||||
class RPCBackend(base.Backend):
|
||||
def create_domain(self, *args, **kw):
|
||||
return agent_api.create_domain(*args, **kw)
|
||||
|
||||
def update_domain(self, *args, **kw):
|
||||
return agent_api.update_domain(*args, **kw)
|
||||
|
||||
def delete_domain(self, *args, **kw):
|
||||
return agent_api.delete_domain(*args, **kw)
|
||||
|
||||
def create_record(self, *args, **kw):
|
||||
return agent_api.create_record(*args, **kw)
|
||||
|
||||
def update_record(self, *args, **kw):
|
||||
return agent_api.update_record(*args, **kw)
|
||||
|
||||
def delete_record(self, *args, **kw):
|
||||
return agent_api.delete_record(*args, **kw)
|
|
@ -18,10 +18,10 @@ from moniker.openstack.common import log as logging
|
|||
from moniker.openstack.common import rpc
|
||||
from moniker.openstack.common.rpc import service as rpc_service
|
||||
from stevedore.named import NamedExtensionManager
|
||||
from moniker import policy
|
||||
from moniker import storage
|
||||
from moniker import utils
|
||||
from moniker import policy
|
||||
from moniker.agent import api as agent_api
|
||||
from moniker import backend
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
@ -35,9 +35,12 @@ cfg.CONF.register_opts([
|
|||
|
||||
class Service(rpc_service.Service):
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
self.backend = backend.get_backend(cfg.CONF)
|
||||
|
||||
kwargs.update(
|
||||
host=cfg.CONF.host,
|
||||
topic=cfg.CONF.central_topic
|
||||
topic=cfg.CONF.central_topic,
|
||||
)
|
||||
|
||||
policy.init_policy()
|
||||
|
@ -71,6 +74,7 @@ class Service(rpc_service.Service):
|
|||
return []
|
||||
|
||||
def start(self):
|
||||
self.backend.start()
|
||||
super(Service, self).start()
|
||||
|
||||
if self.handlers:
|
||||
|
@ -88,6 +92,7 @@ class Service(rpc_service.Service):
|
|||
pass
|
||||
|
||||
super(Service, self).stop()
|
||||
self.backend.stop()
|
||||
|
||||
def _setup_subscriptions(self):
|
||||
"""
|
||||
|
@ -187,7 +192,7 @@ class Service(rpc_service.Service):
|
|||
|
||||
domain = self.storage_conn.create_domain(context, values)
|
||||
|
||||
agent_api.create_domain(context, domain)
|
||||
self.backend.create_domain(context, domain)
|
||||
utils.notify(context, 'api', 'domain.create', domain)
|
||||
|
||||
return domain
|
||||
|
@ -219,7 +224,7 @@ class Service(rpc_service.Service):
|
|||
|
||||
domain = self.storage_conn.update_domain(context, domain_id, values)
|
||||
|
||||
agent_api.update_domain(context, domain)
|
||||
self.backend.update_domain(context, domain)
|
||||
utils.notify(context, 'api', 'domain.update', domain)
|
||||
|
||||
return domain
|
||||
|
@ -230,7 +235,7 @@ class Service(rpc_service.Service):
|
|||
target = {'domain_id': domain_id, 'tenant_id': domain['tenant_id']}
|
||||
policy.check('delete_domain', context, target)
|
||||
|
||||
agent_api.delete_domain(context, domain)
|
||||
self.backend.delete_domain(context, domain)
|
||||
utils.notify(context, 'api', 'domain.delete', domain)
|
||||
|
||||
return self.storage_conn.delete_domain(context, domain_id)
|
||||
|
@ -244,7 +249,7 @@ class Service(rpc_service.Service):
|
|||
|
||||
record = self.storage_conn.create_record(context, domain_id, values)
|
||||
|
||||
agent_api.create_record(context, domain, record)
|
||||
self.backend.create_record(context, domain, record)
|
||||
utils.notify(context, 'api', 'record.create', record)
|
||||
|
||||
return record
|
||||
|
@ -277,7 +282,7 @@ class Service(rpc_service.Service):
|
|||
|
||||
record = self.storage_conn.update_record(context, record_id, values)
|
||||
|
||||
agent_api.update_record(context, domain, record)
|
||||
self.backend.update_record(context, domain, record)
|
||||
utils.notify(context, 'api', 'record.update', record)
|
||||
|
||||
return record
|
||||
|
@ -294,7 +299,7 @@ class Service(rpc_service.Service):
|
|||
|
||||
record = self.storage_conn.get_record(context, record_id)
|
||||
|
||||
agent_api.delete_record(context, domain, record)
|
||||
self.backend.delete_record(context, domain, record)
|
||||
utils.notify(context, 'api', 'record.delete', record)
|
||||
|
||||
return self.storage_conn.delete_record(context, record_id)
|
||||
|
|
Loading…
Reference in New Issue