Finalized centralization of configuration

This patch removes get_cfg_opts from the plugin class,
and moves all configuration directly into designate.conf.

There are no changes in the generated configuration due
to this patch.

Finally, this complets the blueprint to centralize all
configuration, and is a follow up to this patch
I3be68bf294157631a9bac128df0841220020de96

blueprint centralize-config-designate

Change-Id: I007fc004fc533950c5eda3974f41f05c6db5b43f
This commit is contained in:
Erik Olof Gunnar Andersson
2019-06-13 23:31:20 -07:00
parent 14bf795a9d
commit 097ffec548
16 changed files with 120 additions and 293 deletions
@@ -22,7 +22,6 @@ from oslo_concurrency import lockutils
from oslo_config import cfg
from oslo_log import log as logging
import designate.conf
from designate.backend.agent_backend import base
from designate import exceptions
from designate import utils
@@ -35,11 +34,6 @@ class Bind9Backend(base.AgentBackend):
__plugin_name__ = 'bind9'
__backend_status__ = 'untested'
@classmethod
def get_cfg_opts(cls):
return [(designate.conf.bind9.BIND9_GROUP,
designate.conf.bind9.BINS9_OPTS)]
def start(self):
LOG.info("Started bind9 backend")
@@ -23,7 +23,6 @@ from oslo_config import cfg
from oslo_concurrency import lockutils
from oslo_log import log as logging
import designate.conf
from designate.backend.agent_backend import base
from designate import exceptions
from designate import utils
@@ -97,11 +96,6 @@ class DenominatorBackend(base.AgentBackend):
self.denominator = Denominator(
cfg.CONF[CFG_GROUP_NAME])
@classmethod
def get_cfg_opts(cls):
return [(designate.conf.denominator.DENOMINATOR_GROUP,
designate.conf.denominator.DENOMINATOR_OPTS)]
def start(self):
LOG.info("Started Denominator backend")
@@ -52,7 +52,6 @@ from oslo_concurrency.processutils import ProcessExecutionError
from oslo_config import cfg
from oslo_log import log as logging
import designate.conf
from designate import exceptions
from designate import utils
from designate.backend.agent_backend import base
@@ -93,11 +92,6 @@ class DjbdnsBackend(base.AgentBackend):
__plugin_name__ = 'djbdns'
__backend_status__ = 'experimental'
@classmethod
def get_cfg_opts(cls):
return [(designate.conf.djbdns.DJBDNS_GROUP,
designate.conf.djbdns.DJDNS_OPTS)]
def __init__(self, *a, **kw):
"""Configure the backend"""
super(DjbdnsBackend, self).__init__(*a, **kw)
@@ -50,7 +50,6 @@ from oslo_concurrency.processutils import ProcessExecutionError
from oslo_config import cfg
from oslo_log import log as logging
import designate.conf
from designate import utils
from designate import exceptions
from designate.backend.agent_backend import base
@@ -83,11 +82,6 @@ class GdnsdBackend(base.AgentBackend):
__plugin_name__ = 'gdnsd'
__backend_status__ = 'experimental'
@classmethod
def get_cfg_opts(cls):
return [(designate.conf.gdnsd.GDNSD_GROUP,
designate.conf.gdnsd.GDNSD_OPTS)]
def __init__(self, *a, **kw):
"""Configure the backend"""
super(GdnsdBackend, self).__init__(*a, **kw)
@@ -44,7 +44,6 @@ from oslo_concurrency.processutils import ProcessExecutionError
from oslo_config import cfg
from oslo_log import log as logging
import designate.conf
from designate import exceptions
from designate.backend.agent_backend import base
from designate.utils import execute
@@ -64,11 +63,6 @@ class Knot2Backend(base.AgentBackend):
__backend_status__ = 'untested'
_lock_name = 'knot2.lock'
@classmethod
def get_cfg_opts(cls):
return [(designate.conf.knot2.KNOT2_GROUP,
designate.conf.knot2.KNOT2_OPTS)]
def __init__(self, *a, **kw):
"""Configure the backend"""
super(Knot2Backend, self).__init__(*a, **kw)
@@ -22,7 +22,6 @@ from os_win import utilsfactory
from os_win import constants
from os_win import exceptions as os_win_exc
import designate.conf
from designate.backend.agent_backend import base
from designate import exceptions
@@ -48,11 +47,6 @@ class MSDNSBackend(base.AgentBackend):
LOG.info("AXFR masters: %r", self._masters)
@classmethod
def get_cfg_opts(cls):
return [(designate.conf.msdns.MSDNS_GROUP,
designate.conf.msdns.MSDNS_OPTS)]
def start(self):
"""Start the backend"""
LOG.info("Started msdns backend")
-6
View File
@@ -17,7 +17,6 @@ from oslo_log import log as logging
from oslo_config import cfg
from oslo_utils import importutils
import designate.conf
from designate import exceptions
from designate import utils
from designate.backend import base
@@ -236,11 +235,6 @@ class AkamaiBackend(base.Backend):
__backend_status__ = 'untested'
@classmethod
def get_cfg_opts(cls):
return [(designate.conf.akamai.AKAMAI_GROUP,
designate.conf.akamai.AKAMAI_OPTS)]
def __init__(self, target):
super(AkamaiBackend, self).__init__(target)
-6
View File
@@ -22,7 +22,6 @@ from oslo_serialization import jsonutils
import requests
from requests.adapters import HTTPAdapter
import designate.conf
from designate import exceptions
from designate import utils
from designate.backend import base
@@ -303,11 +302,6 @@ class DynECTBackend(base.Backend):
__backend_status__ = 'untested'
@classmethod
def get_cfg_opts(cls):
return [(designate.conf.dynect.DYNECT_GROUP,
designate.conf.dynect.DYNECT_OPTS)]
def __init__(self, target):
super(DynECTBackend, self).__init__(target)
@@ -13,12 +13,10 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import copy
import threading
import six
from oslo_config import cfg
from oslo_db import options
from oslo_db.exception import DBDuplicateEntry
from oslo_log import log as logging
from oslo_utils import excutils
@@ -42,17 +40,6 @@ class PowerDNSBackend(base.Backend):
__backend_status__ = 'deprecated'
@classmethod
def get_cfg_opts(cls):
group = cfg.OptGroup(CFG_GROUP_NAME)
opts = copy.deepcopy(options.database_opts)
# Strip connection options
discard_opts = ('sqlite_db', 'connection', 'slave_connection')
opts = [opt for opt in opts if opt.name not in discard_opts]
return [(group, opts,)]
def __init__(self, target):
super(PowerDNSBackend, self).__init__(target)
+89 -41
View File
@@ -15,15 +15,39 @@
# under the License.
from oslo_config import cfg
from designate.producer import tasks
PRODUCER_GROUP = cfg.OptGroup(
name='service:producer',
title="Configuration for Producer Service"
title='Configuration for Producer Service'
)
ZONE_MANAGER_GROUP = cfg.OptGroup(
name='service:zone_manager', title="Configuration for Zone Manager Service"
name='service:zone_manager',
title='Configuration for Zone Manager Service'
)
PRODUCER_TASK_DELAYED_NOTIFY_GROUP = cfg.OptGroup(
name='producer_task:delayed_notify',
title='Configuration for Producer Task: Delayed Notify'
)
PRODUCER_TASK_PERIODIC_EXISTS_GROUP = cfg.OptGroup(
name='producer_task:periodic_exists',
title='Configuration for Producer Task: Periodic Exists'
)
PRODUCER_TASK_PERIODIC_SECONDARY_REFRESH_GROUP = cfg.OptGroup(
name='producer_task:periodic_secondary_refresh',
title='Configuration for Producer Task: Periodic Secondary Refresh'
)
PRODUCER_TASK_WORKER_PERIODIC_RECOVERY_GROUP = cfg.OptGroup(
name='producer_task:worker_periodic_recovery',
title='Configuration for Producer Task: Worker Periodic Recovery'
)
PRODUCER_TASK_ZONE_PURGE_GROUP = cfg.OptGroup(
name='producer_task:zone_purge',
title='Configuration for Producer Task: Zone Purge'
)
PRODUCER_OPTS = [
@@ -66,32 +90,47 @@ ZONE_MANAGER_OPTS = [
deprecated_reason='Migrated to designate-worker'),
]
# NOTE(trungnv): Get [producer_task:zone_purge] config
zone_purge_opts = tasks.DeletedZonePurgeTask.get_cfg_opts()[0][1]
zone_purge_old_group = tasks.DeletedZonePurgeTask.get_cfg_opts()[0][0].name
zone_purge_group = cfg.OptGroup(zone_purge_old_group)
PRODUCER_TASK_DELAYED_NOTIFY_OPTS = [
cfg.IntOpt('interval', default=5,
help='Run interval in seconds'),
cfg.IntOpt('per_page', default=100,
help='Default amount of results returned per page'),
cfg.IntOpt('batch_size', default=100,
help='How many zones to receive NOTIFY on each run'),
]
# NOTE(trungnv): Get [producer_task:periodic_exists] config
periodic_exists_opts = tasks.PeriodicExistsTask.get_cfg_opts()[0][1]
periodic_exists_old_group = tasks.PeriodicExistsTask.get_cfg_opts()[0][0].name
periodic_exists_group = cfg.OptGroup(periodic_exists_old_group)
PRODUCER_TASK_PERIODIC_EXISTS_OPTS = [
cfg.IntOpt('interval', default=3600,
help='Run interval in seconds'),
cfg.IntOpt('per_page', default=100,
help='Default amount of results returned per page'),
]
# NOTE(trungnv): Get [producer_task:periodic_secondary_refresh] config
psr_opts = tasks.PeriodicSecondaryRefreshTask.get_cfg_opts()[0][1]
psr_old_group = tasks.PeriodicSecondaryRefreshTask.get_cfg_opts()[0][0].name
psr_group = cfg.OptGroup(psr_old_group)
PRODUCER_TASK_PERIODIC_SECONDARY_REFRESH_OPTS = [
cfg.IntOpt('interval', default=3600,
help='Run interval in seconds'),
cfg.IntOpt('per_page', default=100,
help='Default amount of results returned per page'),
]
# NOTE(trungnv): Get [producer_task:delayed_notify] config
delayed_notify_opts = \
tasks.PeriodicGenerateDelayedNotifyTask.get_cfg_opts()[0][1]
delayed_notify_old_group = \
tasks.PeriodicGenerateDelayedNotifyTask.get_cfg_opts()[0][0].name
delayed_notify_group = cfg.OptGroup(delayed_notify_old_group)
PRODUCER_TASK_WORKER_PERIODIC_RECOVERY_OPTS = [
cfg.IntOpt('interval', default=120,
help='Run interval in seconds'),
cfg.IntOpt('per_page', default=100,
help='Default amount of results returned per page'),
]
# NOTE(trungnv): Get [producer_task:worker_periodic_recovery] config
wpr_opts = tasks.WorkerPeriodicRecovery.get_cfg_opts()[0][1]
wpr_old_group = tasks.WorkerPeriodicRecovery.get_cfg_opts()[0][0].name
wpr_group = cfg.OptGroup(wpr_old_group)
PRODUCER_TASK_ZONE_PURGE_OPTS = [
cfg.IntOpt('interval', default=3600,
help='Run interval in seconds'),
cfg.IntOpt('per_page', default=100,
help='Default amount of results returned per page'),
cfg.IntOpt('time_threshold', default=604800,
help='How old deleted zones should be (deleted_at) to be '
'purged, in seconds'),
cfg.IntOpt('batch_size', default=100,
help='How many zones to be purged on each run'),
]
def register_opts(conf):
@@ -99,25 +138,34 @@ def register_opts(conf):
conf.register_opts(PRODUCER_OPTS, group=PRODUCER_GROUP)
conf.register_group(ZONE_MANAGER_GROUP)
conf.register_opts(ZONE_MANAGER_OPTS, group=ZONE_MANAGER_GROUP)
conf.register_group(zone_purge_group)
conf.register_opts(zone_purge_opts, group=zone_purge_group)
conf.register_group(periodic_exists_group)
conf.register_opts(periodic_exists_opts, group=periodic_exists_group)
conf.register_group(psr_group)
conf.register_opts(psr_opts, group=psr_group)
conf.register_group(delayed_notify_group)
conf.register_opts(delayed_notify_opts, group=delayed_notify_group)
conf.register_group(wpr_group)
conf.register_opts(wpr_opts, group=wpr_group)
conf.register_group(PRODUCER_TASK_DELAYED_NOTIFY_GROUP)
conf.register_opts(PRODUCER_TASK_DELAYED_NOTIFY_OPTS,
group=PRODUCER_TASK_DELAYED_NOTIFY_GROUP)
conf.register_group(PRODUCER_TASK_PERIODIC_EXISTS_GROUP)
conf.register_opts(PRODUCER_TASK_PERIODIC_EXISTS_OPTS,
group=PRODUCER_TASK_PERIODIC_EXISTS_GROUP)
conf.register_group(PRODUCER_TASK_PERIODIC_SECONDARY_REFRESH_GROUP)
conf.register_opts(PRODUCER_TASK_PERIODIC_SECONDARY_REFRESH_OPTS,
group=PRODUCER_TASK_PERIODIC_SECONDARY_REFRESH_GROUP)
conf.register_group(PRODUCER_TASK_WORKER_PERIODIC_RECOVERY_GROUP)
conf.register_opts(PRODUCER_TASK_WORKER_PERIODIC_RECOVERY_OPTS,
group=PRODUCER_TASK_WORKER_PERIODIC_RECOVERY_GROUP)
conf.register_group(PRODUCER_TASK_ZONE_PURGE_GROUP)
conf.register_opts(PRODUCER_TASK_ZONE_PURGE_OPTS,
group=PRODUCER_TASK_ZONE_PURGE_GROUP)
def list_opts():
return {
PRODUCER_GROUP: PRODUCER_OPTS,
ZONE_MANAGER_GROUP: ZONE_MANAGER_OPTS,
zone_purge_group: zone_purge_opts,
periodic_exists_group: periodic_exists_opts,
psr_group: psr_opts,
delayed_notify_group: delayed_notify_opts,
wpr_group: wpr_opts,
PRODUCER_TASK_DELAYED_NOTIFY_GROUP:
PRODUCER_TASK_DELAYED_NOTIFY_OPTS,
PRODUCER_TASK_PERIODIC_EXISTS_GROUP:
PRODUCER_TASK_PERIODIC_EXISTS_OPTS,
PRODUCER_TASK_PERIODIC_SECONDARY_REFRESH_GROUP:
PRODUCER_TASK_PERIODIC_SECONDARY_REFRESH_OPTS,
PRODUCER_TASK_WORKER_PERIODIC_RECOVERY_GROUP:
PRODUCER_TASK_WORKER_PERIODIC_RECOVERY_OPTS,
PRODUCER_TASK_ZONE_PURGE_GROUP: PRODUCER_TASK_ZONE_PURGE_OPTS,
}
-2
View File
@@ -21,7 +21,6 @@ from oslo_db.sqlalchemy.migration_cli import manager as migration_manager
from designate.manage import base
from designate import rpc
from designate import utils
from designate.central import rpcapi as central_rpcapi
@@ -29,7 +28,6 @@ REPOSITORY = os.path.abspath(os.path.join(os.path.dirname(__file__), '..',
'backend', 'impl_powerdns',
'migrate_repo'))
CONF = cfg.CONF
utils.register_plugin_opts()
def get_manager(pool_target):
-45
View File
@@ -18,7 +18,6 @@ import abc
import six
from stevedore import driver
from stevedore import enabled
from stevedore import extension
from oslo_config import cfg
from oslo_log import log as logging
@@ -55,50 +54,6 @@ class Plugin(object):
def get_plugin_type(cls):
return cls.__plugin_type__
@classmethod
def get_cfg_opts(cls):
"""Get any static configuration options
Returns an array of tuples in the form:
[(group1, [Option1, Option2]), (group2, [Option1, Option2])]
"""
return []
@classmethod
def get_extra_cfg_opts(cls):
"""Get any dynamically built configuration options
Returns an array of tuples in the form:
[(group1, [Option1, Option2]), (group2, [Option1, Option2])]
"""
return []
@classmethod
def register_cfg_opts(cls, namespace):
mgr = extension.ExtensionManager(namespace)
for e in mgr:
for group, opts in e.plugin.get_cfg_opts():
if isinstance(group, six.string_types):
group = cfg.OptGroup(name=group)
CONF.register_group(group)
CONF.register_opts(opts, group=group)
@classmethod
def register_extra_cfg_opts(cls, namespace):
mgr = extension.ExtensionManager(namespace)
for e in mgr:
for group, opts in e.plugin.get_extra_cfg_opts():
if isinstance(group, six.string_types):
group = cfg.OptGroup(name=group)
CONF.register_group(group)
CONF.register_opts(opts, group=group)
class DriverPlugin(Plugin):
"""
+9 -88
View File
@@ -27,6 +27,7 @@ from oslo_log import log as logging
from oslo_utils import timeutils
LOG = logging.getLogger(__name__)
CONF = cfg.CONF
class PeriodicTask(plugin.ExtensionPlugin):
@@ -34,24 +35,10 @@ class PeriodicTask(plugin.ExtensionPlugin):
"""
__plugin_ns__ = 'designate.producer_tasks'
__plugin_type__ = 'producer_task'
__interval__ = None
def __init__(self):
super(PeriodicTask, self).__init__()
self.my_partitions = None
self.options = cfg.CONF[self.get_canonical_name()]
@classmethod
def get_base_opts(cls):
options = [
cfg.IntOpt(
'interval',
default=cls.__interval__,
help='Run interval in seconds'
),
cfg.IntOpt('per_page', default=100,
help='Default amount of results returned per page'),
]
return options
@property
def central_api(self):
@@ -69,7 +56,7 @@ class PeriodicTask(plugin.ExtensionPlugin):
def zone_api(self):
# TODO(timsim): Remove this when pool_manager_api is gone
if cfg.CONF['service:worker'].enabled:
return self.worker_api
return self.worker_api
return self.pool_manager_api
def on_partition_change(self, my_partitions, members, event):
@@ -88,7 +75,7 @@ class PeriodicTask(plugin.ExtensionPlugin):
return {col: "BETWEEN %s,%s" % self._my_range()}
def _iter(self, method, *args, **kwargs):
kwargs.setdefault("limit", self.options.per_page)
kwargs.setdefault("limit", CONF[self.name].per_page)
while True:
items = method(*args, **kwargs)
@@ -112,31 +99,11 @@ class DeletedZonePurgeTask(PeriodicTask):
Deleted zones have values in the deleted_at column.
Purging means removing them from the database entirely.
"""
__plugin_name__ = 'zone_purge'
__interval__ = 3600
def __init__(self):
super(DeletedZonePurgeTask, self).__init__()
@classmethod
def get_cfg_opts(cls):
group = cfg.OptGroup(cls.get_canonical_name())
options = cls.get_base_opts() + [
cfg.IntOpt(
'time_threshold',
default=604800,
help="How old deleted zones should be (deleted_at) to be "
"purged, in seconds"
),
cfg.IntOpt(
'batch_size',
default=100,
help='How many zones to be purged on each run'
),
]
return [(group, options)]
def __call__(self):
"""Call the Central API to perform a purge of deleted zones based on
expiration time and sharding range.
@@ -149,7 +116,7 @@ class DeletedZonePurgeTask(PeriodicTask):
"end": pend
})
delta = datetime.timedelta(seconds=self.options.time_threshold)
delta = datetime.timedelta(seconds=CONF[self.name].time_threshold)
time_threshold = timeutils.utcnow() - delta
LOG.debug("Filtering deleted zones before %s", time_threshold)
@@ -163,24 +130,17 @@ class DeletedZonePurgeTask(PeriodicTask):
self.central_api.purge_zones(
ctxt,
criterion,
limit=self.options.batch_size,
limit=CONF[self.name].batch_size,
)
class PeriodicExistsTask(PeriodicTask):
__plugin_name__ = 'periodic_exists'
__interval__ = 3600
def __init__(self):
super(PeriodicExistsTask, self).__init__()
self.notifier = rpc.get_notifier('producer')
@classmethod
def get_cfg_opts(cls):
group = cfg.OptGroup(cls.get_canonical_name())
options = cls.get_base_opts()
return [(group, options)]
@staticmethod
def _get_period(seconds):
interval = datetime.timedelta(seconds=seconds)
@@ -200,7 +160,7 @@ class PeriodicExistsTask(PeriodicTask):
ctxt = context.DesignateContext.get_admin_context()
ctxt.all_tenants = True
start, end = self._get_period(self.options.interval)
start, end = self._get_period(CONF[self.name].interval)
extra_data = {
"audit_period_beginning": start,
@@ -230,13 +190,6 @@ class PeriodicExistsTask(PeriodicTask):
class PeriodicSecondaryRefreshTask(PeriodicTask):
__plugin_name__ = 'periodic_secondary_refresh'
__interval__ = 3600
@classmethod
def get_cfg_opts(cls):
group = cfg.OptGroup(cls.get_canonical_name())
options = cls.get_base_opts()
return [(group, options)]
def __call__(self):
pstart, pend = self._my_range()
@@ -275,30 +228,11 @@ class PeriodicGenerateDelayedNotifyTask(PeriodicTask):
"""Generate delayed NOTIFY transactions
Scan the database for zones with the delayed_notify flag set.
"""
__plugin_name__ = 'delayed_notify'
__interval__ = 5
def __init__(self):
super(PeriodicGenerateDelayedNotifyTask, self).__init__()
@classmethod
def get_cfg_opts(cls):
group = cfg.OptGroup(cls.get_canonical_name())
options = cls.get_base_opts() + [
cfg.IntOpt(
'interval',
default=cls.__interval__,
help='Run interval in seconds'
),
cfg.IntOpt(
'batch_size',
default=100,
help='How many zones to receive NOTIFY on each run'
),
]
return [(group, options)]
def __call__(self):
"""Fetch a list of zones with the delayed_notify flag set up to
"batch_size"
@@ -318,7 +252,7 @@ class PeriodicGenerateDelayedNotifyTask(PeriodicTask):
zones = self.central_api.find_zones(
ctxt,
criterion,
limit=self.options.batch_size,
limit=CONF[self.name].batch_size,
sort_key='updated_at',
sort_dir='asc',
)
@@ -339,24 +273,11 @@ class PeriodicGenerateDelayedNotifyTask(PeriodicTask):
class WorkerPeriodicRecovery(PeriodicTask):
__plugin_name__ = 'worker_periodic_recovery'
__interval__ = 120
@classmethod
def get_cfg_opts(cls):
group = cfg.OptGroup(cls.get_canonical_name())
options = cls.get_base_opts() + [
cfg.IntOpt(
'interval',
default=cls.__interval__,
help='Run interval in seconds'
),
]
return [(group, options)]
def __call__(self):
# TODO(timsim): Remove this when worker is always on
if not cfg.CONF['service:worker'].enabled:
return
return
pstart, pend = self._my_range()
LOG.info(
-1
View File
@@ -384,7 +384,6 @@ class TestCase(base.BaseTestCase):
# "Read" Configuration
self.CONF([], project='designate')
utils.register_plugin_opts()
self.useFixture(fixtures.PolicyFixture())
self.network_api = fixtures.NetworkAPIFixture()
+22 -36
View File
@@ -22,6 +22,8 @@ import datetime
import fixtures
import mock
import oslotest.base
from oslo_config import cfg
from oslo_config import fixture as cfg_fixture
from oslo_utils import timeutils
from designate import context
@@ -31,34 +33,29 @@ from designate.producer import tasks
from designate.tests.unit import RoObject
from designate.utils import generate_uuid
DUMMY_TASK_GROUP = cfg.OptGroup(
name='producer_task:dummy',
title='Configuration for Producer Task: Dummy Task'
)
DUMMY_TASK_OPTS = [
cfg.IntOpt('per_page', default=100,
help='Default amount of results returned per page'),
]
CONF = cfg.CONF
CONF.register_group(DUMMY_TASK_GROUP)
CONF.register_opts(DUMMY_TASK_OPTS, group=DUMMY_TASK_GROUP)
class DummyTask(tasks.PeriodicTask):
"""Dummy task used to test helper functions"""
__plugin_name__ = 'dummy'
class TaskTest(oslotest.base.BaseTestCase):
def setup_opts(self, config):
opts = RoObject(**config)
self.opts = opts
self.opts_patcher = mock.patch('oslo_config.cfg.CONF')
self.addCleanup(self.opts_patcher.stop)
self.opts_mock = self.opts_patcher.start()
self.opts_mock.__getitem__.side_effect = lambda n: opts[n]
class PeriodicTest(TaskTest):
class PeriodicTest(oslotest.base.BaseTestCase):
def setUp(self):
super(PeriodicTest, self).setUp()
opts = {
"producer_task:dummy": RoObject({
"per_page": 100,
})
}
self.setup_opts(opts)
self.useFixture(cfg_fixture.Config(CONF))
self.task = DummyTask()
self.task.my_partitions = range(0, 10)
@@ -111,17 +108,12 @@ class PeriodicTest(TaskTest):
self.assertEqual((0, 9), self.task._my_range())
class PeriodicExistsTest(TaskTest):
class PeriodicExistsTest(oslotest.base.BaseTestCase):
def setUp(self):
super(PeriodicExistsTest, self).setUp()
self.useFixture(cfg_fixture.Config(CONF))
opts = {
"producer_task:periodic_exists": RoObject({
"per_page": 100,
"interval": 5
})
}
self.setup_opts(opts)
CONF.set_override('interval', 5, 'producer_task:periodic_exists')
# Mock a ctxt...
self.ctxt = mock.Mock()
@@ -196,16 +188,10 @@ class PeriodicExistsTest(TaskTest):
self.ctxt, "dns.zone.exists", data)
class PeriodicSecondaryRefreshTest(TaskTest):
class PeriodicSecondaryRefreshTest(oslotest.base.BaseTestCase):
def setUp(self):
super(PeriodicSecondaryRefreshTest, self).setUp()
opts = {
"producer_task:periodic_secondary_refresh": RoObject({
"per_page": 100
})
}
self.setup_opts(opts)
self.useFixture(cfg_fixture.Config(CONF))
# Mock a ctxt...
self.ctxt = mock.Mock()
-19
View File
@@ -82,30 +82,11 @@ def read_config(prog, argv):
default_config_files=config_files)
config.set_defaults()
register_plugin_opts()
# Avoid circular dependency imports
from designate import pool_manager
pool_manager.register_dynamic_pool_options()
def register_plugin_opts():
# Avoid circular dependency imports
from designate import plugin
# Register Producer Tasks
plugin.Plugin.register_cfg_opts('designate.producer_tasks')
plugin.Plugin.register_extra_cfg_opts('designate.producer_tasks')
# Register Backend Plugin Config Options
plugin.Plugin.register_cfg_opts('designate.backend')
plugin.Plugin.register_extra_cfg_opts('designate.backend')
# Register Agent Backend Plugin Config Options
plugin.Plugin.register_cfg_opts('designate.backend.agent_backend')
plugin.Plugin.register_extra_cfg_opts('designate.backend.agent_backend')
def resource_string(*args):
if len(args) == 0:
raise ValueError()