← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1934853] [NEW] The instance action log for admin doesn't work if ANGULAR_FEATURES.users_panel is True

 

Public bug reported:

# Problem description

I'm using horizon of openstack wallaby on Ubuntu 20.04. I installed it
with devstack.

And I set ANGULAR_FEATURES.users_panel as True in local_settings.py. By
the way, the default value of ANGULAR_FEATURES.users_panel is False.

========
ANGULAR_FEATURES = {
    'images_panel': True,
    'key_pairs_panel': True,
    'flavors_panel': False,
    'domains_panel': False,
    'users_panel': True,
    'groups_panel': False,
    'roles_panel': True
}
========

As a result, the loading icon was kept spinning when I saw the following
action log panel for admin. I couldn't saw action logs.

Admin -> Compute -> Instances -> Click a instance -> Click "Action Log"

I confirmed that openstack queens cloud-archive of Ubuntu 18.04 has same
issue.

# My guess

The action log for admin shows operation performer's user id. I think
that it is relevant to users_panel.

# Error message

The following error messages appeared in the horizon log file.
(Ubuntu 20.04 + wallaby environment)

2021-07-07 05:14:59.566074 Traceback (most recent call last):
2021-07-07 05:14:59.566083   File "/usr/local/lib/python3.8/dist-packages/django/core/handlers/exception.py", line 34, in inner
2021-07-07 05:14:59.566094     response = get_response(request)
2021-07-07 05:14:59.566103   File "/usr/local/lib/python3.8/dist-packages/django/core/handlers/base.py", line 115, in _get_response
2021-07-07 05:14:59.566113     response = self.process_exception_by_middleware(e, request)
2021-07-07 05:14:59.566123   File "/usr/local/lib/python3.8/dist-packages/django/core/handlers/base.py", line 113, in _get_response
2021-07-07 05:14:59.566134     response = wrapped_callback(request, *callback_args, **callback_kwargs)
2021-07-07 05:14:59.566144   File "/opt/stack/horizon/horizon/decorators.py", line 52, in dec
2021-07-07 05:14:59.566153     return view_func(request, *args, **kwargs)
2021-07-07 05:14:59.566162   File "/opt/stack/horizon/horizon/decorators.py", line 36, in dec
2021-07-07 05:14:59.566172     return view_func(request, *args, **kwargs)
2021-07-07 05:14:59.566181   File "/opt/stack/horizon/horizon/decorators.py", line 36, in dec
2021-07-07 05:14:59.566190     return view_func(request, *args, **kwargs)
2021-07-07 05:14:59.566199   File "/opt/stack/horizon/horizon/decorators.py", line 112, in dec
2021-07-07 05:14:59.566209     return view_func(request, *args, **kwargs)
2021-07-07 05:14:59.566218   File "/opt/stack/horizon/horizon/decorators.py", line 84, in dec
2021-07-07 05:14:59.566228     return view_func(request, *args, **kwargs)
2021-07-07 05:14:59.566239   File "/usr/local/lib/python3.8/dist-packages/django/views/generic/base.py", line 71, in view
2021-07-07 05:14:59.566253     return self.dispatch(request, *args, **kwargs)
2021-07-07 05:14:59.566265   File "/usr/local/lib/python3.8/dist-packages/django/views/generic/base.py", line 97, in dispatch
2021-07-07 05:14:59.566278     return handler(request, *args, **kwargs)
2021-07-07 05:14:59.566287   File "/opt/stack/horizon/horizon/tabs/views.py", line 71, in get
2021-07-07 05:14:59.566297     return self.handle_tabbed_response(context["tab_group"], context)
2021-07-07 05:14:59.566307   File "/opt/stack/horizon/horizon/tabs/views.py", line 65, in handle_tabbed_response
2021-07-07 05:14:59.566334     return http.HttpResponse(tab_group.selected.render())
2021-07-07 05:14:59.566343   File "/opt/stack/horizon/horizon/tabs/base.py", line 375, in render
2021-07-07 05:14:59.566355     return render_to_string(self.get_template_name(self.request), context)
2021-07-07 05:14:59.566367   File "/usr/local/lib/python3.8/dist-packages/django/template/loader.py", line 62, in render_to_string
2021-07-07 05:14:59.566380     return template.render(context, request)
2021-07-07 05:14:59.566392   File "/usr/local/lib/python3.8/dist-packages/django/template/backends/django.py", line 61, in render
2021-07-07 05:14:59.566405     return self.template.render(context)
2021-07-07 05:14:59.566414   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 171, in render
2021-07-07 05:14:59.566424     return self._render(context)
2021-07-07 05:14:59.566433   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 163, in _render
2021-07-07 05:14:59.566443     return self.nodelist.render(context)
2021-07-07 05:14:59.566452   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.566462     bit = node.render_annotated(context)
2021-07-07 05:14:59.566472   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.566482     return self.render(context)
2021-07-07 05:14:59.566491   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 987, in render
2021-07-07 05:14:59.566502     output = self.filter_expression.resolve(context)
2021-07-07 05:14:59.566514   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 671, in resolve
2021-07-07 05:14:59.566527     obj = self.var.resolve(context)
2021-07-07 05:14:59.566538   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 796, in resolve
2021-07-07 05:14:59.566551     value = self._resolve_lookup(context)
2021-07-07 05:14:59.566561   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 858, in _resolve_lookup
2021-07-07 05:14:59.566586     current = current()
2021-07-07 05:14:59.566598   File "/opt/stack/horizon/horizon/tables/base.py", line 1419, in render
2021-07-07 05:14:59.566610     return table_template.render(extra_context, self.request)
2021-07-07 05:14:59.566621   File "/usr/local/lib/python3.8/dist-packages/django/template/backends/django.py", line 61, in render
2021-07-07 05:14:59.566632     return self.template.render(context)
2021-07-07 05:14:59.566641   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 171, in render
2021-07-07 05:14:59.566651     return self._render(context)
2021-07-07 05:14:59.566660   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 163, in _render
2021-07-07 05:14:59.566671     return self.nodelist.render(context)
2021-07-07 05:14:59.566680   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.566690     bit = node.render_annotated(context)
2021-07-07 05:14:59.566699   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.566709     return self.render(context)
2021-07-07 05:14:59.566718   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 513, in render
2021-07-07 05:14:59.566729     return self.nodelist.render(context)
2021-07-07 05:14:59.566738   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.566748     bit = node.render_annotated(context)
2021-07-07 05:14:59.566757   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.566768     return self.render(context)
2021-07-07 05:14:59.566776   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 513, in render
2021-07-07 05:14:59.566787     return self.nodelist.render(context)
2021-07-07 05:14:59.566816   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.566826     bit = node.render_annotated(context)
2021-07-07 05:14:59.566835   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.566846     return self.render(context)
2021-07-07 05:14:59.566855   File "/usr/local/lib/python3.8/dist-packages/django/template/loader_tags.py", line 53, in render
2021-07-07 05:14:59.566865     result = self.nodelist.render(context)
2021-07-07 05:14:59.566874   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.566884     bit = node.render_annotated(context)
2021-07-07 05:14:59.566893   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.566903     return self.render(context)
2021-07-07 05:14:59.566912   File "/usr/local/lib/python3.8/dist-packages/django/template/loader_tags.py", line 53, in render
2021-07-07 05:14:59.566923     result = self.nodelist.render(context)
2021-07-07 05:14:59.566932   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.566942     bit = node.render_annotated(context)
2021-07-07 05:14:59.566951   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.566987     return self.render(context)
2021-07-07 05:14:59.566999   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 209, in render
2021-07-07 05:14:59.567010     nodelist.append(node.render_annotated(context))
2021-07-07 05:14:59.567019   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.567029     return self.render(context)
2021-07-07 05:14:59.567038   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 987, in render
2021-07-07 05:14:59.567048     output = self.filter_expression.resolve(context)
2021-07-07 05:14:59.567060   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 671, in resolve
2021-07-07 05:14:59.567075     obj = self.var.resolve(context)
2021-07-07 05:14:59.567086   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 796, in resolve
2021-07-07 05:14:59.567098     value = self._resolve_lookup(context)
2021-07-07 05:14:59.567110   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 858, in _resolve_lookup
2021-07-07 05:14:59.567121     current = current()
2021-07-07 05:14:59.567132   File "/opt/stack/horizon/horizon/tables/base.py", line 668, in render
2021-07-07 05:14:59.567144     return render_to_string("horizon/common/_data_table_row.html",
2021-07-07 05:14:59.567157   File "/usr/local/lib/python3.8/dist-packages/django/template/loader.py", line 62, in render_to_string
2021-07-07 05:14:59.567170     return template.render(context, request)
2021-07-07 05:14:59.567180   File "/usr/local/lib/python3.8/dist-packages/django/template/backends/django.py", line 61, in render
2021-07-07 05:14:59.567191     return self.template.render(context)
2021-07-07 05:14:59.567200   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 171, in render
2021-07-07 05:14:59.567210     return self._render(context)
2021-07-07 05:14:59.567219   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 163, in _render
2021-07-07 05:14:59.567229     return self.nodelist.render(context)
2021-07-07 05:14:59.567238   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.567248     bit = node.render_annotated(context)
2021-07-07 05:14:59.567257   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.567268     return self.render(context)
2021-07-07 05:14:59.567276   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 398, in render
2021-07-07 05:14:59.567332     return strip_spaces_between_tags(self.nodelist.render(context).strip())
2021-07-07 05:14:59.567343   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.567354     bit = node.render_annotated(context)
2021-07-07 05:14:59.567363   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.567373     return self.render(context)
2021-07-07 05:14:59.567384   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 209, in render
2021-07-07 05:14:59.567397     nodelist.append(node.render_annotated(context))
2021-07-07 05:14:59.567409   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.567422     return self.render(context)
2021-07-07 05:14:59.567433   File "/usr/local/lib/python3.8/dist-packages/django/template/loader_tags.py", line 188, in render
2021-07-07 05:14:59.567443     return template.render(context)
2021-07-07 05:14:59.567452   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 173, in render
2021-07-07 05:14:59.567462     return self._render(context)
2021-07-07 05:14:59.567471   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 163, in _render
2021-07-07 05:14:59.567481     return self.nodelist.render(context)
2021-07-07 05:14:59.567491   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.567501     bit = node.render_annotated(context)
2021-07-07 05:14:59.567510   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.567520     return self.render(context)
2021-07-07 05:14:59.567531   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 309, in render
2021-07-07 05:14:59.567544     return nodelist.render(context)
2021-07-07 05:14:59.567555   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.567577     bit = node.render_annotated(context)
2021-07-07 05:14:59.567588   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.567601     return self.render(context)
2021-07-07 05:14:59.567612   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 309, in render
2021-07-07 05:14:59.567625     return nodelist.render(context)
2021-07-07 05:14:59.567637   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
2021-07-07 05:14:59.567647     bit = node.render_annotated(context)
2021-07-07 05:14:59.567656   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
2021-07-07 05:14:59.567667     return self.render(context)
2021-07-07 05:14:59.567676   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 987, in render
2021-07-07 05:14:59.567686     output = self.filter_expression.resolve(context)
2021-07-07 05:14:59.567695   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 671, in resolve
2021-07-07 05:14:59.567705     obj = self.var.resolve(context)
2021-07-07 05:14:59.567714   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 796, in resolve
2021-07-07 05:14:59.567724     value = self._resolve_lookup(context)
2021-07-07 05:14:59.567734   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 837, in _resolve_lookup
2021-07-07 05:14:59.567744     current = getattr(current, bit)
2021-07-07 05:14:59.567753   File "/opt/stack/horizon/horizon/utils/html.py", line 65, in attr_string
2021-07-07 05:14:59.567762     return flatatt(self.get_final_attrs())
2021-07-07 05:14:59.567771   File "/opt/stack/horizon/horizon/utils/html.py", line 43, in get_final_attrs
2021-07-07 05:14:59.567781     final_attrs['class'] = self.get_final_css()
2021-07-07 05:14:59.567800   File "/opt/stack/horizon/horizon/utils/html.py", line 51, in get_final_css
2021-07-07 05:14:59.567810     default = " ".join(self.get_default_classes())
2021-07-07 05:14:59.567819   File "/opt/stack/horizon/horizon/tables/base.py", line 867, in get_default_classes
2021-07-07 05:14:59.567829     if not self.url:
2021-07-07 05:14:59.567837   File "/opt/stack/horizon/horizon/tables/base.py", line 831, in url
2021-07-07 05:14:59.567847     url = self.column.get_link_url(self.datum)
2021-07-07 05:14:59.567856   File "/opt/stack/horizon/horizon/tables/base.py", line 474, in get_link_url
2021-07-07 05:14:59.567866     return self.link(datum)
2021-07-07 05:14:59.567875   File "/opt/stack/horizon/openstack_dashboard/dashboards/admin/instances/tables.py", line 218, in user_link
2021-07-07 05:14:59.567885     return urls.reverse("horizon:identity:users:detail",
2021-07-07 05:14:59.567895   File "/usr/local/lib/python3.8/dist-packages/django/urls/base.py", line 90, in reverse
2021-07-07 05:14:59.567905     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
2021-07-07 05:14:59.567915   File "/usr/local/lib/python3.8/dist-packages/django/urls/resolvers.py", line 673, in _reverse_with_prefix
2021-07-07 05:14:59.567933     raise NoReverseMatch(msg)
2021-07-07 05:14:59.567942 django.urls.exceptions.NoReverseMatch: Reverse for 'detail' not found. 'detail' is not a valid view function or pattern name.

** Affects: horizon
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Dashboard (Horizon).
https://bugs.launchpad.net/bugs/1934853

Title:
  The instance action log for admin doesn't work if
  ANGULAR_FEATURES.users_panel is True

Status in OpenStack Dashboard (Horizon):
  New

Bug description:
  # Problem description

  I'm using horizon of openstack wallaby on Ubuntu 20.04. I installed it
  with devstack.

  And I set ANGULAR_FEATURES.users_panel as True in local_settings.py.
  By the way, the default value of ANGULAR_FEATURES.users_panel is
  False.

  ========
  ANGULAR_FEATURES = {
      'images_panel': True,
      'key_pairs_panel': True,
      'flavors_panel': False,
      'domains_panel': False,
      'users_panel': True,
      'groups_panel': False,
      'roles_panel': True
  }
  ========

  As a result, the loading icon was kept spinning when I saw the
  following action log panel for admin. I couldn't saw action logs.

  Admin -> Compute -> Instances -> Click a instance -> Click "Action
  Log"

  I confirmed that openstack queens cloud-archive of Ubuntu 18.04 has
  same issue.

  # My guess

  The action log for admin shows operation performer's user id. I think
  that it is relevant to users_panel.

  # Error message

  The following error messages appeared in the horizon log file.
  (Ubuntu 20.04 + wallaby environment)

  2021-07-07 05:14:59.566074 Traceback (most recent call last):
  2021-07-07 05:14:59.566083   File "/usr/local/lib/python3.8/dist-packages/django/core/handlers/exception.py", line 34, in inner
  2021-07-07 05:14:59.566094     response = get_response(request)
  2021-07-07 05:14:59.566103   File "/usr/local/lib/python3.8/dist-packages/django/core/handlers/base.py", line 115, in _get_response
  2021-07-07 05:14:59.566113     response = self.process_exception_by_middleware(e, request)
  2021-07-07 05:14:59.566123   File "/usr/local/lib/python3.8/dist-packages/django/core/handlers/base.py", line 113, in _get_response
  2021-07-07 05:14:59.566134     response = wrapped_callback(request, *callback_args, **callback_kwargs)
  2021-07-07 05:14:59.566144   File "/opt/stack/horizon/horizon/decorators.py", line 52, in dec
  2021-07-07 05:14:59.566153     return view_func(request, *args, **kwargs)
  2021-07-07 05:14:59.566162   File "/opt/stack/horizon/horizon/decorators.py", line 36, in dec
  2021-07-07 05:14:59.566172     return view_func(request, *args, **kwargs)
  2021-07-07 05:14:59.566181   File "/opt/stack/horizon/horizon/decorators.py", line 36, in dec
  2021-07-07 05:14:59.566190     return view_func(request, *args, **kwargs)
  2021-07-07 05:14:59.566199   File "/opt/stack/horizon/horizon/decorators.py", line 112, in dec
  2021-07-07 05:14:59.566209     return view_func(request, *args, **kwargs)
  2021-07-07 05:14:59.566218   File "/opt/stack/horizon/horizon/decorators.py", line 84, in dec
  2021-07-07 05:14:59.566228     return view_func(request, *args, **kwargs)
  2021-07-07 05:14:59.566239   File "/usr/local/lib/python3.8/dist-packages/django/views/generic/base.py", line 71, in view
  2021-07-07 05:14:59.566253     return self.dispatch(request, *args, **kwargs)
  2021-07-07 05:14:59.566265   File "/usr/local/lib/python3.8/dist-packages/django/views/generic/base.py", line 97, in dispatch
  2021-07-07 05:14:59.566278     return handler(request, *args, **kwargs)
  2021-07-07 05:14:59.566287   File "/opt/stack/horizon/horizon/tabs/views.py", line 71, in get
  2021-07-07 05:14:59.566297     return self.handle_tabbed_response(context["tab_group"], context)
  2021-07-07 05:14:59.566307   File "/opt/stack/horizon/horizon/tabs/views.py", line 65, in handle_tabbed_response
  2021-07-07 05:14:59.566334     return http.HttpResponse(tab_group.selected.render())
  2021-07-07 05:14:59.566343   File "/opt/stack/horizon/horizon/tabs/base.py", line 375, in render
  2021-07-07 05:14:59.566355     return render_to_string(self.get_template_name(self.request), context)
  2021-07-07 05:14:59.566367   File "/usr/local/lib/python3.8/dist-packages/django/template/loader.py", line 62, in render_to_string
  2021-07-07 05:14:59.566380     return template.render(context, request)
  2021-07-07 05:14:59.566392   File "/usr/local/lib/python3.8/dist-packages/django/template/backends/django.py", line 61, in render
  2021-07-07 05:14:59.566405     return self.template.render(context)
  2021-07-07 05:14:59.566414   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 171, in render
  2021-07-07 05:14:59.566424     return self._render(context)
  2021-07-07 05:14:59.566433   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 163, in _render
  2021-07-07 05:14:59.566443     return self.nodelist.render(context)
  2021-07-07 05:14:59.566452   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.566462     bit = node.render_annotated(context)
  2021-07-07 05:14:59.566472   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.566482     return self.render(context)
  2021-07-07 05:14:59.566491   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 987, in render
  2021-07-07 05:14:59.566502     output = self.filter_expression.resolve(context)
  2021-07-07 05:14:59.566514   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 671, in resolve
  2021-07-07 05:14:59.566527     obj = self.var.resolve(context)
  2021-07-07 05:14:59.566538   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 796, in resolve
  2021-07-07 05:14:59.566551     value = self._resolve_lookup(context)
  2021-07-07 05:14:59.566561   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 858, in _resolve_lookup
  2021-07-07 05:14:59.566586     current = current()
  2021-07-07 05:14:59.566598   File "/opt/stack/horizon/horizon/tables/base.py", line 1419, in render
  2021-07-07 05:14:59.566610     return table_template.render(extra_context, self.request)
  2021-07-07 05:14:59.566621   File "/usr/local/lib/python3.8/dist-packages/django/template/backends/django.py", line 61, in render
  2021-07-07 05:14:59.566632     return self.template.render(context)
  2021-07-07 05:14:59.566641   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 171, in render
  2021-07-07 05:14:59.566651     return self._render(context)
  2021-07-07 05:14:59.566660   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 163, in _render
  2021-07-07 05:14:59.566671     return self.nodelist.render(context)
  2021-07-07 05:14:59.566680   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.566690     bit = node.render_annotated(context)
  2021-07-07 05:14:59.566699   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.566709     return self.render(context)
  2021-07-07 05:14:59.566718   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 513, in render
  2021-07-07 05:14:59.566729     return self.nodelist.render(context)
  2021-07-07 05:14:59.566738   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.566748     bit = node.render_annotated(context)
  2021-07-07 05:14:59.566757   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.566768     return self.render(context)
  2021-07-07 05:14:59.566776   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 513, in render
  2021-07-07 05:14:59.566787     return self.nodelist.render(context)
  2021-07-07 05:14:59.566816   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.566826     bit = node.render_annotated(context)
  2021-07-07 05:14:59.566835   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.566846     return self.render(context)
  2021-07-07 05:14:59.566855   File "/usr/local/lib/python3.8/dist-packages/django/template/loader_tags.py", line 53, in render
  2021-07-07 05:14:59.566865     result = self.nodelist.render(context)
  2021-07-07 05:14:59.566874   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.566884     bit = node.render_annotated(context)
  2021-07-07 05:14:59.566893   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.566903     return self.render(context)
  2021-07-07 05:14:59.566912   File "/usr/local/lib/python3.8/dist-packages/django/template/loader_tags.py", line 53, in render
  2021-07-07 05:14:59.566923     result = self.nodelist.render(context)
  2021-07-07 05:14:59.566932   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.566942     bit = node.render_annotated(context)
  2021-07-07 05:14:59.566951   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.566987     return self.render(context)
  2021-07-07 05:14:59.566999   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 209, in render
  2021-07-07 05:14:59.567010     nodelist.append(node.render_annotated(context))
  2021-07-07 05:14:59.567019   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.567029     return self.render(context)
  2021-07-07 05:14:59.567038   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 987, in render
  2021-07-07 05:14:59.567048     output = self.filter_expression.resolve(context)
  2021-07-07 05:14:59.567060   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 671, in resolve
  2021-07-07 05:14:59.567075     obj = self.var.resolve(context)
  2021-07-07 05:14:59.567086   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 796, in resolve
  2021-07-07 05:14:59.567098     value = self._resolve_lookup(context)
  2021-07-07 05:14:59.567110   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 858, in _resolve_lookup
  2021-07-07 05:14:59.567121     current = current()
  2021-07-07 05:14:59.567132   File "/opt/stack/horizon/horizon/tables/base.py", line 668, in render
  2021-07-07 05:14:59.567144     return render_to_string("horizon/common/_data_table_row.html",
  2021-07-07 05:14:59.567157   File "/usr/local/lib/python3.8/dist-packages/django/template/loader.py", line 62, in render_to_string
  2021-07-07 05:14:59.567170     return template.render(context, request)
  2021-07-07 05:14:59.567180   File "/usr/local/lib/python3.8/dist-packages/django/template/backends/django.py", line 61, in render
  2021-07-07 05:14:59.567191     return self.template.render(context)
  2021-07-07 05:14:59.567200   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 171, in render
  2021-07-07 05:14:59.567210     return self._render(context)
  2021-07-07 05:14:59.567219   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 163, in _render
  2021-07-07 05:14:59.567229     return self.nodelist.render(context)
  2021-07-07 05:14:59.567238   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.567248     bit = node.render_annotated(context)
  2021-07-07 05:14:59.567257   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.567268     return self.render(context)
  2021-07-07 05:14:59.567276   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 398, in render
  2021-07-07 05:14:59.567332     return strip_spaces_between_tags(self.nodelist.render(context).strip())
  2021-07-07 05:14:59.567343   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.567354     bit = node.render_annotated(context)
  2021-07-07 05:14:59.567363   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.567373     return self.render(context)
  2021-07-07 05:14:59.567384   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 209, in render
  2021-07-07 05:14:59.567397     nodelist.append(node.render_annotated(context))
  2021-07-07 05:14:59.567409   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.567422     return self.render(context)
  2021-07-07 05:14:59.567433   File "/usr/local/lib/python3.8/dist-packages/django/template/loader_tags.py", line 188, in render
  2021-07-07 05:14:59.567443     return template.render(context)
  2021-07-07 05:14:59.567452   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 173, in render
  2021-07-07 05:14:59.567462     return self._render(context)
  2021-07-07 05:14:59.567471   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 163, in _render
  2021-07-07 05:14:59.567481     return self.nodelist.render(context)
  2021-07-07 05:14:59.567491   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.567501     bit = node.render_annotated(context)
  2021-07-07 05:14:59.567510   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.567520     return self.render(context)
  2021-07-07 05:14:59.567531   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 309, in render
  2021-07-07 05:14:59.567544     return nodelist.render(context)
  2021-07-07 05:14:59.567555   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.567577     bit = node.render_annotated(context)
  2021-07-07 05:14:59.567588   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.567601     return self.render(context)
  2021-07-07 05:14:59.567612   File "/usr/local/lib/python3.8/dist-packages/django/template/defaulttags.py", line 309, in render
  2021-07-07 05:14:59.567625     return nodelist.render(context)
  2021-07-07 05:14:59.567637   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 937, in render
  2021-07-07 05:14:59.567647     bit = node.render_annotated(context)
  2021-07-07 05:14:59.567656   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 904, in render_annotated
  2021-07-07 05:14:59.567667     return self.render(context)
  2021-07-07 05:14:59.567676   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 987, in render
  2021-07-07 05:14:59.567686     output = self.filter_expression.resolve(context)
  2021-07-07 05:14:59.567695   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 671, in resolve
  2021-07-07 05:14:59.567705     obj = self.var.resolve(context)
  2021-07-07 05:14:59.567714   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 796, in resolve
  2021-07-07 05:14:59.567724     value = self._resolve_lookup(context)
  2021-07-07 05:14:59.567734   File "/usr/local/lib/python3.8/dist-packages/django/template/base.py", line 837, in _resolve_lookup
  2021-07-07 05:14:59.567744     current = getattr(current, bit)
  2021-07-07 05:14:59.567753   File "/opt/stack/horizon/horizon/utils/html.py", line 65, in attr_string
  2021-07-07 05:14:59.567762     return flatatt(self.get_final_attrs())
  2021-07-07 05:14:59.567771   File "/opt/stack/horizon/horizon/utils/html.py", line 43, in get_final_attrs
  2021-07-07 05:14:59.567781     final_attrs['class'] = self.get_final_css()
  2021-07-07 05:14:59.567800   File "/opt/stack/horizon/horizon/utils/html.py", line 51, in get_final_css
  2021-07-07 05:14:59.567810     default = " ".join(self.get_default_classes())
  2021-07-07 05:14:59.567819   File "/opt/stack/horizon/horizon/tables/base.py", line 867, in get_default_classes
  2021-07-07 05:14:59.567829     if not self.url:
  2021-07-07 05:14:59.567837   File "/opt/stack/horizon/horizon/tables/base.py", line 831, in url
  2021-07-07 05:14:59.567847     url = self.column.get_link_url(self.datum)
  2021-07-07 05:14:59.567856   File "/opt/stack/horizon/horizon/tables/base.py", line 474, in get_link_url
  2021-07-07 05:14:59.567866     return self.link(datum)
  2021-07-07 05:14:59.567875   File "/opt/stack/horizon/openstack_dashboard/dashboards/admin/instances/tables.py", line 218, in user_link
  2021-07-07 05:14:59.567885     return urls.reverse("horizon:identity:users:detail",
  2021-07-07 05:14:59.567895   File "/usr/local/lib/python3.8/dist-packages/django/urls/base.py", line 90, in reverse
  2021-07-07 05:14:59.567905     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
  2021-07-07 05:14:59.567915   File "/usr/local/lib/python3.8/dist-packages/django/urls/resolvers.py", line 673, in _reverse_with_prefix
  2021-07-07 05:14:59.567933     raise NoReverseMatch(msg)
  2021-07-07 05:14:59.567942 django.urls.exceptions.NoReverseMatch: Reverse for 'detail' not found. 'detail' is not a valid view function or pattern name.

To manage notifications about this bug go to:
https://bugs.launchpad.net/horizon/+bug/1934853/+subscriptions