req/res alignment complete.
Status code alignment ALMOST complete (need to sort out 200 vs 202 for create ops) Need to align unit tests.
This commit is contained in:
parent
6a99c4c8a3
commit
fee565d19a
|
@ -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']))
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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']))
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue