From 9b4029806bf88c520145434ff0d3c131743ef9f7 Mon Sep 17 00:00:00 2001 From: Őry Máté <ory.mate@cloud.bme.hu> Date: Thu, 20 Mar 2014 15:11:19 +0100 Subject: [PATCH] dashboard: show hostname on vm list --- circle/dashboard/templates/dashboard/index-vm.html | 7 +++++-- circle/vm/models/instance.py | 11 +++++++++++ circle/vm/tests/test_models.py | 7 +++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/circle/dashboard/templates/dashboard/index-vm.html b/circle/dashboard/templates/dashboard/index-vm.html index ebf9a3d..43c3b90 100644 --- a/circle/dashboard/templates/dashboard/index-vm.html +++ b/circle/dashboard/templates/dashboard/index-vm.html @@ -16,7 +16,8 @@ <div id="dashboard-vm-list"> {% for i in instances %} <a href="{{ i.get_absolute_url }}" class="list-group-item"> - <i class="icon-{% if i.state == "RUNNING" %}play-sign{% else %}pause{% endif %}"></i> {{ i.name }} + <i class="{{ i.get_status_icon }}" title="{{ i.get_status_display }}"></i> {{ i.name }} + <small class="text-muted">{{ i.primary_host.hostname }}</small> <div class="pull-right dashboard-vm-favourite" data-vm="{{ i.pk }}"> {% if i.fav %} <i class="icon-star text-primary title-favourite" title="Unfavourite"></i> @@ -51,7 +52,9 @@ <p><span class="bigbig"><big>{{ running_vm_num }}</big> running </span> <ul class="list-inline"> {% for vm in running_vms %} - <li class="label label-success"><i class="icon-play-sign"></i> {{ vm.name}}</li> + <li class="label label-success"> + <a href="vm.get_absolute_url" title="{{vm.primary_host.get_fqdn}}"><i class="icon-play-sign"></i> {{ vm.name}}</a> + </li> {% endfor %} </ul> </p> diff --git a/circle/vm/models/instance.py b/circle/vm/models/instance.py index fd02a42..deda7a1 100644 --- a/circle/vm/models/instance.py +++ b/circle/vm/models/instance.py @@ -1177,3 +1177,14 @@ class Instance(AclBase, VirtualMachineDescModel, StatusModel, **kwargs): self.shutdown(user, task_uuid) self.save_as_template(name, **kwargs) + + def get_status_icon(self): + return { + 'NOSTATE': 'icon-rocket', + 'RUNNING': 'icon-play', + 'STOPPED': 'icon-stop', + 'SUSPENDED': 'icon-pause', + 'ERROR': 'icon-warning_sign', + 'PENDING': 'icon-rocket', + 'DESTROYED': 'icon-trash', + 'MIGRATING': 'icon-truck'}.get(self.status, 'icon-question-sign') diff --git a/circle/vm/tests/test_models.py b/circle/vm/tests/test_models.py index f706067..7183b7c 100644 --- a/circle/vm/tests/test_models.py +++ b/circle/vm/tests/test_models.py @@ -97,6 +97,13 @@ class InstanceTestCase(TestCase): self.assertNotIn(call().__enter__().sub_activity(u'scheduling'), ia.mock_calls) + def test_status_icon(self): + inst = MagicMock(spec=Instance) + inst.status = 'dummy-value' + self.assertEqual(Instance.get_status_icon(inst), 'icon-question-sign') + inst.status = 'RUNNING' + self.assertEqual(Instance.get_status_icon(inst), 'icon-play') + class InterfaceTestCase(TestCase): -- libgit2 0.26.0