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'))
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)
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 _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
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