From 3bfd13cc20a79f405227d76e0893f9c057a13422 Mon Sep 17 00:00:00 2001 From: Zhenguo Niu Date: Fri, 5 May 2017 16:00:04 +0800 Subject: [PATCH] Add more columns to server table Change-Id: Ie38a0f17e490df4922928010ef1ed4b3aad91717 --- mogan_ui/api/mogan.py | 11 +++ mogan_ui/content/servers/tables.py | 69 ++++++++++++++++++- ...0_project_baremetal_compute_panel_group.py | 6 -- 3 files changed, 77 insertions(+), 9 deletions(-) diff --git a/mogan_ui/api/mogan.py b/mogan_ui/api/mogan.py index e9d48cb..d34b890 100644 --- a/mogan_ui/api/mogan.py +++ b/mogan_ui/api/mogan.py @@ -43,3 +43,14 @@ def server_list(request): """ server_manager = moganclient(request).server return server_manager.list(detailed=True, all_projects=False) + + +def server_get(request, server_id): + """Retrieve a list of servers. + + :param request: HTTP request. + :param server_id: The uuid of the server. + :return: Server object. + """ + server_manager = moganclient(request).server + return server_manager.get(server_id) diff --git a/mogan_ui/content/servers/tables.py b/mogan_ui/content/servers/tables.py index fa1491c..b6641e8 100644 --- a/mogan_ui/content/servers/tables.py +++ b/mogan_ui/content/servers/tables.py @@ -13,18 +13,79 @@ # See the License for the specific language governing permissions and # limitations under the License. +from django.template.defaultfilters import title +from django.utils.translation import pgettext_lazy from django.utils.translation import ugettext_lazy as _ +from mogan_ui.api import mogan + from horizon import tables +from horizon.utils import filters + + +class UpdateRow(tables.Row): + ajax = True + + def get_data(self, request, server_id): + server = mogan.server_get(request, server_id) + return server + + +STATUS_DISPLAY_CHOICES = ( + ("active", pgettext_lazy("Current status of a Server", u"Active")), + ("stopped", pgettext_lazy("Current status of a Server", u"Stopped")), + ("error", pgettext_lazy("Current status of a Server", u"Error")), + ("rebuilding", pgettext_lazy("Current status of a Server", + u"Rebuilding")), + ("building", pgettext_lazy("Current status of a Server", u"Building")), + ("powering-on", pgettext_lazy("Current status of a Server", + u"Powering On")), + ("powering-off", pgettext_lazy("Current status of a Server", + u"Powering Off")), + ("rebooting", pgettext_lazy("Current status of a Server", + u"Rebooting")), + ("deleting", pgettext_lazy("Current status of a Server", + u"Deleting")), + ("soft-powering-off", pgettext_lazy("Current status of a Server", + u"Soft Powering Off")), + ("soft-rebooting", pgettext_lazy("Current status of a Server", + u"Soft Rebooting")), + ("maintenance", pgettext_lazy("Current status of a Server", + u"Maintenance")), +) class ServersTable(tables.DataTable): - + STATUS_CHOICES = ( + ("active", True), + ("stopped", True), + ("building", None), + ("error", False), + ("maintenance", False), + ) name = tables.WrappingColumn( "name", - verbose_name=_("Name")) + verbose_name=_("Server Name")) + image = tables.Column("image_uuid", + verbose_name=_("Image")) + flavor = tables.Column("flavor_uuid", + sortable=False, + verbose_name=_("Flavor")) status = tables.Column("status", - verbose_name=_("Status")) + filters=(title, filters.replace_underscores), + verbose_name=_("Status"), + status=True, + status_choices=STATUS_CHOICES, + display_choices=STATUS_DISPLAY_CHOICES) + az = tables.Column("availability_zone", + verbose_name=_("Availability Zone")) + state = tables.Column("power_state", + verbose_name=_("Power State")) + created = tables.Column("created_at", + verbose_name=_("Time since created"), + filters=(filters.parse_isotime, + filters.timesince_sortable), + attrs={'data-type': 'timesince'}) def get_object_id(self, obj): return obj.uuid @@ -32,3 +93,5 @@ class ServersTable(tables.DataTable): class Meta(object): name = "servers" verbose_name = _("Servers") + status_columns = ["status"] + row_class = UpdateRow diff --git a/mogan_ui/enabled/_1810_project_baremetal_compute_panel_group.py b/mogan_ui/enabled/_1810_project_baremetal_compute_panel_group.py index 909a15e..6062750 100644 --- a/mogan_ui/enabled/_1810_project_baremetal_compute_panel_group.py +++ b/mogan_ui/enabled/_1810_project_baremetal_compute_panel_group.py @@ -20,9 +20,3 @@ PANEL_GROUP_NAME = _('Bare Metal Compute') PANEL_GROUP_DASHBOARD = 'project' ADD_INSTALLED_APPS = ['mogan_ui'] - -ADD_ANGULAR_MODULES = [ - 'horizon.dashboard.baremetal_compute' -] - -AUTO_DISCOVER_STATIC_FILES = True