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 %} +