panel /project/volumes/ not usable when Cinder is listed in service catalog but it's not usable

Bug #1207636 reported by Christian Berendt
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Dashboard (Horizon)
Fix Released
Wishlist
Justin Pomeroy

Bug Description

There should be a nice message that the volumes are not usable at the moment. At the moment there's only the stack trace. That's not useful for the customers.

Revision history for this message
Kieran Spear (kspear) wrote :

Could you post the stack trace?

Revision history for this message
Victoria Martinez de la Cruz (vkmc) wrote :
Download full text (4.6 KiB)

This happens for all services that are listed but unavailable, not only for Cinder.

Displaying a nicer message would make sense if we do that for every other service listed in the service catalog, and I don't know how useful that would be since the trace makes clear that the requested service is unavailable.

Either way,

## Steps to reproduce

- Stop Cinder
- Try to access /project/volumes or /admin/volumes

## Traceback

Environment:

Request Method: GET
Request URL: http://localhost/project/volumes/

Django Version: 1.5.1
Python Version: 2.7.3
Installed Applications:
('openstack_dashboard',
 'django.contrib.contenttypes',
 'django.contrib.auth',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'compressor',
 'horizon',
 'openstack_dashboard.dashboards.project',
 'openstack_dashboard.dashboards.admin',
 'openstack_dashboard.dashboards.settings',
 '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',
 'horizon.middleware.HorizonMiddleware',
 'django.middleware.doc.XViewMiddleware',
 '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
  115. response = callback(request, *callback_args, **callback_kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/decorators.py" in dec
  38. return view_func(request, *args, **kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/decorators.py" in dec
  54. return view_func(request, *args, **kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/decorators.py" in dec
  38. return view_func(request, *args, **kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/decorators.py" in dec
  86. return view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in view
  68. return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
  86. return handler(request, *args, **kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tables/views.py" in get
  155. handled = self.construct_tables()
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tables/views.py" in construct_tables
  146. handled = self.handle_table(table)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tables/views.py" in handle_table
  118. data = self._get_data_dict()
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tables/views.py" in _get_data_dict
  182. self._data = {self.table_class._meta.name: self.get_data()}
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../openstack_dashboard/dashboards/proje...

Read more...

Changed in horizon:
status: New → Confirmed
Changed in horizon:
importance: Undecided → Wishlist
Revision history for this message
Christian Berendt (berendt) wrote :

You will not have stack traces in a productive environment. I would prefer a clear message that the backend service e.g Cinder is not usable at the moment.

Revision history for this message
Adam Young (ayoung) wrote :

This exact same problem happens if the service catalog returns Neutron, but the Neutron server is not reachable.

Horizon should not be hardcoded to one particular configuration. For example, there might be two different Nova instances, one of which has a Neutron instance for Networking, and one that is still on Nova networking. Which one a user should be working with should come of the service catalog specific to Nova. In addition, just because Neutron is not reachable does not mean that Horizon should crash. A user should be able to select a different project, and get a new token for that project, and carry on with their work.

I'd say this is more than just a wishlist item: it should be fixed in Juno.

Justin Pomeroy (jpomero)
Changed in horizon:
assignee: nobody → Justin Pomeroy (jpomero)
Changed in horizon:
status: Confirmed → In Progress
Revision history for this message
Justin Pomeroy (jpomero) wrote :
David Lyle (david-lyle)
Changed in horizon:
milestone: none → juno-2
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to horizon (master)

Reviewed: https://review.openstack.org/106101
Committed: https://git.openstack.org/cgit/openstack/horizon/commit/?id=407c17b38a05580ea2117e215efa86c541b584f6
Submitter: Jenkins
Branch: master

commit 407c17b38a05580ea2117e215efa86c541b584f6
Author: Justin Pomeroy <email address hidden>
Date: Thu Jul 10 11:28:06 2014 -0500

    Tolerate service catalog and endpoint connection errors

    This is a fix for the issues encountered when a service is not
    configured or a service endpoint is not reachable. This fix
    will add tolerance for these errors so that an error message is
    displayed but the dashboard page will still load, not an error page.
    This makes it easier for the user to recover by allowing them to
    go to a different page, select a different region, or logout. This
    makes sense in many cases such as when a region only contains an
    image service endpoint, or when a single endpoint is not reachable
    for whatever reason.

    It also adds permissions to the panels that require compute or
    image services so that the dashboard will not display them if
    the service is not configured.

    To test these changes you will need to set up your keystone service
    catalog so that not all services are available in all regions, or
    some of the service endpoints are not reachable.

    Change-Id: Ie04699d1fb1d4db13a7f4dcf1bdfd23bf21aab80
    Closes-Bug: 1323811
    Closes-Bug: 1207636

Changed in horizon:
status: In Progress → Fix Committed
Changed in horizon:
status: Fix Committed → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to horizon (stable/icehouse)

Fix proposed to branch: stable/icehouse
Review: https://review.openstack.org/109130

Thierry Carrez (ttx)
Changed in horizon:
milestone: juno-2 → 2014.2
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on horizon (stable/icehouse)

Change abandoned by Justin Pomeroy (<email address hidden>) on branch: stable/icehouse
Review: https://review.openstack.org/109130
Reason: I don't think this is going to be accepted for icehouse. No reason to keep it hanging around.

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.