diff --git a/mogan_ui/api/mogan.py b/mogan_ui/api/mogan.py
index 44ebbe2..c207696 100644
--- a/mogan_ui/api/mogan.py
+++ b/mogan_ui/api/mogan.py
@@ -42,7 +42,11 @@ def server_list(request):
:return: A list of servers.
"""
server_manager = moganclient(request).server
- return server_manager.list(detailed=True, all_projects=False)
+ servers = server_manager.list(detailed=True, all_projects=False)
+ for server in servers:
+ full_flavor = flavor_get(request, server.flavor_uuid)
+ server.full_flavor = full_flavor
+ return servers
def server_create(request, name, image, flavor, nics, availability_zone,
@@ -69,7 +73,10 @@ def server_get(request, server_id):
:return: Server object.
"""
server_manager = moganclient(request).server
- return server_manager.get(server_id)
+ server = server_manager.get(server_id)
+ full_flavor = flavor_get(request, server.flavor_uuid)
+ server.full_flavor = full_flavor
+ return server
def server_delete(request, server_id):
@@ -185,3 +192,14 @@ def flavor_list(request):
"""
flavor_manager = moganclient(request).flavor
return flavor_manager.list()
+
+
+def flavor_get(request, flavor_id):
+ """Get a flavor.
+
+ :param request: HTTP request.
+ :param server_id: The uuid of the flavor.
+ :return: Flavor object.
+ """
+ flavor_manager = moganclient(request).flavor
+ return flavor_manager.get(flavor_id)
diff --git a/mogan_ui/content/project/servers/tables.py b/mogan_ui/content/project/servers/tables.py
index f829113..5f4414e 100644
--- a/mogan_ui/content/project/servers/tables.py
+++ b/mogan_ui/content/project/servers/tables.py
@@ -25,6 +25,7 @@ from mogan_ui.api import mogan
from mogan_ui import exceptions
from horizon import tables
+from horizon.templatetags import sizeformat
from horizon.utils import filters
@@ -239,6 +240,40 @@ def get_ips(server):
return template.loader.render_to_string(template_name, context)
+def get_flavor(server):
+ if hasattr(server, "full_flavor"):
+ template_name = 'project/servers/_server_flavor.html'
+ full_flavor = server.full_flavor
+ cpus = "%s %s cores" % (full_flavor.cpus['model'],
+ full_flavor.cpus['cores'])
+ size_ram = sizeformat.mb_float_format(full_flavor.memory['size_mb'])
+ ram = "%s %s" % (size_ram, full_flavor.memory['type'])
+ disks = ""
+ for disk in full_flavor.disks:
+ if disks != "":
+ disks += "
"
+ size_disk = sizeformat.diskgbformat(disk['size_gb'])
+ disk = "%s %s" % (disk['type'], size_disk)
+ disks += disk
+ nics = ""
+ for nic in full_flavor.nics:
+ if nics != "":
+ nics += "
"
+ nic = "%s %s" % (nic['type'], nic['speed'])
+ nics += nic
+ context = {
+ "name": server.full_flavor.name,
+ "id": server.uuid,
+ "disks": disks,
+ "nics": nics,
+ "cpus": cpus,
+ "ram": ram,
+ "flavor_id": server.full_flavor.uuid
+ }
+ return template.loader.render_to_string(template_name, context)
+ return _("Not available")
+
+
STATUS_DISPLAY_CHOICES = (
("active", pgettext_lazy("Current status of a Server", u"Active")),
("stopped", pgettext_lazy("Current status of a Server", u"Stopped")),
@@ -291,7 +326,7 @@ class ServersTable(tables.DataTable):
ip = tables.Column(get_ips,
verbose_name=_("IP Address"),
attrs={'data-type': "ip"})
- flavor = tables.Column("flavor_uuid",
+ flavor = tables.Column(get_flavor,
sortable=False,
verbose_name=_("Flavor"))
status = tables.Column("status",
diff --git a/mogan_ui/content/project/servers/templates/servers/_server_flavor.html b/mogan_ui/content/project/servers/templates/servers/_server_flavor.html
new file mode 100644
index 0000000..ef0b61e
--- /dev/null
+++ b/mogan_ui/content/project/servers/templates/servers/_server_flavor.html
@@ -0,0 +1,18 @@
+{% load i18n %}
+{{ name }}{% endblocktrans %}
+