Created attachment 1074378 [details] heat cli.out Description of problem: if updated_time was set to Null, parse_isotime will raise an exception Version-Release number of selected component (if applicable): python-django-horizon-2013.2.3-3.el6ost.noarch openstack-heat-api-2014.1.4-1.el6ost.noarch python-heatclient-0.2.9-1.el6ost.noarch openstack-heat-common-2014.1.4-1.el6ost.noarch openstack-heat-api-cloudwatch-2014.1.4-1.el6ost.noarch openstack-heat-engine-2014.1.4-1.el6ost.noarch openstack-heat-templates-0-0.3.20140407git.el6ost.noarch openstack-heat-api-cfn-2014.1.4-1.el6ost.noarch How reproducible: all the time Steps to Reproduce: 1. find in the database a network element that has no updated_time set ( set to Null) 2. try to display the stacks for a tenant affected. Actual results: [Wed Sep 16 09:36:07 2015] [error] HTTP/1.1 200 OK [Wed Sep 16 09:36:07 2015] [error] date: Wed, 16 Sep 2015 09:36:07 GMT [Wed Sep 16 09:36:07 2015] [error] content-length: 3151 [Wed Sep 16 09:36:07 2015] [error] content-type: application/json; charset=UTF-8 [Wed Sep 16 09:36:07 2015] [error] [Wed Sep 16 09:36:07 2015] [error] {"stacks": [{"description": "Network template\\n", "links": [{"href": "https://ost-controller-lb-del.service-l.dsn.inet:8004/v1/9f5e58afbe4843cf80fa801a191021fc/stacks/network/d7d22045-c3e3-4c09-9912-19d2967e8566", "rel": "self"}], "stack_status_reason": "Resource CREATE failed: OverLimit: 409-{u'NeutronError': {u'message': u\\"Quota exceeded for resources: ['security_group']\\", u'type': u'OverQuota', u'detail': u''}} (HTTP 413) (Request-ID: req-e701860a-cbbb-4d80-8ed5-160679f7c228)", "stack_name": "network", "creation_time": "2015-07-09T15:38:25Z", "updated_time": null, "stack_status": "CREATE_FAILED", "id": "d7d22045-c3e3-4c09-9912-19d2967e8566"}, {"description": "Mongo Stack PhoneDrive Pre\\n", "links": [{"href": "https://ost-controller-lb-del.service-l.dsn.inet:8004/v1/9f5e58afbe4843cf80fa801a191021fc/stacks/stack_pre_mongo/be13983c-93dc-417f-b37e-d3eadbcf2fc6", "rel": "self"}], "stack_status_reason": "Stack create completed successfully", "stack_name": "stack_pre_mongo", "creation_time": "2015-06-08T11:07:34Z", "updated_time": "2015-06-08T11:08:35Z", "stack_status": "CREATE_COMPLETE", "id": "be13983c-93dc-417f-b37e-d3eadbcf2fc6"}, {"description": "Web PhoneDrive Pre\\n", "links": [{"href": "https://ost-controller-lb-del.service-l.dsn.inet:8004/v1/9f5e58afbe4843cf80fa801a191021fc/stacks/stack_pre_web/83c590b6-fc50-48ed-b982-49d45cbe3893", "rel": "self"}], "stack_status_reason": "Stack create completed successfully", "stack_name": "stack_pre_web", "creation_time": "2015-05-29T12:56:24Z", "updated_time": "2015-05-29T12:56:45Z", "stack_status": "CREATE_COMPLETE", "id": "83c590b6-fc50-48ed-b982-49d45cbe3893"}, {"description": "Loadbalancer PhoneDrive Pre\\n", "links": [{"href": "https://ost-controller-lb-del.service-l.dsn.inet:8004/v1/9f5e58afbe4843cf80fa801a191021fc/stacks/stack_pre_loadbalancer/85e44502-cdc6-494a-8308-284e2ddb3615", "rel": "self"}], "stack_status_reason": "Stack create completed successfully", "stack_name": "stack_pre_loadbalancer", "creation_time": "2015-05-18T15:46:02Z", "updated_time": "2015-05-18T15:46:39Z", "stack_status": "CREATE_COMPLETE", "id": "85e44502-cdc6-494a-8308-284e2ddb3615"}, {"description": "PhoneDrive BackOffice Resources\\n", "links": [{"href": "https://ost-controller-lb-del.service-l.dsn.inet:8004/v1/9f5e58afbe4843cf80fa801a191021fc/stacks/BackOffice_del_pre/acca9718-17e7-4439-b74b-446449b424ae", "rel": "self"}], "stack_status_reason": "Stack create completed successfully", "stack_name": "BackOffice_del_pre", "creation_time": "2015-03-10T17:10:50Z", "updated_time": "2015-03-10T17:11:09Z", "stack_status": "CREATE_COMPLETE", "id": "acca9718-17e7-4439-b74b-446449b424ae"}, {"description": "PhoneDrive Neutron Resources", "links": [{"href": "https://ost-controller-lb-del.service-l.dsn.inet:8004/v1/9f5e58afbe4843cf80fa801a191021fc/stacks/PhoneDrive_NetWork/f10eb4d3-2073-4b96-ae22-637e50501ceb", "rel": "self"}], "stack_status_reason": "Stack create completed successfully", "stack_name": "PhoneDrive_NetWork", "creation_time": "2015-01-28T17:38:36Z", "updated_time": "2015-01-28T17:38:42Z", "stack_status": "CREATE_COMPLETE", "id": "f10eb4d3-2073-4b96-ae22-637e50501ceb"}]} [Wed Sep 16 09:36:07 2015] [error] [Wed Sep 16 09:36:07 2015] [error] Error while rendering table rows. [Wed Sep 16 09:36:07 2015] [error] Traceback (most recent call last): [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/tables/base.py", line 1360, in get_rows [Wed Sep 16 09:36:07 2015] [error] row = self._meta.row_class(self, datum) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/tables/base.py", line 438, in __init__ [Wed Sep 16 09:36:07 2015] [error] self.load_cells() [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/tables/base.py", line 475, in load_cells [Wed Sep 16 09:36:07 2015] [error] data = column.get_data(datum) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/tables/base.py", line 319, in get_data [Wed Sep 16 09:36:07 2015] [error] data = filter_func(data) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/utils/filters.py", line 36, in parse_isotime [Wed Sep 16 09:36:07 2015] [error] raise ValueError(e.message) [Wed Sep 16 09:36:07 2015] [error] ValueError: Expecting a string None [Wed Sep 16 09:36:07 2015] [error] Internal Server Error: /project/stacks/ [Wed Sep 16 09:36:07 2015] [error] Traceback (most recent call last): [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 136, in get_response [Wed Sep 16 09:36:07 2015] [error] response = response.render() [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/response.py", line 104, in render [Wed Sep 16 09:36:07 2015] [error] self._set_content(self.rendered_content) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/response.py", line 81, in rendered_content [Wed Sep 16 09:36:07 2015] [error] content = template.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 140, in render [Wed Sep 16 09:36:07 2015] [error] return self._render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 134, in _render [Wed Sep 16 09:36:07 2015] [error] return self.nodelist.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 823, in render [Wed Sep 16 09:36:07 2015] [error] bit = self.render_node(node, context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 837, in render_node [Wed Sep 16 09:36:07 2015] [error] return node.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/loader_tags.py", line 123, in render [Wed Sep 16 09:36:07 2015] [error] return compiled_parent._render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 134, in _render [Wed Sep 16 09:36:07 2015] [error] return self.nodelist.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 823, in render [Wed Sep 16 09:36:07 2015] [error] bit = self.render_node(node, context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 837, in render_node [Wed Sep 16 09:36:07 2015] [error] return node.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/loader_tags.py", line 62, in render [Wed Sep 16 09:36:07 2015] [error] result = block.nodelist.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 823, in render [Wed Sep 16 09:36:07 2015] [error] bit = self.render_node(node, context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 837, in render_node [Wed Sep 16 09:36:07 2015] [error] return node.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/loader_tags.py", line 62, in render [Wed Sep 16 09:36:07 2015] [error] result = block.nodelist.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 823, in render [Wed Sep 16 09:36:07 2015] [error] bit = self.render_node(node, context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 837, in render_node [Wed Sep 16 09:36:07 2015] [error] return node.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 874, in render [Wed Sep 16 09:36:07 2015] [error] output = self.filter_expression.resolve(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 571, in resolve [Wed Sep 16 09:36:07 2015] [error] obj = self.var.resolve(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 721, in resolve [Wed Sep 16 09:36:07 2015] [error] value = self._resolve_lookup(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 772, in _resolve_lookup [Wed Sep 16 09:36:07 2015] [error] current = current() [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/tables/base.py", line 1021, in render [Wed Sep 16 09:36:07 2015] [error] return table_template.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 140, in render [Wed Sep 16 09:36:07 2015] [error] return self._render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 134, in _render [Wed Sep 16 09:36:07 2015] [error] return self.nodelist.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 823, in render [Wed Sep 16 09:36:07 2015] [error] bit = self.render_node(node, context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 837, in render_node [Wed Sep 16 09:36:07 2015] [error] return node.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/defaulttags.py", line 478, in render [Wed Sep 16 09:36:07 2015] [error] output = self.nodelist.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 823, in render [Wed Sep 16 09:36:07 2015] [error] bit = self.render_node(node, context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 837, in render_node [Wed Sep 16 09:36:07 2015] [error] return node.render(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/defaulttags.py", line 476, in render [Wed Sep 16 09:36:07 2015] [error] self.extra_context.iteritems()]) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 571, in resolve [Wed Sep 16 09:36:07 2015] [error] obj = self.var.resolve(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 721, in resolve [Wed Sep 16 09:36:07 2015] [error] value = self._resolve_lookup(context) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/django/template/base.py", line 772, in _resolve_lookup [Wed Sep 16 09:36:07 2015] [error] current = current() [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/tables/base.py", line 1360, in get_rows [Wed Sep 16 09:36:07 2015] [error] row = self._meta.row_class(self, datum) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/tables/base.py", line 438, in __init__ [Wed Sep 16 09:36:07 2015] [error] self.load_cells() [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/tables/base.py", line 475, in load_cells [Wed Sep 16 09:36:07 2015] [error] data = column.get_data(datum) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/tables/base.py", line 319, in get_data [Wed Sep 16 09:36:07 2015] [error] data = filter_func(data) [Wed Sep 16 09:36:07 2015] [error] File "/usr/lib/python2.6/site-packages/horizon/utils/filters.py", line 36, in parse_isotime [Wed Sep 16 09:36:07 2015] [error] raise ValueError(e.message) [Wed Sep 16 09:36:07 2015] [error] TemplateSyntaxError: Expecting a string None Expected results: Display of the stack even through updated_time is null Additional info: - heat command line tools do not have this issue (see attachment) - Heat on RHOS4.0 but Horizon in RHOS5.0