VNF instances list, show

Change-Id: Ie7802c541f1d025047ee98780b1796957eb54a8c
Signed-off-by: lombardof <flombardo@cnit.it>
diff --git a/instancehandler/template/instance_list.html b/instancehandler/template/instance_list.html
index 52b3da4..ff76215 100644
--- a/instancehandler/template/instance_list.html
+++ b/instancehandler/template/instance_list.html
@@ -13,6 +13,7 @@
     <link rel="stylesheet" href="/static/bower_components/codemirror/addon/dialog/dialog.css">
     <link rel="stylesheet" href="/static/bower_components/codemirror/addon/display/fullscreen.css">
     <link rel="stylesheet" href="/static/bower_components/select2/dist/css/select2.min.css">
+    <link rel="stylesheet" href="/static/css/lwuitable.css">
 {% endblock %}
 {% block title_header_big %}
     {{ block.super }}
@@ -24,7 +25,7 @@
 
 {% block breadcrumb_body %}
     {{ block.super }}
-    <li><a href="{% url 'projects:instances:list' project_id=project_id type=type %}">Instances</a></li>
+    <li><a href="{% url 'projects:instances:list' project_id=project_id type=type %}">{{ type|upper }} Instances</a></li>
 {% endblock %}
 
 {% block content_body %}
@@ -34,96 +35,12 @@
     <div class="row">
         <div class="col-md-12">
 
-            <div class="box">
-                <div class="box-header with-border">
-                    <h3 class="box-title">Instances</h3>
+            {% if type == 'ns' %}
+                {% include 'instance_list_ns.html' %}
+            {% elif type == 'vnf' %}
+                {% include 'instance_list_vnf.html' %}
+            {% endif %}
 
-                    <div class="box-tools">
-
-                        <button type="button" class="btn btn-default" data-container="body"
-                                data-toggle="tooltip" data-placement="top" title="Instantiate NS"
-                                onclick="javascript:openModalCreateNS({ 'project_id':'{{project_id}}','vim_list_url': '{% url "vim:list" %}', 'nsd_list_url': '{% url "projects:list_descriptors" project_id=project_id descriptor_type='nsd'  %}'})" >
-                            <i class="fa fa-paper-plane"></i> <span> New NS</span></button>
-
-                    </div>
-
-                </div>
-                <div class="box-body">
-                    <table id="instances_table" class="table table-bordered table-striped">
-                        <thead>
-                        <tr>
-                            <th>Id</th>
-                            <th>Name</th>
-                            <th>Nsd name</th>
-                            <th style="width:5%">Operational Status</th>
-                            <th style="width:5%">Config Status</th>
-                            <th>Detailed Status</th>
-                            <th >Actions</th>
-                        </tr>
-                        </thead>
-                        <tbody>
-                        {% for i in instances %}
-                            <tr>
-
-                                <td>{{ i|get:"_id" }}</td>
-                                <td>{{ i|get:"short-name" }}</td>
-                                <td>{{ i|get:"nsd-name-ref" }}</td>
-
-                                {% if i|get:"operational-status" == 'failed' %}
-                                    <td><span class="label label-danger">{{ i|get:"operational-status"  }}</span> </td>
-                                {% elif i|get:"operational-status" == 'init' %}
-                                     <td><span class="label label-warning">{{ i|get:"operational-status"  }}</span> </td>
-                                {% elif i|get:"operational-status" == 'running' %}
-                                     <td><span class="label label-success">{{ i|get:"operational-status"  }}</span> </td>
-                                {% else  %}
-                                    <td>{{ i|get:"operational-status"  }}</td>
-                                {% endif %}
-                                {% if i|get:"config-status" == 'failed' %}
-                                    <td><span class="label label-danger">{{ i|get:"config-status"  }}</span> </td>
-                                {% elif i|get:"config-status" == 'init' %}
-                                     <td><span class="label label-warning">{{ i|get:"config-status"  }}</span> </td>
-                                {% elif i|get:"config-status" == 'running' %}
-                                     <td><span class="label label-success">{{ i|get:"config-status"  }}</span> </td>
-                                {% elif i|get:"config-status" == 'configured' %}
-                                    <td><span class="label label-success">{{ i|get:"config-status"  }}</span> </td>
-                                {% else  %}
-                                    <td>{{ i|get:"config-status"  }}</td>
-                                {% endif %}
-                                <td style=" max-width:1px;overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">{{ i|get:"detailed-status" }}</td>
-                                <td>
-                                    <div class="btn-group">
-                                        <button type="button" class="btn btn-default"
-                                                onclick="javascript:showInstanceDetails('{% url 'projects:instances:show' instance_id=i|get:'_id' project_id=project_id type=type %}')"
-                                                data-toggle="tooltip" data-placement="top" data-container="body" title="Show Info"><i
-                                                class="fa fa-info"></i>
-                                        </button>
-
-                                        <button type="button" class="btn btn-default"
-                                                onclick="javascript:deleteNs('{% url 'projects:instances:delete' instance_id=i|get:'_id' project_id=project_id type=type %}')"
-                                                data-toggle="tooltip" data-placement="top" data-container="body" title="Delete"><i
-                                                class="fa fa-trash-o"></i></button>
-
-                                            <button type="button" class="btn btn-default dropdown-toggle"
-                                                    data-toggle="dropdown" aria-expanded="false">Actions
-                                                <span class="fa fa-caret-down"></span></button>
-                                            <ul class="dropdown-menu">
-                                                <li><a href="#" onclick="javascript:performAction('{% url 'projects:instances:action' instance_id=i|get:'_id' project_id=project_id type=type %}')">
-                                                    <i class="fa fa-magic"></i>Exec NS Primitive</a></li>
-                                                <li><a href="{% url 'projects:instances:ns_operations' project_id=project_id type=type instance_id=i|get:'_id'%}"> <i class="fa fa-list"></i>Active operations</a></li>
-                                            </ul>
-
-
-                                    </div>
-
-                                </td>
-
-
-                            </tr>
-                        {% endfor %}
-                        </tbody>
-                    </table>
-                </div>
-            </div>
         </div>
 
     </div>
