Reviewed: https://review.openstack.org/272737 Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=5cc5a841109b082395d9664edcfc11e31fb678fa Submitter: Jenkins Branch: master
commit 5cc5a841109b082395d9664edcfc11e31fb678fa Author: Balazs Gibizer <[email protected]> Date: Tue Jan 26 22:10:12 2016 +0100 Return HTTP 400 for invalid server-group uuid Nova API checks that the value of the group scheduler hint shall be a valid server-group uuid, however it was done by custom code not jsonschema. Moreover the exception was not handled by the API so both v2.0 and v.2.1 returned HTTP 500 if the group hint wasn't a valid uuid of an existing server group. The custom code to check for the validity of the group uuid is kept in nova.compute.api as it is still needed in v2.0. In v2.0 InstanceGroupNotFound exception are now translated to HTTPBadRequest. In v2.1 the scheduler_hint jsonschema is now extended to check the format of the group hint and the api is now translates the InstanceGroupNotFound to HTTPBadRequest. Closes-bug: #1535759 Change-Id: I38d98c74f6cceed5b4becf9ed67f7189cba479fa ** Changed in: nova Status: In Progress => Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1535759 Title: Booting server with --hint group=group-name throws http 500 Status in OpenStack Compute (nova): Fix Released Bug description: It seems that nova expects and validates that the os:scheduler_hints group key contains an UUID. However if it is not a UUID HTTP 500 is returned instead of HTTP 400. This was visible in devstack with nova from master branch (b558d616c3b123dbe2a0914162b45765192f3a12) To reproduce: $ nova server-group-create affin-group-1 affinity +--------------------------------------+---------------+---------------+---------+----------+ | Id | Name | Policies | Members | Metadata | +--------------------------------------+---------------+---------------+---------+----------+ | b087079c-cfc8-4a7d-a578-ccfbb7a85cf5 | affin-group-1 | [u'affinity'] | [] | {} | +--------------------------------------+---------------+---------------+---------+----------+ nova --debug boot --flavor 42 --image cirros-0.3.4-x86_64-uec --hint group=affin-group-1 inst-1 <snip> DEBUG (session:225) REQ: curl -g -i -X POST http://192.168.200.200:8774/v2.1/91b11b772c4d400f9a44ab1bbfd4ddd8/servers -H "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-OpenStack-Nova-API-Version: 2.12" -H "X-Auth-Token: {SHA1}71a9fd700ffb3e625648e4423b3bd3c409d23246" -d '{"os:scheduler_hints": {"group": "affin-group-1"}, "server": {"min_count": 1, "flavorRef": "42", "name": "inst-1", "imageRef": "75a189fa-389b-4386-a731-a3bfccdfe352", "max_count": 1}}' DEBUG (connectionpool:387) "POST /v2.1/91b11b772c4d400f9a44ab1bbfd4ddd8/servers HTTP/1.1" 500 201 DEBUG (session:254) RESP: [500] Content-Length: 201 X-Compute-Request-Id: req-5a167ca6-6828-4724-ba7f-246202b0a9ec Vary: X-OpenStack-Nova-API-Version Connection: keep-alive X-Openstack-Nova-Api-Version: 2.12 Date: Tue, 05 Jan 2016 22:48:57 GMT Content-Type: application/json; charset=UTF-8 RESP BODY: {"computeFault": {"message": "Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.\n<class 'nova.exception.InvalidInput'>", "code": 500}} DEBUG (shell:896) Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible. <class 'nova.exception.InvalidInput'> (HTTP 500) (Request-ID: req-5a167ca6-6828-4724-ba7f-246202b0a9ec) Traceback (most recent call last): File "/opt/stack/python-novaclient/novaclient/shell.py", line 894, in main OpenStackComputeShell().main(argv) File "/opt/stack/python-novaclient/novaclient/shell.py", line 821, in main args.func(self.cs, args) File "/opt/stack/python-novaclient/novaclient/v2/shell.py", line 542, in do_boot server = cs.servers.create(*boot_args, **boot_kwargs) File "/opt/stack/python-novaclient/novaclient/v2/servers.py", line 1024, in create **boot_kwargs) File "/opt/stack/python-novaclient/novaclient/v2/servers.py", line 555, in _boot return_raw=return_raw, **kwargs) File "/opt/stack/python-novaclient/novaclient/base.py", line 175, in _create _resp, body = self.api.client.post(url, body=body) File "/usr/local/lib/python2.7/dist-packages/keystoneauth1/adapter.py", line 179, in post return self.request(url, 'POST', **kwargs) File "/opt/stack/python-novaclient/novaclient/client.py", line 92, in request raise exceptions.from_response(resp, body, url, method) ClientException: Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible. <class 'nova.exception.InvalidInput'> (HTTP 500) (Request-ID: req-5a167ca6-6828-4724-ba7f-246202b0a9ec) From the nova-api log: 2016-01-05 22:48:57.786 ERROR nova.api.openstack.extensions [req-5a167ca6-6828-4724-ba7f-246202b0a9ec admin admin] Unexpected exception in API method 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions Traceback (most recent call last): 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions File "/opt/stack/nova/nova/api/openstack/extensions.py", line 478, in wrapped 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions return f(*args, **kwargs) 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions File "/opt/stack/nova/nova/api/validation/__init__.py", line 73, in wrapper 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions return func(*args, **kwargs) 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions File "/opt/stack/nova/nova/api/validation/__init__.py", line 73, in wrapper 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions return func(*args, **kwargs) 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions File "/opt/stack/nova/nova/api/openstack/compute/servers.py", line 604, in create 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions **create_kwargs) 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions File "/opt/stack/nova/nova/hooks.py", line 149, in inner 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions rv = f(*args, **kwargs) 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions File "/opt/stack/nova/nova/compute/api.py", line 1504, in create 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions check_server_group_quota=check_server_group_quota) 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions File "/opt/stack/nova/nova/compute/api.py", line 1122, in _create_instance 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions scheduler_hints, check_server_group_quota) 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions File "/opt/stack/nova/nova/compute/api.py", line 1041, in _get_requested_instance_group 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions raise exception.InvalidInput(reason=msg) 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions InvalidInput: Invalid input received: Server group scheduler hint must be a UUID. 2016-01-05 22:48:57.786 TRACE nova.api.openstack.extensions To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1535759/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

