Example #1
0
 def test_generate_network_view_name(self):
     self.assertRaises(ValueError, utils.generate_network_view_name, None)
     self.assertRaises(ValueError, utils.generate_network_view_name, [])
     self.assertRaises(ValueError, utils.generate_network_view_name, '')
     self.assertRaises(ValueError, utils.generate_network_view_name, '', '')
     self.assertRaises(ValueError, utils.generate_network_view_name, '5', 8)
     self.assertEqual('123', utils.generate_network_view_name('123', []))
     self.assertEqual('1234', utils.generate_network_view_name('1234', ''))
     self.assertEqual('1234', utils.generate_network_view_name('1234'))
     self.assertEqual('hi-23', utils.generate_network_view_name('23', 'hi'))
Example #2
0
 def test_generate_network_view_name_max_len(self):
     name = 'tempest-NetworksTest'
     id = '279909910-24625c5053c7483ab6273628423989'
     netview_name = utils.generate_network_view_name(id, name)
     self.assertEqual(const.NETVIEW_MAX_LEN, len(netview_name))
     expected_name = '-'.join([name, id])[:const.NETVIEW_MAX_LEN]
     self.assertEqual(expected_name, netview_name)
Example #3
0
    def test_network_view_mapping_conditions_with_tenant_scope(self):
        user_id = 'test user'
        tenant_id = 'test-tenant-id'

        # prepare network
        network_name = 'Test Network'
        network = self.plugin_stub.create_network(tenant_id, network_name)

        # prepare subnet with cidr tat is not used in mapping conditions
        subnet_name = 'Test Subnet'
        subnet_cidr = '10.0.0.0/24'
        subnet = self.plugin_stub.create_subnet(tenant_id, subnet_name,
                                                network['id'], subnet_cidr)

        # make sure that no subnet cidr is used in mapping conditions
        db_conditions = dbi.get_mapping_conditions(
            self.ctx.session,
            grid_id=self.grid_id,
            neutron_object_value=subnet_cidr)
        self.assertEqual([], db_conditions)

        # set default network view scope to 'Tenant'
        self.grid_config.default_network_view_scope = (
            const.NETWORK_VIEW_SCOPE_TENANT)

        # test default mapping as 'Tenant'
        ib_cxt = ib_context.InfobloxContext(self.ctx, user_id, network, subnet,
                                            self.grid_config, self.plugin)
        ib_cxt.connector = mock.Mock()
        ib_cxt.ibom = mock.Mock()
        ib_cxt.ip_allocator = mock.Mock()

        # validate the mapping network view
        expected_netview = utils.generate_network_view_name(tenant_id)
        self.assertIsNone(ib_cxt.mapping.network_view_id)
        self.assertEqual(expected_netview, ib_cxt.mapping.network_view)
        self.assertEqual(None, ib_cxt.mapping.authority_member)
    def test_network_view_mapping_conditions_with_tenant_scope(self):
        user_id = 'test user'
        tenant_id = 'test-tenant-id'

        # prepare network
        network_name = 'Test Network'
        network = self.plugin_stub.create_network(tenant_id, network_name)

        # prepare subnet with cidr tat is not used in mapping conditions
        subnet_name = 'Test Subnet'
        subnet_cidr = '10.0.0.0/24'
        subnet = self.plugin_stub.create_subnet(tenant_id, subnet_name,
                                                network['id'], subnet_cidr)

        # make sure that no subnet cidr is used in mapping conditions
        db_conditions = dbi.get_mapping_conditions(
            self.ctx.session,
            grid_id=self.grid_id,
            neutron_object_value=subnet_cidr)
        self.assertEqual([], db_conditions)

        # set default network view scope to 'Tenant'
        self.grid_config.default_network_view_scope = (
            const.NETWORK_VIEW_SCOPE_TENANT)

        # test default mapping as 'Tenant'
        ib_cxt = ib_context.InfobloxContext(self.ctx, user_id, network, subnet,
                                            self.grid_config, self.plugin)
        ib_cxt.connector = mock.Mock()
        ib_cxt.ibom = mock.Mock()
        ib_cxt.ip_allocator = mock.Mock()

        # validate the mapping network view
        expected_netview = utils.generate_network_view_name(tenant_id)
        self.assertIsNone(ib_cxt.mapping.network_view_id)
        self.assertEqual(expected_netview, ib_cxt.mapping.network_view)
        self.assertEqual(None, ib_cxt.mapping.authority_member)
