showing nonexistent NetworkGateway throws 500 instead of 404

Bug #1252921 reported by Mitsuru Kanabuchi
20
This bug affects 4 people
Affects Status Importance Assigned to Milestone
neutron
Fix Released
Undecided
Bo Lin

Bug Description

I'm implementing nvp network gateway to heat.

  https://blueprints.launchpad.net/heat/+spec/resource-type-nvp-network-gateway

Heat would check resource existence by resource-show after resource deleted.
However, show_network_gateway returns 500 instead of 404 when nvp network gateway isn't exist.
The result of this situation is that Heat is unable to delete nvp network gateway.

I think, neutron should return 404 when resource isn't exist.

Curl:

$ curl -i http://172.23.56.142:9696/v2.0/network-gateways/b5afd4a9-eb71-4af7-a082-8fc625a35b61 -X GET -H "X-Auth-Token: 56c136ee847f476f9f0ba4c2ca78ae4b" -H "Content-Type: application/json" -H "Accept: application/json" -H "User-Agent: python-neutronclient"
HTTP/1.1 500 Internal Server Error
Content-Type: application/json; charset=UTF-8
Content-Length: 88
Date: Mon, 18 Nov 2013 10:30:44 GMT

{"NeutronError": "Request Failed: internal server error while processing your request."}

Log:

2013-11-18 18:18:03.315 25570 DEBUG keystoneclient.middleware.auth_token [-] Received request from user: 54012987ac014457b9a0a8bcc10928ae with project_id : ed684e101d3243a69db07e744acad6f2 and roles: admin _build_user_headers /opt/stack/python-keystoneclient/keystoneclient/middleware/auth_token.py:922
2013-11-18 18:18:03.316 25570 DEBUG routes.middleware [-] Matched GET /network-gateways/3fe90063-9e96-45be-8989-335f582962be.json __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:100
2013-11-18 18:18:03.317 25570 DEBUG routes.middleware [-] Route path: '/network-gateways/:(id).:(format)', defaults: {'action': u'show', 'controller': <wsgify at 65809104 wrapping <function resource at 0x3ebbf50>>} __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:102
2013-11-18 18:18:03.317 25570 DEBUG routes.middleware [-] Match dict: {'action': u'show', 'controller': <wsgify at 65809104 wrapping <function resource at 0x3ebbf50>>, 'id': u'3fe90063-9e96-45be-8989-335f582962be', 'format': u'json'} __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:103
2013-11-18 18:18:03.324 25570 ERROR neutron.api.v2.resource [-] show failed
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource Traceback (most recent call last):
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/resource.py", line 84, in resource
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource result = method(request=request, **args)
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/base.py", line 290, in show
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource parent_id=parent_id),
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/base.py", line 258, in _item
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource obj = obj_getter(request.context, id, **kwargs)
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/plugins/nicira/NeutronPlugin.py", line 1951, in get_network_gateway
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource id, fields)
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/plugins/nicira/dbexts/nicira_networkgw_db.py", line 248, in get_network_gateway
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource gw_db = self._get_network_gateway(context, id)
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/plugins/nicira/dbexts/nicira_networkgw_db.py", line 133, in _get_network_gateway
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource return self._get_by_id(context, NetworkGateway, gw_id)
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/db_base_plugin_v2.py", line 145, in _get_by_id
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource return query.filter(model.id == id).one()
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2190, in one
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource raise orm_exc.NoResultFound("No row was found for one()")
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource NoResultFound: No row was found for one()
2013-11-18 18:18:03.324 25570 TRACE neutron.api.v2.resource
2013-11-18 18:18:05.061 25570 DEBUG neutron.openstack.common.rpc.amqp [-] received {u'_context_roles': [u'admin'], u'_msg_id': u'3ce98f89ac844d2a8d38e0ae231ff447', u'_context_read_deleted': u'no', u'_reply_q': u'reply_70a7a3f33d8f4417b5225404d435d264', u'_context_tenant_id': None, u'args': {u'devices': [u'tap3fc478a3-07', u'tapfa59a846-8b', u'tapba4de5a8-85']}, u'namespace': None, u'_unique_id': u'44f59887e1084f9898cdcc57d3bcff78', u'_context_is_admin': True, u'version': u'1.1', u'_context_project_id': None, u'_context_timestamp': u'2013-11-14 10:51:59.225787', u'_context_user_id': None, u'method': u'security_group_rules_for_devices'} _safe_log /opt/stack/neutron/neutron/openstack/common/rpc/common.py:276
2013-11-18 18:18:05.061 25570 DEBUG neutron.openstack.common.rpc.amqp [-] unpacked context: {'user_id': None, 'roles': [u'admin'], 'tenant_id': None, 'is_admin': True, 'timestamp': u'2013-11-14 10:51:59.225787', 'project_id': None, 'read_deleted': u'no'} _safe_log /opt/stack/neutron/neutron/openstack/common/rpc/common.py:276

Tags: nicira
Bo Lin (linb)
Changed in neutron:
assignee: nobody → berlin (linb)
tags: added: nicira
Bo Lin (linb)
Changed in neutron:
status: New → Confirmed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (master)

Fix proposed to branch: master
Review: https://review.openstack.org/58423

Changed in neutron:
status: Confirmed → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.openstack.org/58423
Committed: http://github.com/openstack/neutron/commit/68369fe6789d4ab053eb382458562394ce632de8
Submitter: Jenkins
Branch: master

commit 68369fe6789d4ab053eb382458562394ce632de8
Author: berlin <email address hidden>
Date: Tue Nov 26 09:02:27 2013 +0800

    Fix showing nonexistent NetworkGateway throws 500 instead of 404

    Change-Id: I5304bd52f7a5ae22fbc0d48206d7c1d282b34a91
    Closes-Bug: #1252921

Changed in neutron:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in neutron:
milestone: none → icehouse-1
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in neutron:
milestone: icehouse-1 → 2014.1
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.