Ensure ZoneManager emits valid objects
Zone Manager exists events have been sending Designate obj representiations rather than plain dicts. Additionally, the audit period values were not in the correct format due to an explicit datetime -> str cast vs allowing the serializer to handle the conversion. Additionally, remove duplicated RoObject class and implement the to_dict() method. Change-Id: I6892433b5c112563901dbac2b477bf3d9e56217b Closes-Bug: 1545658
This commit is contained in:
parent
2297a97c15
commit
0022fd85b6
@ -52,3 +52,6 @@ class RoObject(object):
|
||||
def __iter__(self):
|
||||
for k in six.iterkeys(self.__dict__):
|
||||
yield k, self.__dict__[k]
|
||||
|
||||
def to_dict(self):
|
||||
return self.__dict__
|
||||
|
@ -24,46 +24,13 @@ from oslo_utils import timeutils
|
||||
from oslotest import base as test
|
||||
import fixtures
|
||||
import mock
|
||||
import six
|
||||
import testtools
|
||||
|
||||
from designate.central import rpcapi as central_api
|
||||
from designate import context
|
||||
from designate import rpc
|
||||
from designate.zone_manager import tasks
|
||||
|
||||
|
||||
class RoObject(object):
|
||||
"""Read-only object: raise exception on unexpected
|
||||
__setitem__ or __setattr__
|
||||
"""
|
||||
def __init__(self, d=None, **kw):
|
||||
if d:
|
||||
kw.update(d)
|
||||
|
||||
self.__dict__.update(kw)
|
||||
|
||||
def __getitem__(self, k):
|
||||
try:
|
||||
return self.__dict__[k]
|
||||
except KeyError:
|
||||
raise NotImplementedError(
|
||||
"Attempt to perform __getitem__"
|
||||
" %r on RoObject %r" % (k, self.__dict__)
|
||||
)
|
||||
|
||||
def __setitem__(self, k, v):
|
||||
raise NotImplementedError(
|
||||
"Attempt to perform __setitem__ or __setattr__"
|
||||
" %r on RoObject %r" % (k, self.__dict__)
|
||||
)
|
||||
|
||||
def __setattr__(self, k, v):
|
||||
self.__setitem__(k, v)
|
||||
|
||||
def __iter__(self):
|
||||
for k in six.iterkeys(self.__dict__):
|
||||
yield k, self.__dict__[k]
|
||||
from designate.tests.unit import RoObject
|
||||
|
||||
|
||||
class DummyTask(tasks.PeriodicTask):
|
||||
@ -179,8 +146,8 @@ class PeriodicExistsTest(TaskTest):
|
||||
# correct below
|
||||
self.period = tasks.PeriodicExistsTask._get_period(2)
|
||||
self.period_data = {
|
||||
"audit_period_beginning": str(self.period[0]),
|
||||
"audit_period_ending": str(self.period[1])
|
||||
"audit_period_beginning": self.period[0],
|
||||
"audit_period_ending": self.period[1]
|
||||
}
|
||||
self.useFixture(fixtures.MockPatchObject(
|
||||
tasks.PeriodicExistsTask, '_get_period',
|
||||
|
@ -168,7 +168,8 @@ class PeriodicExistsTask(PeriodicTask):
|
||||
|
||||
def __call__(self):
|
||||
pstart, pend = self._my_range()
|
||||
msg = _LI("Emitting zone exist events for %(start)s to %(end)s")
|
||||
|
||||
msg = _LI("Emitting zone exist events for shards %(start)s to %(end)s")
|
||||
LOG.info(msg, {"start": pstart, "end": pend})
|
||||
|
||||
ctxt = context.DesignateContext.get_admin_context()
|
||||
@ -176,17 +177,24 @@ class PeriodicExistsTask(PeriodicTask):
|
||||
|
||||
start, end = self._get_period(self.options.interval)
|
||||
|
||||
data = {
|
||||
"audit_period_beginning": str(start),
|
||||
"audit_period_ending": str(end)
|
||||
extra_data = {
|
||||
"audit_period_beginning": start,
|
||||
"audit_period_ending": end
|
||||
}
|
||||
|
||||
counter = 0
|
||||
|
||||
for zone in self._iter_zones(ctxt):
|
||||
zone_data = dict(zone)
|
||||
zone_data.update(data)
|
||||
counter += 1
|
||||
|
||||
zone_data = zone.to_dict()
|
||||
zone_data.update(extra_data)
|
||||
|
||||
self.notifier.info(ctxt, 'dns.domain.exists', zone_data)
|
||||
|
||||
LOG.info(_LI("Finished emitting events."))
|
||||
LOG.info(_LI("Finished emitting %(counter)d events for shards "
|
||||
"%(start)s to %(end)s"),
|
||||
{"start": pstart, "end": pend, "counter": counter})
|
||||
|
||||
|
||||
class PeriodicSecondaryRefreshTask(PeriodicTask):
|
||||
|
Loading…
Reference in New Issue
Block a user