Skip to content

Commit

Permalink
Pool Manager Integration with Central
Browse files Browse the repository at this point in the history
Full integration of Pool Manager with Central (no longer using the proxy
backend driver.)

This patch fixes:

- Fix concurrent requests that cause lockup issue (bug #1392762)
- Fixed bug where creating a domain fails the first time in mdns
- Fixed bug where records in recordsets do not have the correct
  status/action/serial
- Changed 'ADD' to 'CREATE' for ACTION column
- Ported Fake backend to pools
- Removed transitional pool_manager_proxy backend

Change-Id: Icb40448f760ff2a573d08a04bb4dec1f550119bb
Closes-Bug: 1392762
  • Loading branch information
rjrjr authored and Kiall Mac Innes committed Dec 15, 2014
1 parent 6285bda commit 4e75f5b
Show file tree
Hide file tree
Showing 22 changed files with 699 additions and 581 deletions.
24 changes: 6 additions & 18 deletions contrib/devstack/lib/designate
Expand Up @@ -88,6 +88,8 @@ function configure_designate {
iniset $DESIGNATE_CONF DEFAULT state_path $DESIGNATE_STATE_PATH
iniset $DESIGNATE_CONF DEFAULT root-helper sudo designate-rootwrap $DESIGNATE_ROOTWRAP_CONF
iniset $DESIGNATE_CONF storage:sqlalchemy connection `database_connection_url designate`
iniset $DESIGNATE_CONF service:pool_manager pool_id $DESIGNATE_POOL_ID
iniset $DESIGNATE_CONF pool_manager_cache:sqlalchemy connection `database_connection_url designate_pool_manager`
iniset $DESIGNATE_CONF service:api enabled_extensions_v1 $DESIGNATE_ENABLED_EXTENSIONS_V1
iniset $DESIGNATE_CONF service:api enabled_extensions_v2 $DESIGNATE_ENABLED_EXTENSIONS_V2

Expand Down Expand Up @@ -119,17 +121,6 @@ function configure_designate {
configure_auth_token_middleware $DESIGNATE_CONF designate $DESIGNATE_AUTH_CACHE_DIR
fi

if is_service_enabled designate-agent; then
iniset $DESIGNATE_CONF service:central backend_driver rpc
iniset $DESIGNATE_CONF service:agent backend_driver $DESIGNATE_BACKEND_DRIVER
elif is_service_enabled designate-pool-manager; then
iniset $DESIGNATE_CONF service:central backend_driver pool_manager_proxy
iniset $DESIGNATE_CONF service:pool_manager pool_id $DESIGNATE_POOL_ID
iniset $DESIGNATE_CONF pool_manager_cache:sqlalchemy connection `database_connection_url designate_pool_manager`
else
iniset $DESIGNATE_CONF service:central backend_driver $DESIGNATE_BACKEND_DRIVER
fi

iniset $DESIGNATE_CONF service:api api_host $DESIGNATE_SERVICE_HOST
iniset $DESIGNATE_CONF service:api api_base_uri $DESIGNATE_SERVICE_PROTOCOL://$DESIGNATE_SERVICE_HOST:$DESIGNATE_SERVICE_PORT/
iniset $DESIGNATE_CONF service:api enable_api_v1 True
Expand Down Expand Up @@ -192,14 +183,11 @@ function init_designate {
# Init and migrate designate database
designate-manage database sync

if is_service_enabled designate-pool-manager; then
# (Re)create designate_pool_manager cache
recreate_database designate_pool_manager utf8

# (Re)create designate_pool_manager cache
recreate_database designate_pool_manager utf8

# Init and migrate designate pool-manager-cache
designate-manage pool-manager-cache sync
fi
# Init and migrate designate pool-manager-cache
designate-manage pool-manager-cache sync

init_designate_backend
}
Expand Down
4 changes: 2 additions & 2 deletions contrib/vagrant/localrc
Expand Up @@ -18,7 +18,7 @@ LOG_COLOR=True
ENABLED_SERVICES=rabbit,mysql,key

# Enable core Designate services
ENABLED_SERVICES+=,designate,designate-api,designate-central,designate-mdns
ENABLED_SERVICES+=,designate,designate-api,designate-central,designate-mdns,designate-pool-manager

# Optional Designate services
#ENABLED_SERVICES+=,designate-sink
Expand All @@ -33,7 +33,7 @@ ENABLED_SERVICES+=,designate,designate-api,designate-central,designate-mdns
# Optional Horizon Panels
#ENABLED_SERVICES+=,horizon

# Optional core OpenStack services (needed by horizon)
# Optional core OpenStack services (needed by horizon)
#ENABLED_SERVICES+=,g-api,g-reg,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,n-sch,n-novnc,n-xvnc,n-cauth

# Designate Options
Expand Down
15 changes: 3 additions & 12 deletions designate/backend/__init__.py
Expand Up @@ -14,30 +14,21 @@
# License for the specific language governing permissions and limitations
# under the License.
from designate.openstack.common import log as logging
from designate.backend.base import Backend
from designate.backend.base import PoolBackend

LOG = logging.getLogger(__name__)


def get_backend(backend_driver, central_service):
def get_backend(backend_driver, backend_options):
LOG.debug("Loading backend driver: %s" % backend_driver)

cls = Backend.get_driver(backend_driver)
cls = PoolBackend.get_driver(backend_driver)

return cls(central_service=central_service)
return cls(backend_options)


def get_server_object(backend_driver, server_id):
LOG.debug("Loading pool backend driver: %s" % backend_driver)

cls = PoolBackend.get_driver(backend_driver)
return cls.get_server_object(backend_driver, server_id)


def get_pool_backend(backend_driver, backend_options):
LOG.debug("Loading pool backend driver: %s" % backend_driver)

cls = PoolBackend.get_driver(backend_driver)

return cls(backend_options)
66 changes: 4 additions & 62 deletions designate/backend/impl_fake.py
@@ -1,6 +1,6 @@
# Copyright 2012 Managed I.T.
# Copyright 2014 eBay Inc.
#
# Author: Kiall Mac Innes <kiall@managedit.ie>
# Author: Ron Rickard <rrickard@ebay.com>
#
# 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
Expand All @@ -17,73 +17,15 @@
from designate.i18n import _LI
from designate.backend import base


LOG = logging.getLogger(__name__)


class FakeBackend(base.Backend):
class FakeBackend(base.PoolBackend):
__plugin_name__ = 'fake'

def __init__(self, *args, **kwargs):
super(FakeBackend, self).__init__(*args, **kwargs)

def create_tsigkey(self, context, tsigkey):
LOG.info(_LI('Create TSIG Key %r') % tsigkey)

def update_tsigkey(self, context, tsigkey):
LOG.info(_LI('Update TSIG Key %r') % tsigkey)

def delete_tsigkey(self, context, tsigkey):
LOG.info(_LI('Delete TSIG Key %r') % tsigkey)

def create_server(self, context, server):
LOG.info(_LI('Create Server %r') % server)

def update_server(self, context, server):
LOG.info(_LI('Update Server %r') % server)

def delete_server(self, context, server):
LOG.info(_LI('Delete Server %r') % server)

def create_domain(self, context, domain):
LOG.info(_LI('Create Domain %r') % domain)

def update_domain(self, context, domain):
LOG.info(_LI('Update Domain %r') % domain)

def delete_domain(self, context, domain):
LOG.info(_LI('Delete Domain %r') % domain)

def create_recordset(self, context, domain, recordset):
LOG.info(_LI('Create RecordSet %(domain)r / %(recordset)r') %
{'domain': domain, 'recordset': recordset})

def update_recordset(self, context, domain, recordset):
LOG.info(_LI('Update RecordSet %(domain)r / %(recordset)r') %
{'domain': domain, 'recordset': recordset})

def delete_recordset(self, context, domain, recordset):
LOG.info(_LI('Delete RecordSet %(domain)r / %(recordset)r') %
{'domain': domain, 'recordset': recordset})

def create_record(self, context, domain, recordset, record):
LOG.info(_LI('Create Record %(domain)r / %(recordset)r / %(record)r') %
{'domain': domain, 'recordset': recordset, 'record': record})

def update_record(self, context, domain, recordset, record):
LOG.info(_LI('Update Record %(domain)r / %(recordset)r / %(record)r') %
{'domain': domain, 'recordset': recordset, 'record': record})

def delete_record(self, context, domain, recordset, record):
LOG.info(_LI('Delete Record %(domain)r / %(recordset)r / %(record)r') %
{'domain': domain, 'recordset': recordset, 'record': record})

def sync_domain(self, context, domain, records):
LOG.info(_LI('Sync Domain %(domain)r / %(records)r') %
{'domain': domain, 'records': records})

def sync_record(self, context, domain, record):
LOG.info(_LI('Sync Record %(domain)r / %(record)r') %
{'domain': domain, 'record': record})

def ping(self, context):
LOG.info(_LI('Ping'))
99 changes: 0 additions & 99 deletions designate/backend/impl_pool_manager_proxy.py

This file was deleted.

2 changes: 0 additions & 2 deletions designate/central/__init__.py
Expand Up @@ -22,8 +22,6 @@
cfg.CONF.register_opts([
cfg.IntOpt('workers', default=None,
help='Number of worker processes to spawn'),
cfg.StrOpt('backend-driver', default='fake',
help='The backend driver to use'),
cfg.StrOpt('storage-driver', default='sqlalchemy',
help='The storage driver to use'),
cfg.ListOpt('enabled-notification-handlers', default=[],
Expand Down

0 comments on commit 4e75f5b

Please sign in to comment.