From: Salvatore Orlando Date: Thu, 21 Jul 2011 16:24:24 +0000 (+0100) Subject: Merge with quantum-unit-tests X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=70d793c8169e412c2ceef895b993ee750ad72cd0;p=openstack-build%2Fneutron-build.git Merge with quantum-unit-tests --- 70d793c8169e412c2ceef895b993ee750ad72cd0 diff --cc quantum/api/__init__.py index f00d7bcb2,40dd058ba..c5cac4bf7 --- a/quantum/api/__init__.py +++ b/quantum/api/__init__.py @@@ -41,25 -41,23 +42,25 @@@ class APIRouterV01(wsgi.Router) Routes requests on the Quantum API to the appropriate controller """ - def __init__(self, ext_mgr=None): + def __init__(self, options=None): mapper = routes.Mapper() - self._setup_routes(mapper) + self._setup_routes(mapper, options) super(APIRouterV01, self).__init__(mapper) - def _setup_routes(self, mapper): - + def _setup_routes(self, mapper, options): + # Loads the quantum plugin + plugin = manager.QuantumManager(options).get_plugin() uri_prefix = '/tenants/{tenant_id}/' mapper.resource('network', 'networks', - controller=networks.Controller(), + controller=networks.Controller(plugin), + collection={'detail': 'GET'}, + member={'detail': 'GET'}, path_prefix=uri_prefix) mapper.resource('port', 'ports', - controller=ports.Controller(), + controller=ports.Controller(plugin), parent_resource=dict(member_name='network', collection_name=uri_prefix +\ - 'networks')) - + 'networks')) mapper.connect("get_resource", uri_prefix + 'networks/{network_id}/' \ 'ports/{id}/attachment{.format}', @@@ -75,8 -73,6 +76,8 @@@ mapper.connect("detach_resource", uri_prefix + 'networks/{network_id}/' \ 'ports/{id}/attachment{.format}', - controller=ports.Controller(), + controller=ports.Controller(plugin), action="detach_resource", conditions=dict(method=['DELETE'])) + print "MAPPED ROUTES" + print mapper diff --cc quantum/api/networks.py index f9f5df4ed,9bad90ab2..2a56d6bc6 --- a/quantum/api/networks.py +++ b/quantum/api/networks.py @@@ -48,43 -47,25 +48,49 @@@ class Controller(common.QuantumControll def index(self, request, tenant_id): """ Returns a list of network ids """ #TODO: this should be for a given tenant!!! - return self._items(request, tenant_id, is_detail=False) + return self._items(request, tenant_id) - def _items(self, request, tenant_id, is_detail): + def _item(self, req, tenant_id, network_id, + net_details=True, port_details=False): + network = self.network_manager.get_network_details( + tenant_id, network_id) + builder = networks_view.get_view_builder(req) + result = builder.build(network, net_details, port_details) + return dict(networks=result) + + def _items(self, req, tenant_id, net_details=False, port_details=False): """ Returns a list of networks. """ - networks = self.network_manager.get_all_networks(tenant_id) + networks = self._plugin.get_all_networks(tenant_id) - builder = networks_view.get_view_builder(request) - result = [builder.build(network, is_detail)['network'] + builder = networks_view.get_view_builder(req) + result = [builder.build(network, net_details, port_details)['network'] for network in networks] return dict(networks=result) def show(self, request, tenant_id, id): """ Returns network details for the given network id """ try: + return self._item(request, tenant_id, id, + net_details=True, port_details=False) + except exception.NetworkNotFound as e: + return faults.Fault(faults.NetworkNotFound(e)) + + def detail(self, request, **kwargs): + tenant_id = kwargs.get('tenant_id') + network_id = kwargs.get('id') + try: + if network_id: + return self._item(request, tenant_id, network_id, + net_details=True, port_details=True) + else: + #do like show but with detaik + return self._items(request, tenant_id, + net_details=True, port_details=False) + network = self._plugin.get_network_details( + tenant_id, id) + builder = networks_view.get_view_builder(request) + #build response with details + result = builder.build(network, True) + return dict(networks=result) except exception.NetworkNotFound as e: return faults.Fault(faults.NetworkNotFound(e)) diff --cc quantum/api/ports.py index b92f33e9e,8a7ee81c1..ebe9ab843 --- a/quantum/api/ports.py +++ b/quantum/api/ports.py @@@ -104,9 -104,8 +104,8 @@@ class Controller(common.QuantumControll except exc.HTTPError as e: return faults.Fault(e) try: - port = self.network_manager.\ - update_port(tenant_id, network_id, id, - request_params['port-state']) + port = self._plugin.update_port(tenant_id, network_id, id, - request_params['port-state']) ++ request_params['port-state']) builder = ports_view.get_view_builder(request) result = builder.build(port, True) return dict(ports=result) @@@ -121,9 -120,9 +120,9 @@@ """ Destroys the port with the given id """ #look for port state in request try: - self.network_manager.delete_port(tenant_id, network_id, id) + self._plugin.delete_port(tenant_id, network_id, id) return exc.HTTPAccepted() - #TODO(salvatore-orlando): Handle portInUse error + # TODO(salvatore-orlando): Handle portInUse error except exception.NetworkNotFound as e: return faults.Fault(faults.NetworkNotFound(e)) except exception.PortNotFound as e: diff --cc quantum/plugins/SamplePlugin.py index 1f7c9f8dd,8f46e4373..46576389c --- a/quantum/plugins/SamplePlugin.py +++ b/quantum/plugins/SamplePlugin.py @@@ -220,39 -233,14 +226,14 @@@ class FakePlugin(object) client/cli/api development """ - #static data for networks and ports - _port_dict_1 = { - 1: {'port-id': 1, - 'port-state': 'DOWN', - 'attachment': None}, - 2: {'port-id': 2, - 'port-state': 'ACTIVE', - 'attachment': None}} - _port_dict_2 = { - 1: {'port-id': 1, - 'port-state': 'ACTIVE', - 'attachment': 'SomeFormOfVIFID'}, - 2: {'port-id': 2, - 'port-state': 'DOWN', - 'attachment': None}} - _networks = {'001': - { - 'net-id': '001', - 'net-name': 'pippotest', - 'net-ports': _port_dict_1 - }, - '002': - { - 'net-id': '002', - 'net-name': 'cicciotest', - 'net-ports': _port_dict_2}} - def __init__(self): - FakePlugin._net_counter = len(FakePlugin._networks) - db.configure_db({'sql_connection':'sqlite:///:memory:'}) ++ db.configure_db({'sql_connection': 'sqlite:///:memory:'}) + FakePlugin._net_counter = 0 def _get_network(self, tenant_id, network_id): - network = FakePlugin._networks.get(network_id) - if not network: + try: + network = db.network_get(network_id) + except: raise exc.NetworkNotFound(net_id=network_id) return network