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

Reply via email to