def filter(self, context, pools, zone): """Attempt to load and set the pool to the one provied in the Zone attributes. :param context: :class:`designate.context.DesignateContext` - Context Object from request :param pools: :class:`designate.objects.pool.PoolList` - List of pools to choose from :param zone: :class:`designate.objects.zone.Zone` - Zone to be created :return: :class:`designate.objects.pool.PoolList` -- A PoolList with containing a single pool. :raises: Forbidden, PoolNotFound """ try: if zone.attributes.get('pool_id'): pool_id = zone.attributes.get('pool_id') try: pool = self.storage.get_pool(context, pool_id) except Exception: return objects.PoolList() policy.check('zone_create_forced_pool', context, pool) if pool in pools: pools = objects.PoolList() pools.append(pool) return pools else: return pools except exceptions.RelationNotLoaded: return pools
def filter(self, context, pools, zone): if len(pools) is 0: pools = objects.PoolList() pools.append( objects.Pool(id=cfg.CONF['service:central'].default_pool_id)) return pools else: return pools
def test_no_pools(self): pools = objects.PoolList() self.useFixture( fixtures.MockPatchObject(policy, 'check', return_value=None)) pools = self.test_filter.filter(self.context, pools, self.zone) self.assertEqual(len(pools), 0)
def test_no_filters_enabled(self): cfg.CONF.set_override('scheduler_filters', [], 'service:central') attrs = {'find_pools.return_value': objects.PoolList()} mock_storage = Mock(**attrs) with testtools.ExpectedException(exceptions.NoFiltersConfigured): scheduler.get_scheduler(storage=mock_storage)
def filter(self, context, pools, zone): if len(pools): default_pool_id = cfg.CONF['service:central'].default_pool_id default_pool = objects.Pool(id=default_pool_id) if default_pool in pools: pools = objects.PoolList() pools.append(default_pool) return pools
def test_no_filters_enabled(self): self.CONF.set_override('scheduler_filters', [], 'service:central') attrs = {'find_pools.return_value': objects.PoolList()} mock_storage = Mock(**attrs) self.assertRaisesRegex( exceptions.NoFiltersConfigured, 'There are no scheduling filters configured', scheduler.get_scheduler, mock_storage, )
def filter(self, context, pools, zone): if len(pools) > 1: default_pool_id = cfg.CONF['service:central'].default_pool_id try: default_pool = self.storage.get_pool(context, default_pool_id) except Exception: return pools if default_pool in pools: pools = objects.PoolList() pools.append(default_pool) return pools
def test_no_pools(self): zone = objects.Zone(name="example.com.", type="PRIMARY", email="*****@*****.**") attrs = {'find_pools.return_value': objects.PoolList()} mock_storage = Mock(**attrs) cfg.CONF.set_override('scheduler_filters', ['random'], 'service:central') test_scheduler = scheduler.get_scheduler(storage=mock_storage) with testtools.ExpectedException(exceptions.NoValidPoolFound): test_scheduler.schedule_zone(self.context, zone)
def test_no_pools(self): attrs = {'find_pools.return_value': objects.PoolList()} mock_storage = Mock(**attrs) self.CONF.set_override('scheduler_filters', ['random'], 'service:central') test_scheduler = scheduler.get_scheduler(storage=mock_storage) self.assertRaisesRegex( exceptions.NoValidPoolFound, 'There are no pools that matched your request', test_scheduler.schedule_zone, self.context, self.zone, )
def export_from_config(self, file): try: pools = self.central_api.find_pools(self.context) except messaging.exceptions.MessagingTimeout: LOG.critical( _LC("No response recieved from designate-central. " "Check it is running, and retry")) r_pools = objects.PoolList() for pool in pools: r_pool = objects.Pool.from_config(CONF, pool.id) r_pool.id = pool.id r_pool.ns_records = pool.ns_records r_pool.attributes = pool.attributes r_pools.append(r_pool) with open(file, 'w') as stream: yaml.dump(DesignateAdapter.render('YAML', r_pools), stream, default_flow_style=False)
def export_from_config(self, file): self._startup() # Avoid circular dependency imports from designate import pool_manager pool_manager.register_dynamic_pool_options() try: pools = self.central_api.find_pools(self.context) except messaging.exceptions.MessagingTimeout: LOG.critical("No response received from designate-central. " "Check it is running, and retry") sys.exit(1) r_pools = objects.PoolList() for pool in pools: r_pool = objects.Pool.from_config(CONF, pool.id) r_pool.id = pool.id r_pool.ns_records = pool.ns_records r_pool.attributes = pool.attributes r_pools.append(r_pool) with open(file, 'w') as stream: yaml.dump(DesignateAdapter.render('YAML', r_pools), stream, default_flow_style=False)
def test_no_pools(self): pools = objects.PoolList() pools = self.test_filter.filter(self.context, pools, self.zone) self.assertEqual(pools[0].id, "794ccc2c-d751-44fe-b57f-8894c9f5c842")
def test_no_pools(self): pools = objects.PoolList() pools = self.test_filter.filter(self.context, pools, self.zone) self.assertEqual(0, len(pools))