Incorrect handling json-type param for properties

Bug #1585915 reported by Peter Razumovsky
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Heat
Invalid
Medium
Peter Razumovsky

Bug Description

If I specify properties with json-type parameter, heat raises error:

2016-05-26 10:28:11.339 ERROR oslo_messaging.rpc.server [req-7b3dc60e-229b-462b-8293-70ce6e4477b7 None demo] Exception during handling message
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server Traceback (most recent call last):
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/server.py", line 133, in _process_incoming
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server res = self.dispatcher.dispatch(message)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 153, in dispatch
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server return self._do_dispatch(endpoint, method, ctxt, args)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 122, in _do_dispatch
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server result = func(ctxt, **new_args)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 147, in wrapper
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server return f(*args, **kwargs)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/common/context.py", line 329, in wrapped
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server return func(self, ctx, *args, **kwargs)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/service.py", line 809, in create_stack
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server template_id)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/service.py", line 684, in _parse_template_and_validate_stack
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server stack.validate()
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 147, in wrapper
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server return f(*args, **kwargs)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/stack.py", line 744, in validate
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server set(six.iterkeys(self)))
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/six.py", line 593, in iterkeys
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server return d.iterkeys(**kw)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/usr/lib/python2.7/_abcoll.py", line 377, in iterkeys
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server return iter(self)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/stack.py", line 635, in __iter__
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server return iter(self.resources)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/stack.py", line 291, in resources
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server return self._find_resources()
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/stack.py", line 300, in _find_resources
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server for (name, data) in res_defns.items())
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/stack.py", line 300, in <genexpr>
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server for (name, data) in res_defns.items())
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/resources/openstack/nova/server.py", line 655, in __init__
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server if self.user_data_software_config():
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/resources/openstack/nova/server.py", line 802, in user_data_software_config
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server self.USER_DATA_FORMAT] == self.SOFTWARE_CONFIG
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/properties.py", line 453, in __getitem__
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server return self._get_property_value(key)
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server File "/opt/stack/heat/heat/engine/properties.py", line 445, in _get_property_value
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server if key in self.data:
2016-05-26 10:28:11.339 TRACE oslo_messaging.rpc.server TypeError: argument of type 'GetParam' is not iterable
2016-05-26 10:28:11.401 ERROR oslo_messaging._drivers.common [req-7b3dc60e-229b-462b-8293-70ce6e4477b7 None demo] Returning exception argument of type 'GetParam' is not iterable to caller
2016-05-26 10:28:11.401 ERROR oslo_messaging._drivers.common [req-7b3dc60e-229b-462b-8293-70ce6e4477b7 None demo] ['Traceback (most recent call last):\n', ' File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/server.py", line 133, in _process_incoming\n res = self.dispatcher.dispatch(message)\n', ' File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 153, in dispatch\n return self._do_dispatch(endpoint, method, ctxt, args)\n', ' File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 122, in _do_dispatch\n result = func(ctxt, **new_args)\n', ' File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 147, in wrapper\n return f(*args, **kwargs)\n', ' File "/opt/stack/heat/heat/common/context.py", line 329, in wrapped\n return func(self, ctx, *args, **kwargs)\n', ' File "/opt/stack/heat/heat/engine/service.py", line 809, in create_stack\n template_id)\n', ' File "/opt/stack/heat/heat/engine/service.py", line 684, in _parse_template_and_validate_stack\n stack.validate()\n', ' File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 147, in wrapper\n return f(*args, **kwargs)\n', ' File "/opt/stack/heat/heat/engine/stack.py", line 744, in validate\n set(six.iterkeys(self)))\n', ' File "/usr/local/lib/python2.7/dist-packages/six.py", line 593, in iterkeys\n return d.iterkeys(**kw)\n', ' File "/usr/lib/python2.7/_abcoll.py", line 377, in iterkeys\n return iter(self)\n', ' File "/opt/stack/heat/heat/engine/stack.py", line 635, in __iter__\n return iter(self.resources)\n', ' File "/opt/stack/heat/heat/engine/stack.py", line 291, in resources\n return self._find_resources()\n', ' File "/opt/stack/heat/heat/engine/stack.py", line 300, in _find_resources\n for (name, data) in res_defns.items())\n', ' File "/opt/stack/heat/heat/engine/stack.py", line 300, in <genexpr>\n for (name, data) in res_defns.items())\n', ' File "/opt/stack/heat/heat/engine/resources/openstack/nova/server.py", line 655, in __init__\n if self.user_data_software_config():\n', ' File "/opt/stack/heat/heat/engine/resources/openstack/nova/server.py", line 802, in user_data_software_config\n self.USER_DATA_FORMAT] == self.SOFTWARE_CONFIG\n', ' File "/opt/stack/heat/heat/engine/properties.py", line 453, in __getitem__\n return self._get_property_value(key)\n', ' File "/opt/stack/heat/heat/engine/properties.py", line 445, in _get_property_value\n if key in self.data:\n', "TypeError: argument of type 'GetParam' is not iterable\n"]

This is reproduced on next template:
heat_template_version: 2016-10-14

parameters:
  json:
    type: json
resources:
  none:
    type: OS::Nova::Server
    properties: { get_param: json }

Changed in heat:
importance: Undecided → Medium
assignee: nobody → Peter Razumovsky (prazumovsky)
milestone: none → newton-1
Rabi Mishra (rabi)
Changed in heat:
milestone: newton-1 → newton-2
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to heat (master)

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

Changed in heat:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on heat (master)

Change abandoned by Peter Razumovsky (<email address hidden>) on branch: master
Review: https://review.openstack.org/327739
Reason: No. This just not works.

Thomas Herve (therve)
Changed in heat:
milestone: newton-2 → newton-3
Changed in heat:
milestone: newton-3 → ongoing
Changed in heat:
status: In Progress → Triaged
Zane Bitter (zaneb)
Changed in heat:
status: Triaged → Invalid
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.