Skip to content

Commit

Permalink
Instance log and console actions now go to detail tabs.
Browse files Browse the repository at this point in the history
Fixes bug 969630.

Change-Id: I28a591e5f765300f6a0bca021ef1fa802d277336
  • Loading branch information
gabrielhurley committed Apr 2, 2012
1 parent 47f4459 commit ca5ea82
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
16 changes: 14 additions & 2 deletions horizon/dashboards/nova/instances_and_volumes/instances/tables.py
Expand Up @@ -24,6 +24,8 @@
from horizon import tables
from horizon.templatetags import sizeformat

from .tabs import InstanceDetailTabs, LogTab, VNCTab


LOG = logging.getLogger(__name__)

Expand Down Expand Up @@ -158,22 +160,32 @@ def allowed(self, request, instance=None):
class ConsoleLink(tables.LinkAction):
name = "console"
verbose_name = _("VNC Console")
url = "horizon:nova:instances_and_volumes:instances:vnc"
url = "horizon:nova:instances_and_volumes:instances:detail"
classes = ("btn-console",)

def allowed(self, request, instance=None):
return instance.status in ACTIVE_STATES

def get_link_url(self, datum):
base_url = super(ConsoleLink, self).get_link_url(datum)
tab_query_string = VNCTab(InstanceDetailTabs).get_query_string()
return "?".join([base_url, tab_query_string])


class LogLink(tables.LinkAction):
name = "log"
verbose_name = _("View Log")
url = "horizon:nova:instances_and_volumes:instances:console"
url = "horizon:nova:instances_and_volumes:instances:detail"
classes = ("btn-log",)

def allowed(self, request, instance=None):
return instance.status in ACTIVE_STATES

def get_link_url(self, datum):
base_url = super(LogLink, self).get_link_url(datum)
tab_query_string = LogTab(InstanceDetailTabs).get_query_string()
return "?".join([base_url, tab_query_string])


class UpdateRow(tables.Row):
ajax = True
Expand Down
12 changes: 8 additions & 4 deletions horizon/tabs/base.py
Expand Up @@ -247,18 +247,19 @@ class Tab(html.HTMLElement):
preload = True
_active = None

def __init__(self, tab_group, request):
def __init__(self, tab_group, request=None):
super(Tab, self).__init__()
# Priority: constructor, class-defined, fallback
if not self.name:
raise ValueError("%s must have a name." % self.__class__.__name__)
self.name = unicode(self.name) # Force unicode.
if not self.slug:
raise ValueError("%s must have a slug." % self.__class__.__name__)
self.request = request
self.tab_group = tab_group
self._allowed = self.allowed(request)
self._enabled = self.enabled(request)
self.request = request
if request:
self._allowed = self.allowed(request)
self._enabled = self.enabled(request)

def __repr__(self):
return "<%s: %s>" % (self.__class__.__name__, self.slug)
Expand Down Expand Up @@ -314,6 +315,9 @@ def get_id(self):
"""
return SEPARATOR.join([self.tab_group.slug, self.slug])

def get_query_string(self):
return "=".join((self.tab_group.param_name, self.get_id()))

def get_default_classes(self):
"""
Returns a list of the default classes for the tab. Defaults to
Expand Down

0 comments on commit ca5ea82

Please sign in to comment.