Show full flavor with server

Change-Id: Idfac9ad7ada3b962bb68650e4f08d7c9f2e7046e
This commit is contained in:
Zhenguo Niu 2017-05-16 17:11:50 +08:00
parent 398e11dc71
commit 55cb393e1d
3 changed files with 74 additions and 3 deletions

View File

@ -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)

View File

@ -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 += "<br>"
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 += "<br>"
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",

View File

@ -0,0 +1,18 @@
{% load i18n %}
<a href="#" id="flavor_details_{{ id }}" class="link-popover" rel="popover" tabindex="0" data-trigger="focus" data-content="
<table class='table table-bordered'>
<tr><th>{% trans 'ID' %}</th><td>{{ flavor_id }}</td></tr>
<tr><th>{% trans 'CPUs' %}</th><td>{{ cpus }}</td></tr>
<tr><th>{% trans 'RAM' %}</th><td>{{ ram }}</td></tr>
<tr><th>{% trans 'NICs' %}</th><td>{{ nics }}</td></tr>
<tr><th>{% trans 'DISKs' %}</th><td>{{ disks }}</td></tr>
</table>
" data-original-title="{% blocktrans %}Flavor Details: {{ name }}">{{ name }}{% endblocktrans %}</a>
<script type="text/javascript" charset="utf-8">
$(function () {
var $flavor = $("#flavor_details_{{ id }}");
if ( $flavor.popover ) {
$flavor.popover({html:true});
}
});
</script>