def delete(self, context, network_id): if network_id == -1: raise exception.NetworkInUse(network_id=network_id) for i, network in enumerate(self.networks): if network['id'] == network_id: del self.networks[0] return True raise exception.NetworkNotFoundForUUID(uuid=network_id)
class NetworksTestV21(test.NoDBTestCase): validation_error = exception.ValidationError def setUp(self): super(NetworksTestV21, self).setUp() self.fake_network_api = FakeNetworkAPI() self._setup() fakes.stub_out_networking(self.stubs) fakes.stub_out_rate_limiting(self.stubs) self.new_network = copy.deepcopy(NEW_NETWORK) self.req = fakes.HTTPRequest.blank('') self.admin_req = fakes.HTTPRequest.blank('', use_admin_context=True) def _setup(self): self.controller = networks_v21.NetworkController(self.fake_network_api) def _check_status(self, res, method, code): self.assertEqual(method.wsgi_code, code) @staticmethod def network_uuid_to_id(network): network['id'] = network['uuid'] del network['uuid'] def test_network_list_all_as_user(self): self.maxDiff = None res_dict = self.controller.index(self.req) self.assertEqual(res_dict, {'networks': []}) project_id = self.req.environ["nova.context"].project_id cxt = self.req.environ["nova.context"] uuid = FAKE_NETWORKS[0]['uuid'] self.fake_network_api.associate(context=cxt, network_uuid=uuid, project=project_id) res_dict = self.controller.index(self.req) expected = [copy.deepcopy(FAKE_USER_NETWORKS[0])] for network in expected: self.network_uuid_to_id(network) self.assertEqual({'networks': expected}, res_dict) def test_network_list_all_as_admin(self): res_dict = self.controller.index(self.admin_req) expected = copy.deepcopy(FAKE_NETWORKS) for network in expected: self.network_uuid_to_id(network) self.assertEqual({'networks': expected}, res_dict) def test_network_disassociate(self): uuid = FAKE_NETWORKS[0]['uuid'] res = self.controller._disassociate_host_and_project( self.req, uuid, {'disassociate': None}) self._check_status(res, self.controller._disassociate_host_and_project, 202) self.assertIsNone(self.fake_network_api.networks[0]['project_id']) self.assertIsNone(self.fake_network_api.networks[0]['host']) def test_network_disassociate_not_found(self): self.assertRaises(webob.exc.HTTPNotFound, self.controller._disassociate_host_and_project, self.req, 100, {'disassociate': None}) def test_network_get_as_user(self): uuid = FAKE_USER_NETWORKS[0]['uuid'] res_dict = self.controller.show(self.req, uuid) expected = {'network': copy.deepcopy(FAKE_USER_NETWORKS[0])} self.network_uuid_to_id(expected['network']) self.assertEqual(expected, res_dict) def test_network_get_as_admin(self): uuid = FAKE_NETWORKS[0]['uuid'] res_dict = self.controller.show(self.admin_req, uuid) expected = {'network': copy.deepcopy(FAKE_NETWORKS[0])} self.network_uuid_to_id(expected['network']) self.assertEqual(expected, res_dict) def test_network_get_not_found(self): self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, self.req, 100) def test_network_delete(self): res = self.controller.delete(self.req, 1) self._check_status(res, self.controller.delete, 202) def test_network_delete_not_found(self): self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete, self.req, 100) def test_network_delete_in_use(self): self.assertRaises(webob.exc.HTTPConflict, self.controller.delete, self.req, -1) def test_network_add(self): uuid = FAKE_NETWORKS[1]['uuid'] res = self.controller.add(self.req, body={'id': uuid}) self._check_status(res, self.controller.add, 202) res_dict = self.controller.show(self.admin_req, uuid) self.assertEqual(res_dict['network']['project_id'], 'fake') @mock.patch('nova.tests.unit.api.openstack.compute.contrib.test_networks.' 'FakeNetworkAPI.add_network_to_project', side_effect=exception.NoMoreNetworks) def test_network_add_no_more_networks_fail(self, mock_add): uuid = FAKE_NETWORKS[1]['uuid'] self.assertRaises(webob.exc.HTTPBadRequest, self.controller.add, self.req, body={'id': uuid}) @mock.patch('nova.tests.unit.api.openstack.compute.contrib.test_networks.' 'FakeNetworkAPI.add_network_to_project', side_effect=exception.NetworkNotFoundForUUID(uuid='fake_uuid')) def test_network_add_network_not_found_networks_fail(self, mock_add): uuid = FAKE_NETWORKS[1]['uuid'] self.assertRaises(webob.exc.HTTPBadRequest, self.controller.add, self.req, body={'id': uuid}) def test_network_add_network_without_body(self): self.assertRaises(self.validation_error, self.controller.add, self.req, body=None) def test_network_add_network_with_invalid_id(self): self.assertRaises(exception.ValidationError, self.controller.add, self.req, body={'id': 123}) def test_network_add_network_with_extra_arg(self): uuid = FAKE_NETWORKS[1]['uuid'] self.assertRaises(exception.ValidationError, self.controller.add, self.req, body={ 'id': uuid, 'extra_arg': 123 }) def test_network_add_network_with_none_id(self): res = self.controller.add(self.req, body={'id': None}) self._check_status(res, self.controller.add, 202) def test_network_create(self): res_dict = self.controller.create(self.req, body=self.new_network) self.assertIn('network', res_dict) uuid = res_dict['network']['id'] res_dict = self.controller.show(self.req, uuid) self.assertTrue(res_dict['network']['label'].startswith( NEW_NETWORK['network']['label'])) def test_network_create_large(self): self.new_network['network']['cidr'] = '128.0.0.0/4' res_dict = self.controller.create(self.req, body=self.new_network) self.assertEqual(res_dict['network']['cidr'], self.new_network['network']['cidr']) def test_network_neutron_disassociate_not_implemented(self): uuid = FAKE_NETWORKS[1]['uuid'] self.flags(network_api_class='nova.network.neutronv2.api.API') controller = networks.NetworkController() self.assertRaises(webob.exc.HTTPNotImplemented, controller._disassociate_host_and_project, self.req, uuid, {'disassociate': None})
def network_get_by_uuid(self, context, network_uuid): raise exception.NetworkNotFoundForUUID(uuid=network_uuid)