Example #5
0
    def _get_network_view_by_scope(self, netview_scope, neutron_objs):
        netview_name = None

        if netview_scope == const.NETWORK_VIEW_SCOPE_SINGLE:
            db_netview = utils.find_one_in_list(
                'network_view', self.grid_config.default_network_view,
                self.discovered_network_views)
            if db_netview:
                if db_netview.participated:
                    netview_name = self.grid_config.default_network_view
                else:
                    raise exc.InfobloxNetworkViewNotParticipated(
                        network_view=self.grid_config.default_network_view)
            else:
                raise exc.InfobloxNetworkViewNotFound(
                    network_view=self.grid_config.default_network_view)
        else:
            object_id = None
            object_name = None

            if netview_scope == const.NETWORK_VIEW_SCOPE_SUBNET:
                object_id = neutron_objs['subnet_id']
                object_name = neutron_objs['subnet_name']
            elif netview_scope == const.NETWORK_VIEW_SCOPE_NETWORK:
                object_id = neutron_objs['network_id']
                object_name = neutron_objs['network_name']
            elif netview_scope == const.NETWORK_VIEW_SCOPE_TENANT:
                object_id = neutron_objs['tenant_id']
                object_name = neutron_objs['tenant_name']
            elif netview_scope == const.NETWORK_VIEW_SCOPE_ADDRESS_SCOPE:
                object_id = neutron_objs['address_scope_id']
                object_name = neutron_objs['address_scope_name']

            if object_id:
                netview_name = utils.generate_network_view_name(
                    object_id, object_name)

        # see if formulated netview name matches internal name in db
        # if matches then return the current netview name;
        # this is needed to support the netview name change
        db_netviews = dbi.get_network_views(self.context.session,
                                            grid_id=self.grid_id,
                                            internal_network_view=netview_name)
        if db_netviews:
            if db_netviews[0].participated:
                netview_name = db_netviews[0].network_view
            else:
                raise exc.InfobloxNetworkViewNotParticipated(
                    network_view=netview_name)

        # still no network view, then try to use default
        if not netview_name:
            default_netview = utils.find_one_in_list(
                'default', True, self.discovered_network_views)
            if default_netview:
                if default_netview.participated:
                    netview_name = default_netview.network_view
                else:
                    raise exc.InfobloxNetworkViewNotParticipated(
                        network_view=netview_name)
            else:
                raise exc.InfobloxDefaultNetworkViewNotFound()

        return netview_name
Example #6
0
    def _get_network_view_by_scope(self, netview_scope, neutron_objs):
        netview_name = None

        if netview_scope == const.NETWORK_VIEW_SCOPE_SINGLE:
            db_netview = utils.find_one_in_list(
                'network_view',
                self.grid_config.default_network_view,
                self.discovered_network_views)
            if db_netview:
                if db_netview.participated:
                    netview_name = self.grid_config.default_network_view
                else:
                    raise exc.InfobloxNetworkViewNotParticipated(
                        network_view=self.grid_config.default_network_view)
            else:
                raise exc.InfobloxNetworkViewNotFound(
                    network_view=self.grid_config.default_network_view)
        else:
            object_id = None
            object_name = None

            if netview_scope == const.NETWORK_VIEW_SCOPE_SUBNET:
                object_id = neutron_objs['subnet_id']
                object_name = neutron_objs['subnet_name']
            elif netview_scope == const.NETWORK_VIEW_SCOPE_NETWORK:
                object_id = neutron_objs['network_id']
                object_name = neutron_objs['network_name']
            elif netview_scope == const.NETWORK_VIEW_SCOPE_TENANT:
                object_id = neutron_objs['tenant_id']
                object_name = neutron_objs['tenant_name']
            elif netview_scope == const.NETWORK_VIEW_SCOPE_ADDRESS_SCOPE:
                object_id = neutron_objs['address_scope_id']
                object_name = neutron_objs['address_scope_name']

            if object_id:
                netview_name = utils.generate_network_view_name(object_id,
                                                                object_name)

        # see if formulated netview name matches internal name in db
        # if matches then return the current netview name;
        # this is needed to support the netview name change
        db_netviews = dbi.get_network_views(
            self.context.session,
            grid_id=self.grid_id,
            internal_network_view=netview_name)
        if db_netviews:
            if db_netviews[0].participated:
                netview_name = db_netviews[0].network_view
            else:
                raise exc.InfobloxNetworkViewNotParticipated(
                    network_view=netview_name)

        # still no network view, then try to use default
        if not netview_name:
            default_netview = utils.find_one_in_list(
                'default', True, self.discovered_network_views)
            if default_netview:
                if default_netview.participated:
                    netview_name = default_netview.network_view
                else:
                    raise exc.InfobloxNetworkViewNotParticipated(
                        network_view=netview_name)
            else:
                raise exc.InfobloxDefaultNetworkViewNotFound()

        return netview_name