When instance has an attached volume, instance detail page errors.

Bug #971726 reported by Jake Dahn
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
OpenStack Dashboard (Horizon)
In Progress
Undecided
Anthony Young

Bug Description

Steps to reproduce:

    1. Launch an instance
    2. Attach volume to instance.
    3. Click instance title from instance list, to go to instance detail page.
    4. Page errors out.

Expected:

    1. Instance detail page displays a list of instance information, error free.

Actual:

    2. Instance detail page is not displayed.

Traceback:

http://stsh.me/1V5

Environment:

Request Method: GET
Request URL: http://essex-kvm.rcb.me/nova/instances_and_volumes/instances/e158b665-18b4-4862-bf7e-1ed6ce2a6e0a/detail

Django Version: 1.3
Python Version: 2.7.2
Installed Applications:
['openstack_dashboard',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django_nose',
 'horizon',
 'horizon.dashboards.nova',
 'horizon.dashboards.syspanel',
 'horizon.dashboards.settings']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'openstack_dashboard.middleware.DashboardLogUnhandledExceptionsMiddleware',
 'horizon.middleware.HorizonMiddleware',
 'django.middleware.doc.XViewMiddleware',
 'django.middleware.locale.LocaleMiddleware')

Template error:
In template /opt/stack/horizon/horizon/dashboards/nova/templates/nova/instances_and_volumes/instances/_detail_overview.html, error at line 82
   Caught NoReverseMatch while rendering: Reverse for 'detail' with arguments '('',)' and keyword arguments '{}' not found.
   72 : <dt>{% trans "Image Name" %}</dt>

   73 : <dd><a href="{{ image_url }}">{{ instance.image_name }}</a></dd>

   74 : </dl>

   75 : </div>

   76 :

   77 : <div class="volumes row-fluid">

   78 : <h4>{% trans "Volumes" %}</h4>

   79 : <hr class="header_rule">

   80 : {% if instance.volumes %}

   81 : <dl>

   82 : {% for volume in instance.volumes %}

   83 : <dt>{% trans "Volume" %}</dt>

   84 : <dd>

   85 : <a href="{% url horizon:nova:instances_and_volumes:volumes:detail volume.volume_id %}">

   86 : {{ volume.volume_id }}&nbsp;({{ volume.device }})

   87 : </a>

   88 : </dd>

   89 : {% endfor %}

   90 : </dl>

   91 : {% else %}

   92 : <ul>

Traceback:
File "/usr/lib/pymodules/python2.7/django/core/handlers/base.py" in get_response
  111. response = callback(request, *callback_args, **callback_kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/decorators.py" in dec
  40. return view_func(request, *args, **kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/decorators.py" in dec
  55. return view_func(request, *args, **kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/decorators.py" in dec
  40. return view_func(request, *args, **kwargs)
File "/usr/lib/pymodules/python2.7/django/views/generic/base.py" in view
  47. return self.dispatch(request, *args, **kwargs)
File "/usr/lib/pymodules/python2.7/django/views/generic/base.py" in dispatch
  68. return handler(request, *args, **kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tabs/views.py" in get
  61. return self.handle_tabbed_response(context["tab_group"], context)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tabs/views.py" in handle_tabbed_response
  57. return self.render_to_response(context)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tabs/views.py" in render_to_response
  70. response.render()
File "/usr/lib/pymodules/python2.7/django/template/response.py" in render
  96. self._set_content(self.rendered_content)
File "/usr/lib/pymodules/python2.7/django/template/response.py" in rendered_content
  75. content = template.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  123. return self._render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in _render
  117. return self.nodelist.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/loader_tags.py" in render
  127. return compiled_parent._render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in _render
  117. return self.nodelist.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/loader_tags.py" in render
  127. return compiled_parent._render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in _render
  117. return self.nodelist.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/loader_tags.py" in render
  64. result = block.nodelist.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/loader_tags.py" in render
  64. result = block.nodelist.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/loader_tags.py" in render
  64. result = block.nodelist.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render
  90. output = self.filter_expression.resolve(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in resolve
  510. obj = self.var.resolve(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in resolve
  653. value = self._resolve_lookup(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in _resolve_lookup
  698. current = current()
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tabs/base.py" in render
  173. return render_to_string(self.template_name, {"tab_group": self})
File "/usr/lib/pymodules/python2.7/django/template/loader.py" in render_to_string
  183. return t.render(Context(dictionary))
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  123. return self._render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in _render
  117. return self.nodelist.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/defaulttags.py" in render
  500. output = self.nodelist.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/defaulttags.py" in render
  311. return self.nodelist_true.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/defaulttags.py" in render
  227. nodelist.append(node.render(context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render
  90. output = self.filter_expression.resolve(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in resolve
  510. obj = self.var.resolve(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in resolve
  653. value = self._resolve_lookup(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in _resolve_lookup
  698. current = current()
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tabs/base.py" in render
  308. return render_to_string(self.get_template_name(self.request), context)
File "/usr/lib/pymodules/python2.7/django/template/loader.py" in render_to_string
  183. return t.render(Context(dictionary))
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  123. return self._render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in _render
  117. return self.nodelist.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/defaulttags.py" in render
  311. return self.nodelist_true.render(context)
File "/usr/lib/pymodules/python2.7/django/template/base.py" in render
  744. bits.append(self.render_node(node, context))
File "/usr/lib/pymodules/python2.7/django/template/debug.py" in render_node
  73. result = node.render(context)
File "/usr/lib/pymodules/python2.7/django/template/defaulttags.py" in render
  227. nodelist.append(node.render(context))
File "/usr/lib/pymodules/python2.7/django/template/defaulttags.py" in render
  450. raise e

Exception Type: TemplateSyntaxError at /nova/instances_and_volumes/instances/e158b665-18b4-4862-bf7e-1ed6ce2a6e0a/detail
Exception Value: Caught NoReverseMatch while rendering: Reverse for 'detail' with arguments '('',)' and keyword arguments '{}' not found.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to horizon (master)

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

Changed in horizon:
assignee: nobody → Anthony Young (sleepsonthefloor)
status: New → In Progress
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.