def test_generate_delayed_notify_zones(self): # Create zones and set some of them as pending update. self.generate_delayed_notify_task_fixture.task() self.config(quota_zones=1000) self.config(interval=1, batch_size=5, group="zone_manager_task:delayed_notify") self._create_zones() zones = self._fetch_zones(tables.zones.select().where( tables.zones.c.delayed_notify == True)) # nopep8 self.assertEqual(10, len(zones)) # Run the task and check if it reset the delayed_notify flag with fx_pool_manager: pm_api = PoolManagerAPI.get_instance() pm_api.update_zone.reset_mock() self.generate_delayed_notify_task_fixture.task() self.assertEqual(10, pm_api.update_zone.call_count) zones = self._fetch_zones(tables.zones.select().where( tables.zones.c.delayed_notify == True)) # nopep8 self.assertEqual(5, len(zones)) # Run the task and check if it reset the delayed_notify flag with fx_pool_manager: self.generate_delayed_notify_task_fixture.task() pm_api = PoolManagerAPI.get_instance() self.assertEqual(20, pm_api.update_zone.call_count) zones = self._fetch_zones(tables.zones.select().where( tables.zones.c.delayed_notify == True)) # nopep8 self.assertEqual(0, len(zones))
def test_update_zone(self, mock_prepare): inner_mock = mock.Mock() inner_mock.cast = mock.Mock(return_value=None) mock_prepare.return_value = inner_mock values = { 'name': 'example.org.', 'pool_id': '794ccc2c-d751-44fe-b57f-8894c9f5c842' } zone = objects.Zone.from_dict(values) PoolManagerAPI.get_instance().update_zone(self.admin_context, zone) mock_prepare.assert_called_once_with( topic='pool_manager.%s' % zone.pool_id) mock_prepare.return_value.cast.assert_called_once_with( self.admin_context, 'update_zone', zone=zone)
def test_update_zone(self, mock_prepare): inner_mock = mock.Mock() inner_mock.cast = mock.Mock(return_value=None) mock_prepare.return_value = inner_mock values = { 'name': 'example.org.', 'pool_id': '794ccc2c-d751-44fe-b57f-8894c9f5c842' } zone = objects.Zone.from_dict(values) PoolManagerAPI.get_instance().update_zone(self.admin_context, zone) mock_prepare.assert_called_once_with(topic='pool_manager.%s' % zone.pool_id) mock_prepare.return_value.cast.assert_called_once_with( self.admin_context, 'update_zone', zone=zone)
def __call__(self): """Fetch a list of zones with the delayed_notify flag set up to "batch_size" Call Pool Manager to emit NOTIFY transactions, Reset the flag. """ pstart, pend = self._my_range() ctxt = context.DesignateContext.get_admin_context() ctxt.all_tenants = True # Select zones where "delayed_notify" is set and starting from the # oldest "updated_at". # There's an index on delayed_notify. criterion = self._filter_between('shard') criterion['delayed_notify'] = True zones = self.central_api.find_zones( ctxt, criterion, limit=self.options.batch_size, sort_key='updated_at', sort_dir='asc', ) msg = _LI("Performing delayed NOTIFY for %(start)s to %(end)s: %(n)d") LOG.debug(msg % dict(start=pstart, end=pend, n=len(zones))) pm_api = PoolManagerAPI.get_instance() for z in zones: pm_api.update_zone(ctxt, z) z.delayed_notify = False self.central_api.update_zone(ctxt, z)
def test_delete_domain(self, mock_prepare): inner_mock = mock.Mock() inner_mock.cast = mock.Mock(return_value=None) mock_prepare.return_value = inner_mock values = { 'name': 'example.org.', 'pool_id': '794ccc2c-d751-44fe-b57f-8894c9f5c842' } domain = objects.Domain.from_dict(values) PoolManagerAPI.get_instance().delete_domain(self.admin_context, domain) mock_prepare.assert_called_once_with(topic='pool_manager.%s' % domain.pool_id) mock_prepare.return_value.cast.assert_called_once_with( self.admin_context, 'delete_domain', domain=domain)
def test_delete_domain(self, mock_prepare): inner_mock = mock.Mock() inner_mock.cast = mock.Mock(return_value=None) mock_prepare.return_value = inner_mock values = { 'name': 'example.org.', 'pool_id': '794ccc2c-d751-44fe-b57f-8894c9f5c842' } domain = objects.Domain.from_dict(values) PoolManagerAPI.get_instance().delete_domain(self.admin_context, domain) mock_prepare.assert_called_once_with( topic='pool_manager.%s' % domain.pool_id) mock_prepare.return_value.cast.assert_called_once_with( self.admin_context, 'delete_domain', domain=domain)
def test_update_status(self, mock_prepare): inner_mock = mock.Mock() inner_mock.cast = mock.Mock(return_value=None) mock_prepare.return_value = inner_mock values = { 'name': 'example.org.', 'pool_id': '794ccc2c-d751-44fe-b57f-8894c9f5c842' } zone = objects.Zone.from_dict(values) values = { 'host': '127.0.0.1', 'port': 53 } nameserver = objects.PoolNameserver.from_dict(values) PoolManagerAPI.get_instance().update_status( self.admin_context, zone, nameserver, 'SUCCESS', 1) mock_prepare.assert_called_once_with( topic='pool_manager.%s' % zone.pool_id) mock_prepare.return_value.cast.assert_called_once_with( self.admin_context, 'update_status', zone=zone, nameserver=nameserver, status='SUCCESS', actual_serial=1)
def test_update_status(self, mock_prepare): inner_mock = mock.Mock() inner_mock.cast = mock.Mock(return_value=None) mock_prepare.return_value = inner_mock values = { 'name': 'example.org.', 'pool_id': '794ccc2c-d751-44fe-b57f-8894c9f5c842' } domain = objects.Domain.from_dict(values) values = { 'host': '127.0.0.1', 'port': '53' } server = objects.PoolServer.from_dict(values) PoolManagerAPI.get_instance().update_status( self.admin_context, domain, server, 'SUCCESS', 1) mock_prepare.assert_called_once_with( topic='pool_manager.%s' % domain.pool_id) mock_prepare.return_value.cast.assert_called_once_with( self.admin_context, 'update_status', domain=domain, server=server, status='SUCCESS', actual_serial=1)
def test_generate_delayed_notify_zones(self): # Create zones and set some of them as pending update. self.generate_delayed_notify_task_fixture.task() self.config(quota_zones=1000) self.config( interval=1, batch_size=5, group="zone_manager_task:delayed_notify" ) self._create_zones() zones = self._fetch_zones(tables.zones.select().where( tables.zones.c.delayed_notify == True)) # nopep8 self.assertEqual(10, len(zones)) # Run the task and check if it reset the delayed_notify flag with fx_pool_manager: pm_api = PoolManagerAPI.get_instance() pm_api.update_zone.reset_mock() self.generate_delayed_notify_task_fixture.task() self.assertEqual(10, pm_api.update_zone.call_count) zones = self._fetch_zones(tables.zones.select().where( tables.zones.c.delayed_notify == True)) # nopep8 self.assertEqual(5, len(zones)) # Run the task and check if it reset the delayed_notify flag with fx_pool_manager: self.generate_delayed_notify_task_fixture.task() pm_api = PoolManagerAPI.get_instance() self.assertEqual(20, pm_api.update_zone.call_count) zones = self._fetch_zones(tables.zones.select().where( tables.zones.c.delayed_notify == True)) # nopep8 self.assertEqual(0, len(zones))