diff --git a/instancehandler/template/instance_list_ns.html b/instancehandler/template/instance_list_ns.html
new file mode 100644
index 0000000..d6a8dbe
--- /dev/null
+++ b/instancehandler/template/instance_list_ns.html
@@ -0,0 +1,95 @@
+{% load get %}
+<div class="box">
+    <div class="box-header with-border">
+        <h3 class="box-title">{{ type|upper }} Instances</h3>
+
+        <div class="box-tools">
+
+            <button type="button" class="btn btn-default" data-container="body"
+                    data-toggle="tooltip" data-placement="top" title="Instantiate NS"
+                    onclick="javascript:openModalCreateNS({ 'project_id':'{{ project_id }}','vim_list_url': '{% url "vim:list" %}', 'nsd_list_url': '{% url "projects:list_descriptors" project_id=project_id descriptor_type='nsd' %}'})">
+                <i class="fa fa-paper-plane"></i> <span> New NS</span></button>
+
+        </div>
+
+    </div>
+    <div class="box-body">
+        <table id="instances_table" class="table table-bordered table-striped">
+            <thead>
+            <tr>
+                <th>Id</th>
+                <th>Name</th>
+                <th>Nsd name</th>
+                <th style="width:5%">Operational Status</th>
+                <th style="width:5%">Config Status</th>
+                <th>Detailed Status</th>
+                <th>Actions</th>
+            </tr>
+            </thead>
+            <tbody>
+            {% for i in instances %}
+                <tr>
+
+                    <td>{{ i|get:"_id" }}</td>
+                    <td>{{ i|get:"short-name" }}</td>
+                    <td>{{ i|get:"nsd-name-ref" }}</td>
+
+                    {% if i|get:"operational-status" == 'failed' %}
+                        <td><span class="label label-danger">{{ i|get:"operational-status" }}</span></td>
+                    {% elif i|get:"operational-status" == 'init' %}
+                        <td><span class="label label-warning">{{ i|get:"operational-status" }}</span></td>
+                    {% elif i|get:"operational-status" == 'running' %}
+                        <td><span class="label label-success">{{ i|get:"operational-status" }}</span></td>
+                    {% else %}
+                        <td>{{ i|get:"operational-status" }}</td>
+                    {% endif %}
+                    {% if i|get:"config-status" == 'failed' %}
+                        <td><span class="label label-danger">{{ i|get:"config-status" }}</span></td>
+                    {% elif i|get:"config-status" == 'init' %}
+                        <td><span class="label label-warning">{{ i|get:"config-status" }}</span></td>
+                    {% elif i|get:"config-status" == 'running' %}
+                        <td><span class="label label-success">{{ i|get:"config-status" }}</span></td>
+                    {% elif i|get:"config-status" == 'configured' %}
+                        <td><span class="label label-success">{{ i|get:"config-status" }}</span></td>
+                    {% else %}
+                        <td>{{ i|get:"config-status" }}</td>
+                    {% endif %}
+                    <td class="ellipsis" data-text="{{ i|get:"detailed-status" }}">{{ i|get:"detailed-status" }}</td>
+                    <td>
+                        <div class="btn-group">
+                            <button type="button" class="btn btn-default"
+                                    onclick="javascript:showInstanceDetails('{% url 'projects:instances:show' instance_id=i|get:'_id' project_id=project_id type=type %}')"
+                                    data-toggle="tooltip" data-placement="top" data-container="body" title="Show Info">
+                                <i
+                                        class="fa fa-info"></i>
+                            </button>
+
+                            <button type="button" class="btn btn-default"
+                                    onclick="javascript:deleteNs('{% url 'projects:instances:delete' instance_id=i|get:'_id' project_id=project_id type=type %}')"
+                                    data-toggle="tooltip" data-placement="top" data-container="body" title="Delete"><i
+                                    class="fa fa-trash-o"></i></button>
+
+                            <button type="button" class="btn btn-default dropdown-toggle"
+                                    data-toggle="dropdown" aria-expanded="false">Actions
+                                <span class="fa fa-caret-down"></span></button>
+                            <ul class="dropdown-menu">
+                                <li><a href="#"
+                                       onclick="javascript:performAction('{% url 'projects:instances:action' instance_id=i|get:'_id' project_id=project_id type=type %}')">
+                                    <i class="fa fa-magic"></i>Exec NS Primitive</a></li>
+                                <li>
+                                    <a href="{% url 'projects:instances:ns_operations' project_id=project_id type=type instance_id=i|get:'_id' %}">
+                                        <i class="fa fa-list"></i>Active operations</a></li>
+                            </ul>
+
+
+                        </div>
+
+                    </td>
+
+
+                </tr>
+            {% endfor %}
+            </tbody>
+        </table>
+    </div>
+</div>
diff --git a/instancehandler/template/instance_list_vnf.html b/instancehandler/template/instance_list_vnf.html
new file mode 100644
index 0000000..4aa084e
--- /dev/null
+++ b/instancehandler/template/instance_list_vnf.html
@@ -0,0 +1,56 @@
+{% load get %}
+{% load date_tag %}
+
+<div class="box">
+    <div class="box-header with-border">
+        <h3 class="box-title">{{ type|upper }} Instances</h3>
+
+        <div class="box-tools">
+
+
+
+        </div>
+
+    </div>
+    <div class="box-body">
+        <table id="instances_table" class="table table-bordered table-striped">
+            <thead>
+            <tr>
+                <th>Id</th>
+                <th>VNFD</th>
+                <th>Member Index</th>
+                <th>NS</th>
+                <th>Created At</th>
+                <th>Actions</th>
+            </tr>
+            </thead>
+            <tbody>
+            {% for i in instances %}
+                <tr>
+
+                    <td>{{ i|get:"_id" }}</td>
+                    <td><a href="javascript:openDescriptorView('{{project_id}}', 'vnfd', '{{ i|get:"vnfd-id" }}')"> {{ i|get:"vnfd-ref" }}</a></td>
+                    <td>{{ i|get:"member-vnf-index-ref" }}</td>
+                    <td class="ellipsis" data-text="{{ i|get:"nsr-id-ref" }}">{{ i|get:"nsr-id-ref" }}</td>
+                    <td >{{ i|get:"created-time"|get_date }}</td>
+
+                    <td>
+                        <div class="btn-group">
+                            <button type="button" class="btn btn-default"
+                                    onclick="javascript:showInstanceDetails('{% url 'projects:instances:show' instance_id=i|get:'_id' project_id=project_id type=type %}')"
+                                    data-toggle="tooltip" data-placement="top" data-container="body" title="Show Info">
+                                <i class="fa fa-info"></i>
+                            </button>
+
+
+                        </div>
+
+                    </td>
+
+
+                </tr>
+            {% endfor %}
+            </tbody>
+        </table>
+    </div>
+</div>
diff --git a/instancehandler/views.py b/instancehandler/views.py
index 9ace8ee..a5118f6 100644
--- a/instancehandler/views.py
+++ b/instancehandler/views.py
@@ -27,8 +27,10 @@
     client = Client()
     if type == 'ns':
         result = client.ns_list()
+    elif type == 'vnf':
+        result = client.vnf_list()
 
-    return __response_handler(request, {'instances': result, 'type': 'ns', 'project_id': project_id}, 'instance_list.html')
+    return __response_handler(request, {'instances': result, 'type': type, 'project_id': project_id}, 'instance_list.html')
 
 
 @login_required
@@ -111,7 +113,10 @@
 def show(request, project_id=None, instance_id=None, type=None):
     # result = {}
     client = Client()
-    result = client.ns_get(instance_id)
+    if type == 'ns':
+        result = client.ns_get(instance_id)
+    elif type == 'vnf':
+        result = client.vnf_get(instance_id)
     print result
     return __response_handler(request, result)