Traceback on Nodes page

Bug #1441115 reported by Dariusz Smigiel
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
tuskar-ui
Fix Released
Undecided
Unassigned

Bug Description

When there are any Nodes registered at Infrastructure/Nodes page, page cannot be displayed.

Steps to reproduce:
1. Go to Infrastructure/Nodes page
2. Add some new Nodes
3. Again go to Infrastructure/Nodes page (should be autoreloaded)

Diagnose:
Nodes are missing info about CPUs, memory, etc.

> /root/tuskar-ui/tuskar_ui/infrastructure/nodes/tabs.py(43)get_context_data()
-> cpus = sum(int(node.cpus) for node in nodes if node.cpus)
(Pdb) nodes
[<Node: {'instance_uuid': None, 'provision_state': u'available', 'maintenance': False, 'uuid': u'38621595-d0a0-4497-b4bd-25f9fa7d9a31', 'power_state': u'power off'}>]

Traceback

Environment:

Request Method: GET
Request URL: http://10.237.154.48/infrastructure/nodes/

Django Version: 1.7
Python Version: 2.7.6
Installed Applications:
['openstack_dashboard.dashboards.project',
 'openstack_dashboard.dashboards.admin',
 'openstack_dashboard.dashboards.identity',
 'openstack_dashboard.dashboards.settings',
 'tuskar_ui.infrastructure',
 'openstack_dashboard',
 'django.contrib.contenttypes',
 'django.contrib.auth',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'django_pyscss',
 'openstack_dashboard.django_pyscss_fix',
 'compressor',
 'horizon',
 'openstack_auth']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.doc.XViewMiddleware',
 'horizon.middleware.HorizonMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')

Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/root/horizon/horizon/decorators.py" in dec
  36. return view_func(request, *args, **kwargs)
File "/root/horizon/horizon/decorators.py" in dec
  84. return view_func(request, *args, **kwargs)
File "/root/horizon/horizon/decorators.py" in dec
  52. return view_func(request, *args, **kwargs)
File "/root/horizon/horizon/decorators.py" in dec
  36. return view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in view
  69. return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
  87. return handler(request, *args, **kwargs)
File "/root/horizon/horizon/tabs/views.py" in get
  146. context = self.get_context_data(**kwargs)
File "/root/tuskar-ui/tuskar_ui/infrastructure/nodes/views.py" in get_context_data
  72. context = super(IndexView, self).get_context_data(**kwargs)
File "/root/tuskar-ui/tuskar_ui/infrastructure/views.py" in get_context_data
  25. context = super(ItemCountMixin, self).get_context_data(**kwargs)
File "/root/horizon/horizon/tables/views.py" in get_context_data
  107. context = super(MultiTableMixin, self).get_context_data(**kwargs)
File "/root/horizon/horizon/tabs/views.py" in get_context_data
  56. exceptions.handle(self.request)
File "/root/horizon/horizon/exceptions.py" in handle
  364. six.reraise(exc_type, exc_value, exc_traceback)
File "/root/horizon/horizon/tabs/views.py" in get_context_data
  54. context["tab_group"].load_tab_data()
File "/root/horizon/horizon/tabs/base.py" in load_tab_data
  128. exceptions.handle(self.request)
File "/root/horizon/horizon/exceptions.py" in handle
  364. six.reraise(exc_type, exc_value, exc_traceback)
File "/root/horizon/horizon/tabs/base.py" in load_tab_data
  125. tab._data = tab.get_context_data(self.request)
File "/root/tuskar-ui/tuskar_ui/infrastructure/nodes/tabs.py" in get_context_data
  42. cpus = sum(int(node.cpus) for node in nodes if node.cpus)
File "/root/tuskar-ui/tuskar_ui/infrastructure/nodes/tabs.py" in <genexpr>
  42. cpus = sum(int(node.cpus) for node in nodes if node.cpus)
File "/root/horizon/openstack_dashboard/api/base.py" in __getattribute__
  107. return object.__getattribute__(self, attr)
File "/root/tuskar-ui/tuskar_ui/cached_property.py" in __get__
  62. res = instance.__dict__[self.func.__name__] = self.func(instance)
File "/root/tuskar-ui/tuskar_ui/api/node.py" in cpus
  329. return self.properties.get('cpus', None)
File "/root/horizon/openstack_dashboard/api/base.py" in __getattribute__
  112. return getattr(self._apiresource, attr)
File "/usr/local/lib/python2.7/dist-packages/ironicclient/openstack/common/apiclient/base.py" in __getattr__
  480. raise AttributeError(k)

Exception Type: AttributeError at /infrastructure/nodes/
Exception Value: properties

Revision history for this message
Dariusz Smigiel (smigiel-dariusz) wrote :

Tested with OSP7 Director Beta2 which uses Tuskar-UI as frontend. This bug doesn't occur any longer.

Changed in tuskar-ui:
status: New → Fix Released
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.