]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
req/res alignment complete.
authorSalvatore Orlando <salvatore.orlando@eu.citrix.com>
Tue, 2 Aug 2011 16:51:53 +0000 (17:51 +0100)
committerSalvatore Orlando <salvatore.orlando@eu.citrix.com>
Tue, 2 Aug 2011 16:51:53 +0000 (17:51 +0100)
Status code alignment ALMOST complete (need to sort out 200 vs 202 for create ops)

Need to align unit tests.

quantum/api/__init__.py
quantum/api/ports.py
quantum/api/views/networks.py
quantum/db/api.py
quantum/db/models.py

index 619de63a977bc4ff4b2b5cfb039ab0a9bd4cf70c..0e914dbee703d52e19064f86b171173b88a96563 100644 (file)
@@ -26,6 +26,7 @@ import webob.exc
 
 from quantum import manager
 from quantum.api import faults
+from quantum.api import attachments
 from quantum.api import networks
 from quantum.api import ports
 from quantum.common import flags
@@ -60,21 +61,24 @@ class APIRouterV01(wsgi.Router):
                         parent_resource=dict(member_name='network',
                                              collection_name=uri_prefix +\
                                                  'networks'))
+        
+        attachments_ctrl = attachments.Controller(plugin)
+        
         mapper.connect("get_resource",
                        uri_prefix + 'networks/{network_id}/' \
                                     'ports/{id}/attachment{.format}',
-                       controller=ports.Controller(plugin),
+                       controller=attachments_ctrl,
                        action="get_resource",
                        conditions=dict(method=['GET']))
         mapper.connect("attach_resource",
                        uri_prefix + 'networks/{network_id}/' \
                                     'ports/{id}/attachment{.format}',
-                       controller=ports.Controller(plugin),
+                       controller=attachments_ctrl,
                        action="attach_resource",
                        conditions=dict(method=['PUT']))
         mapper.connect("detach_resource",
                        uri_prefix + 'networks/{network_id}/' \
                                     'ports/{id}/attachment{.format}',
-                       controller=ports.Controller(plugin),
+                       controller=attachments_ctrl,
                        action="detach_resource",
                        conditions=dict(method=['DELETE']))
index feb5f960b10c7293deee7ddb477dc9036138daa0..9255a26e3993acffaa28de54b89ebbfcd759b3bf 100644 (file)
@@ -33,10 +33,6 @@ class Controller(common.QuantumController):
         'default-value': 'DOWN',
         'required': False}, ]
 
-    _attachment_ops_param_list = [{
-        'param-name': 'attachment-id',
-        'required': True}, ]
-
     _serialization_metadata = {
         "application/xml": {
             "attributes": {
@@ -129,45 +125,3 @@ class Controller(common.QuantumController):
             return faults.Fault(faults.PortNotFound(e))
         except exception.PortInUse as e:
             return faults.Fault(faults.PortInUse(e))
-
-    def get_resource(self, request, tenant_id, network_id, id):
-        try:
-            result = self._plugin.get_port_details(
-                            tenant_id, network_id, id).get('attachment-id',
-                                                           None)
-            return dict(attachment=result)
-        except exception.NetworkNotFound as e:
-            return faults.Fault(faults.NetworkNotFound(e))
-        except exception.PortNotFound as e:
-            return faults.Fault(faults.PortNotFound(e))
-
-    def attach_resource(self, request, tenant_id, network_id, id):
-        try:
-            request_params = \
-                self._parse_request_params(request,
-                                           self._attachment_ops_param_list)
-        except exc.HTTPError as e:
-            return faults.Fault(e)
-        try:
-            self._plugin.plug_interface(tenant_id,
-                                            network_id, id,
-                                            request_params['attachment-id'])
-            return exc.HTTPAccepted()
-        except exception.NetworkNotFound as e:
-            return faults.Fault(faults.NetworkNotFound(e))
-        except exception.PortNotFound as e:
-            return faults.Fault(faults.PortNotFound(e))
-        except exception.PortInUse as e:
-            return faults.Fault(faults.PortInUse(e))
-        except exception.AlreadyAttached as e:
-            return faults.Fault(faults.AlreadyAttached(e))
-
-    def detach_resource(self, request, tenant_id, network_id, id):
-        try:
-            self._plugin.unplug_interface(tenant_id,
-                                          network_id, id)
-            return exc.HTTPAccepted()
-        except exception.NetworkNotFound as e:
-            return faults.Fault(faults.NetworkNotFound(e))
-        except exception.PortNotFound as e:
-            return faults.Fault(faults.PortNotFound(e))
index 2242e00f7943464d0cbb72ed94194888655e4373..61561e0bbfdd78e1cfc133115668b675741e6ddb 100644 (file)
@@ -61,4 +61,4 @@ class ViewBuilder(object):
         """Return details about a specific logical port."""
         return dict(port=dict(id=port_data['port-id'],
                               state=port_data['port-state'],
-                              attachment=port_data['attachment']))
+                              attachment=port_data['attachment-id']))
index 6813d2096ce114c7c22f577ecb44d26f4052cd42..3b065ea65bcf76ed64f676ef3a26194e605cb7f9 100644 (file)
@@ -17,6 +17,8 @@
 # @author: Brad Hall, Nicira Networks, Inc.
 # @author: Dan Wendlandt, Nicira Networks, Inc.
 
+import logging 
+
 from sqlalchemy import create_engine
 from sqlalchemy.orm import sessionmaker, exc
 
@@ -25,7 +27,7 @@ from quantum.db import models
 _ENGINE = None
 _MAKER = None
 BASE = models.BASE
-
+LOG = logging.getLogger('quantum.plugins.SamplePlugin')
 
 def configure_db(options):
     """
@@ -200,7 +202,8 @@ def port_unset_attachment(port_id):
     port = port_get(port_id)
     port.interface_id = None
     session.merge(port)
-    session.flush
+    session.flush()
+    port = port_get(port_id)
 
 
 def port_destroy(port_id):
index 1a18e7e5188e81b251b3ef1a650e45922236e59c..72c47e7978788fbc0a4d755eec853e4f7801b702 100644 (file)
@@ -68,13 +68,14 @@ class Port(BASE, QuantumBase):
     uuid = Column(String(255), primary_key=True)
     network_id = Column(String(255), ForeignKey("networks.uuid"),
                         nullable=False)
-    interface_id = Column(String(255))
+    interface_id = Column(String(255), nullable=True)
     # Port state - Hardcoding string value at the moment
     state = Column(String(8))
 
     def __init__(self, network_id):
         self.uuid = str(uuid.uuid4())
         self.network_id = network_id
+        self.interface_id = None
         self.state = "DOWN"
 
     def __repr__(self):