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