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 }
Fix proposed to branch: master /review. openstack. org/327739
Review: https:/