creating a stack without a required param, fails correctly but leaves the stack created

Bug #1128486 reported by Angus Salkeld
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Heat
Grizzly
Invalid
Critical
Angus Salkeld

Bug Description

[1] So the below is correct:

 heat create lb -f /mnt/stack/heat/templates/HAProxy_Single_Instance.template -P "InstanceType=m1.small;KeyName=heat_key;LinuxDistribution=F17"
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/eventlet/wsgi.py", line 382, in handle_one_response
    result = self.application(self.environ, start_response)
  File "/usr/lib/python2.7/site-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/lib/python2.7/site-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/mnt/stack/heat/heat/common/wsgi.py", line 305, in __call__
    response = req.get_response(self.application)
  File "/usr/lib/python2.7/site-packages/webob/request.py", line 1296, in send
    application, catch_exc_info=False)
  File "/usr/lib/python2.7/site-packages/webob/request.py", line 1260, in call_application
    app_iter = application(self.environ, start_response)
  File "/mnt/stack/heat/heat/common/auth_token.py", line 176, in __call__
    return self.app(env, start_response)
  File "/usr/lib/python2.7/site-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/lib/python2.7/site-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/mnt/stack/heat/heat/common/wsgi.py", line 305, in __call__
    response = req.get_response(self.application)
  File "/usr/lib/python2.7/site-packages/webob/request.py", line 1296, in send
    application, catch_exc_info=False)
  File "/usr/lib/python2.7/site-packages/webob/request.py", line 1260, in call_application
    app_iter = application(self.environ, start_response)
  File "/usr/lib/python2.7/site-packages/webob/dec.py", line 144, in __call__
    return resp(environ, start_response)
  File "/usr/lib/python2.7/site-packages/routes/middleware.py", line 131, in __call__
    response = self.app(environ, start_response)
  File "/usr/lib/python2.7/site-packages/webob/dec.py", line 144, in __call__
    return resp(environ, start_response)
  File "/usr/lib/python2.7/site-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/lib/python2.7/site-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/mnt/stack/heat/heat/common/wsgi.py", line 559, in __call__
    request, **action_args)
  File "/mnt/stack/heat/heat/common/wsgi.py", line 601, in dispatch
    return method(*args, **kwargs)
  File "/mnt/stack/heat/heat/api/openstack/v1/util.py", line 30, in handle_stack_method
    return handler(controller, req, **kwargs)
  File "/mnt/stack/heat/heat/api/openstack/v1/stacks.py", line 154, in index
    stacks = self.engine.list_stacks(req.context)
  File "/mnt/stack/heat/heat/rpc/client.py", line 78, in list_stacks
    topic=_engine_topic(self.topic, ctxt, None))
  File "/mnt/stack/heat/heat/openstack/common/rpc/proxy.py", line 80, in call
    return rpc.call(context, self._get_topic(topic), msg, timeout)
  File "/mnt/stack/heat/heat/openstack/common/rpc/__init__.py", line 109, in call
    return _get_impl().call(cfg.CONF, context, topic, msg, timeout)
  File "/mnt/stack/heat/heat/openstack/common/rpc/impl_qpid.py", line 581, in call
    rpc_amqp.get_connection_pool(conf, Connection))
  File "/mnt/stack/heat/heat/openstack/common/rpc/amqp.py", line 379, in call
    rv = list(rv)
  File "/mnt/stack/heat/heat/openstack/common/rpc/amqp.py", line 347, in __iter__
    raise result
KeyError: u'u\'Missing parameter Instances\'\nTraceback (most recent call last):\n\n File "/mnt/stack/heat/heat/openstack/common/rpc/amqp.py", line 276, in _process_data\n rval = self.proxy.dispatch(ctxt, version, method, **args)\n\n File "/mnt/stack/heat/heat/openstack/common/rpc/dispatcher.py", line 133, in dispatch\n return getattr(proxyobj, method)(ctxt, **kwargs)\n\n File "/mnt/stack/heat/heat/engine/service.py", line 48, in wrapped\n return func(self, ctx, *args, **kwargs)\n\n File "/mnt/stack/heat/heat/engine/service.py", line 179, in list_stacks\n return list(format_stack_details(stacks))\n\n File "/mnt/stack/heat/heat/engine/service.py", line 176, in format_stack_details\n yield api.format_stack(stack)\n\n File "/mnt/stack/heat/heat/engine/api.py", line 66, in format_stack\n STACK_PARAMETERS: stack.parameters.map(str),\n\n File "/mnt/stack/heat/heat/engine/parameters.py", line 266, in map\n for n, p in self.params.iteritems() if filter_func(p))\n\n File "/mnt/stack/heat/heat/engine/parameters.py", line 266, in <genexpr>\n for n, p in self.params.iteritems() if filter_func(p))\n\n File "/mnt/stack/heat/heat/engine/parameters.py", line 115, in __str__\n value = self.value()\n\n File "/mnt/stack/heat/heat/engine/parameters.py", line 92, in value\n raise KeyError(\'Missing parameter %s\' % self.name)\n\nKeyError: u\'Missing parameter Instances\'\n'

[2] I try do the same thing but with the missing param

 heat create lb -f /mnt/stack/heat/templates/HAProxy_Single_Instance.template -P "InstanceType=m1.small;KeyName=heat_key;LinuxDistribution=F17;Instances=1.2.3.4,7.45.3.2"
409 Conflict

There was a conflict when trying to complete your request.

 Remote error: StackExists The Stack (lb) already exists. [u'Traceback (most recent call last):\n', u' File "/mnt/stack/heat/heat/openstack/common/rpc/amqp.py", line 276, in _process_data\n rval = self.proxy.dispatch(ctxt, version, method, **args)\n', u' File "/mnt/stack/heat/heat/openstack/common/rpc/dispatcher.py", line 133, in dispatch\n return getattr(proxyobj, method)(ctxt, **kwargs)\n', u' File "/mnt/stack/heat/heat/engine/service.py", line 48, in wrapped\n return func(self, ctx, *args, **kwargs)\n', u' File "/mnt/stack/heat/heat/engine/service.py", line 197, in create_stack\n raise exception.StackExists(stack_name=stack_name)\n', u'StackExists: The Stack (lb) already exists.\n'].

Oops, it was not cleaned up.

Angus Salkeld (asalkeld)
Changed in heat:
assignee: nobody → Angus Salkeld (asalkeld)
Steven Dake (sdake)
Changed in heat:
milestone: none → grizzly-3
importance: Undecided → High
Steven Dake (sdake)
no longer affects: heat
Revision history for this message
Angus Salkeld (asalkeld) wrote :

I have re-tested and it is no longer a problem. Must have been fixed along the way.

Revision history for this message
Angus Salkeld (asalkeld) wrote :

mm, not sure what state to push this to next, where is "already-fixed-off-to-have-a-beer"?

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.