improved ns topology

Change-Id: I6eb1ee664cf52a86b8b723b52c5c6490998a0e63
Signed-off-by: lombardofr <lombardo@everyup.it>
diff --git a/descriptorhandler/template/composer.html b/descriptorhandler/template/composer.html
index cad68fa..2de4ae8 100644
--- a/descriptorhandler/template/composer.html
+++ b/descriptorhandler/template/composer.html
@@ -30,9 +30,32 @@
 {% block content_body %}
     {{ block.super }}
     {% csrf_token %}
+
     <div class="container-fluid">
         <div id="main" class="row">
             <div id="leftside">
+                <div class="section">
+                    <span style="font-weight: 500;">Select Element</span>
+                </div>
+                <div id="palette">
+                    <div class="node" draggable="true">
+                        <div class="icon" style="background-color: #cf1c24" ></div>
+                        <div class="name">VDU</div>
+                    </div>
+                    <div class="node" draggable="true">
+                        <div class="icon" style="background-color: #f8a800" ></div>
+                        <div class="name">VL</div>
+                    </div>
+                    <div class="node" draggable="true">
+                        <div class="icon" style="background-color: #e3bfad" ></div>
+                        <div class="name">intCP</div>
+                    </div>
+                    <div class="node" draggable="true">
+                        <div class="icon" style="background-color: #c6b63f" ></div>
+                        <div class="name">extCp</div>
+                    </div>
+
+                </div>
 
             </div>
             <div id="graph_editor_container" class="col">
@@ -61,6 +84,7 @@
     </script>
     <!-- d3.js -->
     <script src="/static/bower_components/d3/d3.js"></script>
+    <script src="/static/bower_components/moment/moment.js"></script>
 
     <!-- TopologyComposer D3 -->
     <script src="/static/TopologyComposer/js/event.js"></script>
@@ -71,6 +95,7 @@
 
 
     <script src="/static/src/osm_gui_properties.js"></script>
+    <script src="/static/src/descriptorhandler/composer.js"></script>
 {#    <script src="/static/src/instancehandler/instance_topology_view.js"></script>#}
 
 {% endblock %}
diff --git a/descriptorhandler/template/descriptorlist.html b/descriptorhandler/template/descriptorlist.html
index 9d86624..df7bda2 100644
--- a/descriptorhandler/template/descriptorlist.html
+++ b/descriptorhandler/template/descriptorlist.html
@@ -7,9 +7,12 @@
             <h3 class="box-title">
             </h3>
             <div class="box-tools">
-                <div class="btn-group">
-
-                </div>
+                {% comment %}<div class="btn-group">
+                    <button type="button" class="btn btn-default" data-container="body"
+                    data-toggle="tooltip" data-placement="top" title="Composer"
+                    onclick="">
+                <i class="fa fa-paint-brush"></i> <span> Composer</span></button>
+                </div>{% endcomment %}
             </div>
         </div>
         <div class="box-body">
diff --git a/descriptorhandler/views.py b/descriptorhandler/views.py
index 8b902af..c80af8a 100644
--- a/descriptorhandler/views.py
+++ b/descriptorhandler/views.py
@@ -25,6 +25,7 @@
 
 from lib.util import Util
 from lib.osm.osmclient.clientv2 import Client
+from lib.osm.osm_rdcl_parser import OsmParser
 import authosm.utils as osmutils
 
 logging.basicConfig(level=logging.DEBUG)
@@ -263,6 +264,30 @@
 def open_composer(request):
     user = osmutils.get_user(request)
     project_id = user.project_id
+    descriptor_id = request.GET.get('id')
+    descriptor_type = request.GET.get('type')
+    client = Client()
+    if descriptor_id:
+        try:
+            if descriptor_type == 'nsd':
+                descriptor_result = client.nsd_get(user.get_token(), descriptor_id)
+            elif descriptor_type == 'vnfd':
+                descriptor_result = client.vnfd_get(user.get_token(), descriptor_id)
+
+        except Exception as e:
+            descriptor_result = {'error': True, 'data': str(e)}
+
+        if isinstance(descriptor_result, dict) and 'error' in descriptor_result and descriptor_result['error']:
+            return render(request, 'error.html')
+
+        test = OsmParser()
+        # print nsr_object
+        if descriptor_type == 'nsd':
+            result = test.nsd_to_graph(descriptor_result)
+        elif descriptor_type == 'vnfd':
+            result = test.vnfd_to_graph(descriptor_result)
+        return __response_handler(request, result,'composer.html')
+
     result = {'project_id': project_id,
               'vertices': [
                   {"info": {"type": "vnf", "property": {"custom_label": ""},