Fix exceptions handling in controllers

1. DB api create_* methods not raises IronicException.
2. Non-Ironic exception from DB api create_* method
should cause server error.

Also unnecessary wsme.validate decorator removed from
chassis controller.

Change-Id: I71279f7db5c93804aeac077c034e09cb907b1fb9
This commit is contained in:
Yuriy Zveryanskyy
2013-10-24 16:38:00 +03:00
parent 1eedfc290f
commit 582069e941
3 changed files with 10 additions and 9 deletions
+4 -4
View File
@@ -33,6 +33,7 @@ from ironic.api.controllers.v1 import node
from ironic.api.controllers.v1 import utils
from ironic.common import exception
from ironic import objects
from ironic.openstack.common import excutils
from ironic.openstack.common import log
LOG = log.getLogger(__name__)
@@ -165,15 +166,14 @@ class ChassisController(rest.RestController):
rpc_chassis = objects.Chassis.get_by_uuid(pecan.request.context, uuid)
return Chassis.convert_with_links(rpc_chassis)
@wsme.validate(Chassis)
@wsme_pecan.wsexpose(Chassis, body=Chassis)
def post(self, chassis):
"""Create a new chassis."""
try:
new_chassis = pecan.request.dbapi.create_chassis(chassis.as_dict())
except exception.IronicException as e:
LOG.exception(e)
raise wsme.exc.ClientSideError(_("Invalid data"))
except Exception as e:
with excutils.save_and_reraise_exception():
LOG.exception(e)
return Chassis.convert_with_links(new_chassis)
@wsme_pecan.wsexpose(Chassis, unicode, body=[unicode])
+2 -2
View File
@@ -396,8 +396,8 @@ class NodesController(rest.RestController):
try:
new_node = pecan.request.dbapi.create_node(node_dict)
except Exception as e:
LOG.exception(e)
raise wsme.exc.ClientSideError(_("Invalid data"))
with excutils.save_and_reraise_exception():
LOG.exception(e)
return Node.convert_with_links(new_node)
@wsme_pecan.wsexpose(Node, unicode, body=[unicode])
+4 -3
View File
@@ -32,6 +32,7 @@ from ironic.api.controllers.v1 import utils as api_utils
from ironic.common import exception
from ironic.common import utils
from ironic import objects
from ironic.openstack.common import excutils
from ironic.openstack.common import log
LOG = log.getLogger(__name__)
@@ -214,9 +215,9 @@ class PortsController(rest.RestController):
try:
new_port = pecan.request.dbapi.create_port(port_dict)
except exception.IronicException as e:
LOG.exception(e)
raise wsme.exc.ClientSideError(_("Invalid data"))
except Exception as e:
with excutils.save_and_reraise_exception():
LOG.exception(e)
return Port.convert_with_links(new_port)
@wsme_pecan.wsexpose(Port, unicode, body=[unicode])