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
Beispiel #3
0
    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)
Beispiel #4
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
Beispiel #6
0
    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
Beispiel #8
0
    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)
Beispiel #9
0
    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,
        )
Beispiel #10
0
 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)
Beispiel #11
0
    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)
Beispiel #12
0
    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")
Beispiel #13
0
    def test_no_pools(self):
        pools = objects.PoolList()
        pools = self.test_filter.filter(self.context, pools, self.zone)

        self.assertEqual(0, len(pools))