several changes on auth flow
Change-Id: I49ddbb074a9bc018b9e5becafbe5956fa5860333
Signed-off-by: lombardofr <lombardo@everyup.it>
diff --git a/projecthandler/middleware.py b/projecthandler/middleware.py
new file mode 100644
index 0000000..4880ebe
--- /dev/null
+++ b/projecthandler/middleware.py
@@ -0,0 +1,6 @@
+
+class OsmProjectMiddleware(object):
+ def process_view(self, request, view_func, view_args, view_kwargs):
+ print "OsmProjectMiddleware", view_func, view_args, view_kwargs
+
+ return None
\ No newline at end of file
diff --git a/projecthandler/template/project/descriptor/descriptor_view_base.html b/projecthandler/template/project/descriptor/descriptor_view_base.html
index 3635d66..e97649d 100644
--- a/projecthandler/template/project/descriptor/descriptor_view_base.html
+++ b/projecthandler/template/project/descriptor/descriptor_view_base.html
@@ -125,7 +125,7 @@
function goToGraph() {
- window.location.href = '/projects/{{project_id}}/graph?type={{descriptor_type}}&id={{descriptor_id}}'
+ window.location.href = '/projects/graph?type={{descriptor_type}}&id={{descriptor_id}}'
}
</script>
{% endblock %}
diff --git a/projecthandler/template/project/osm/descriptor/descriptor_new.html b/projecthandler/template/project/osm/descriptor/descriptor_new.html
index 799026b..7711b57 100644
--- a/projecthandler/template/project/osm/descriptor/descriptor_new.html
+++ b/projecthandler/template/project/osm/descriptor/descriptor_new.html
@@ -14,8 +14,8 @@
{% block breadcrumb_body %}
{{ block.super }}
-<li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_id}}</a></li>
-<li><a href="{% url 'projects:open_project' project_id=project_id %}descriptors/{{descriptor_type}}">{{ descriptor_type }} Descriptors</a></li>
+<li><a href="{% url 'projects:open_project' %}">{{project_id}}</a></li>
+<li><a href="{% url 'projects:open_project' %}descriptors/{{descriptor_type}}">{{ descriptor_type }} Descriptors</a></li>
<li>Create Descriptor</li>
{% endblock %}
@@ -50,9 +50,9 @@
{{ block.super }}
<script>
- var descr_list_url = '{% url "projects:list_descriptors" project_id=project_id descriptor_type=descriptor_type%}';
+ var descr_list_url = '{% url "projects:list_descriptors" descriptor_type=descriptor_type%}';
var csrf_token = '{{csrf_token}}';
- var new_desc_url ="{% url 'projects:new_descriptor' project_id=project_id descriptor_type=descriptor_type %}"
+ var new_desc_url ="{% url 'projects:new_descriptor' descriptor_type=descriptor_type %}"
function cancel(id) {
window.location.href = descr_list_url
diff --git a/projecthandler/template/project/osm/descriptor/descriptor_view.html b/projecthandler/template/project/osm/descriptor/descriptor_view.html
index fe2d78c..3272f44 100644
--- a/projecthandler/template/project/osm/descriptor/descriptor_view.html
+++ b/projecthandler/template/project/osm/descriptor/descriptor_view.html
@@ -15,8 +15,8 @@
{% block breadcrumb_body %}
{{ block.super }}
-<li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_id}}</a></li>
-<li><a href="{% url 'projects:open_project' project_id=project_id %}descriptors/{{descriptor_type}}">{{ descriptor_type }} Descriptors</a></li>
+<li><a href="{% url 'projects:open_project' %}">{{project_id}}</a></li>
+<li><a href="{% url 'projects:open_project' %}descriptors/{{descriptor_type}}">{{ descriptor_type }} Descriptors</a></li>
<li><a>{{descriptor_id}}</a></li>
{% endblock %}
@@ -97,7 +97,7 @@
break;
}
$.ajax({
- url: "/projects/{{project_id}}/descriptors/{{descriptor_type}}/{{descriptor_id}}/",
+ url: "/projects/descriptors/{{descriptor_type}}/{{descriptor_id}}/",
type: 'POST',
dataType: 'json',
data: {
diff --git a/projecthandler/template/project/osm/descriptor/descriptorlist.html b/projecthandler/template/project/osm/descriptor/descriptorlist.html
index 002cd57..c995844 100644
--- a/projecthandler/template/project/osm/descriptor/descriptorlist.html
+++ b/projecthandler/template/project/osm/descriptor/descriptorlist.html
@@ -7,10 +7,13 @@
<h3 class="box-title">
</h3>
<div class="box-tools">
-
- <a href="{% url 'projects:new_descriptor' project_id=project_id descriptor_type=descriptor_type %}"
+ <div class="btn-group">
+ <!--
+ <a href="{% url 'projects:open_composer'%}"
class="btn btn-block btn-primary btn-sm"><i
- class="fa fa-upload"></i><span> Onboard {{ descriptor_type|upper }}</span></a>
+ class="fa fa-paint-brush" disabled></i><span> Composer</span></a>
+ -->
+ </div>
</div>
</div>
<div class="box-body">
@@ -39,28 +42,28 @@
{% if descriptor_type == "nsd" %}
<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 }}', 'descriptor_type': '{{ descriptor_type }}', 'descriptor_name':'{{ k|get:"name" }}', 'descriptor_id':'{{ k|get:"_id" }}','vim_list_url': '{% url "projects:vims:list" project_id=project_id %}', 'nsd_list_url': '{% url "projects:list_descriptors" project_id=project_id descriptor_type=descriptor_type %}' })">
+ onclick="javascript:openModalCreateNS({ 'project_id':'{{ project_id }}', 'descriptor_type': '{{ descriptor_type }}', 'descriptor_name':'{{ k|get:"name" }}', 'descriptor_id':'{{ k|get:"_id" }}','vim_list_url': '{% url "projects:vims:list" %}', 'nsd_list_url': '{% url "projects:list_descriptors" descriptor_type=descriptor_type %}' })">
<i class="fa fa-paper-plane"></i></button>
{% endif %}
<button type="button" class="btn btn-default" data-container="body"
data-toggle="tooltip" data-placement="top" title="Edit"
- onclick="javascript:openDescriptorView('{{ project_id }}', '{{ descriptor_type }}', '{{ k|get:"_id" }}')">
+ onclick="javascript:openDescriptorView('{{ descriptor_type }}', '{{ k|get:"_id" }}')">
<i class="fa fa-edit"></i></button>
<button type="button" class="btn btn-default" data-container="body"
data-toggle="tooltip" data-placement="top" title="Show content"
- onclick="javascript:openPackageContentList('{{ project_id }}', '{{ descriptor_type }}', '{{ k|get:"_id" }}')">
+ onclick="javascript:openPackageContentList('{{ descriptor_type }}', '{{ k|get:"_id" }}')">
<i class="fa fa-folder-open"></i></button>
<button type="button" class="btn btn-default" data-container="body"
data-toggle="tooltip" data-placement="top" title="Show Graph"
- onclick="location.href='/projects/{{ project_id }}/graph?type={{ descriptor_type }}&id={{ k|get:"_id" }}'"
+ onclick="location.href='/projects/graph?type={{ descriptor_type }}&id={{ k|get:"_id" }}'"
disabled><i class="fa fa-sitemap fa-fw"></i></button>
<button type="button" class="btn btn-default" data-container="body"
data-toggle="tooltip" data-placement="top" title="Download package"
- onclick="location.href='{% url 'projects:custom_action' project_id=project_id descriptor_type=descriptor_type descriptor_id=k|get:'_id' action_name='download_pkg' %}'">
+ onclick="location.href='{% url 'projects:custom_action' descriptor_type=descriptor_type descriptor_id=k|get:'_id' action_name='download_pkg' %}'">
<i class="fa fa-download fa-fw"></i></button>
<button type="button" class="btn btn-default" data-container="body"
data-toggle="tooltip" data-placement="top" title="Delete"
- onclick="javascript:deletePackage('{{ project_id }}', '{{ descriptor_type }}', '{{ k|get:"_id" }}')">
+ onclick="javascript:deletePackage( '{{ descriptor_type }}', '{{ k|get:"_id" }}')">
<i class="far fa-trash-alt"></i></button>
</div>
diff --git a/projecthandler/template/project/osm/osm_project_descriptors.html b/projecthandler/template/project/osm/osm_project_descriptors.html
index 99b6111..10df788 100644
--- a/projecthandler/template/project/osm/osm_project_descriptors.html
+++ b/projecthandler/template/project/osm/osm_project_descriptors.html
@@ -22,7 +22,7 @@
{% block breadcrumb_body %}
{{ block.super }}
- <li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_id}}</a></li>
+ <li><a href="{% url 'projects:open_project' %}">{{project_id}}</a></li>
<li><a> {% if descriptor_type %}
{{ descriptor_type }}
{% else%}
@@ -47,8 +47,8 @@
{{ block.super }}
<script>
var csrf_token = '{{csrf_token}}';
- var descr_list_url = '{% url "projects:list_descriptors" project_id=project_id descriptor_type=descriptor_type%}';
- var new_desc_url ="{% url 'projects:new_descriptor' project_id=project_id descriptor_type=descriptor_type %}"
+ var descr_list_url = '{% url "projects:list_descriptors" descriptor_type=descriptor_type%}';
+ var new_desc_url ="{% url 'projects:new_descriptor' descriptor_type=descriptor_type %}"
</script>
<script src="/static/bower_components/select2/dist/js/select2.js"></script>
<script src="/static/src/instancehandler/instance_create.js"></script>
diff --git a/projecthandler/template/project/osm/osm_project_details.html b/projecthandler/template/project/osm/osm_project_details.html
index ed3e0fa..b0a1203 100644
--- a/projecthandler/template/project/osm/osm_project_details.html
+++ b/projecthandler/template/project/osm/osm_project_details.html
@@ -44,7 +44,7 @@
<div class="inner"><h3>{{ project_overview.nsd }}</h3>
<p>NS packages</p></div>
<div class="icon"><i class="fa fa-archive"></i></div>
- <a href='{% url "projects:list_descriptors" project_id=project_id descriptor_type="nsd" %}' class="small-box-footer">Open list <i
+ <a href='{% url "projects:list_descriptors" descriptor_type="nsd" %}' class="small-box-footer">Open list <i
class="fa fa-arrow-circle-right"></i></a></div>
</div>
<div class="col-md-6 ">
@@ -52,7 +52,7 @@
<div class="inner"><h3>{{ project_overview.vnfd }}</h3>
<p>VNF packages</p></div>
<div class="icon"><i class="fa fa-archive"></i></div>
- <a href='{% url "projects:list_descriptors" project_id=project_id descriptor_type="vnfd" %}' class="small-box-footer">Open list <i
+ <a href='{% url "projects:list_descriptors" descriptor_type="vnfd" %}' class="small-box-footer">Open list <i
class="fa fa-arrow-circle-right"></i></a></div>
</div>
</div>
@@ -62,7 +62,7 @@
<div class="inner"><h3>{{ project_overview.ns }}</h3>
<p>NS Instances</p></div>
<div class="icon"><i class="fa fa-sitemap fa-fw"></i></div>
- <a href='{% url "projects:instances:list" project_id=project_id type="ns" %}' class="small-box-footer">Open list <i
+ <a href='{% url "projects:instances:list" type="ns" %}' class="small-box-footer">Open list <i
class="fa fa-arrow-circle-right"></i></a></div>
</div>
@@ -71,7 +71,7 @@
<div class="inner"><h3>{{ project_overview.vnf }}</h3>
<p>VNF Instances</p></div>
<div class="icon"><i class="far fa-hdd fa-fw"></i></div>
- <a href='{% url "projects:instances:list" project_id=project_id type="vnf" %}' class="small-box-footer">Open list <i
+ <a href='{% url "projects:instances:list" type="vnf" %}' class="small-box-footer">Open list <i
class="fa fa-arrow-circle-right"></i></a></div>
</div>
diff --git a/projecthandler/template/project/osm/osm_project_left_sidebar.html b/projecthandler/template/project/osm/osm_project_left_sidebar.html
index 6399b11..b07c432 100644
--- a/projecthandler/template/project/osm/osm_project_left_sidebar.html
+++ b/projecthandler/template/project/osm/osm_project_left_sidebar.html
@@ -8,14 +8,14 @@
<li {% if request.get_full_path == home_url %} class="active" {% endif %} ><a href='{% url "home" %}'><i
class="fa fa-home fa-fw"></i> <span>Home</span></a></li>
<li class="header">PROJECT</li>
- {% url "projects:open_project" project_id=project_id as project_url %}
+ {% url "projects:open_project" as project_url %}
<li {% if request.get_full_path == project_url %} class="active" {% endif %} >
- <a href='{% url "projects:open_project" project_id=project_id %}'>
+ <a href='{% url "projects:open_project" %}'>
<i class="fa fa-file-text fa-fw"></i> <span>Overview</span>
</a>
</li>
- {% url "projects:list_descriptors" project_id=project_id descriptor_type="nsd" as nsd_list_url %}
- {% url "projects:list_descriptors" project_id=project_id descriptor_type='vnfd' as vnfd_list_url %}
+ {% url "projects:list_descriptors" descriptor_type="nsd" as nsd_list_url %}
+ {% url "projects:list_descriptors" descriptor_type='vnfd' as vnfd_list_url %}
<li {% if request.get_full_path == nsd_list_url or request.get_full_path == vnfd_list_url %}
class="active treeview menu-open" {% else %} class="treeview menu-open" {% endif %} >
<a href="#">
@@ -38,8 +38,8 @@
</ul>
</li>
- {% url "projects:instances:list" project_id=project_id type='ns' as instance_ns_list_url %}
- {% url "projects:instances:list" project_id=project_id type='vnf' as instance_vnf_list_url %}
+ {% url "projects:instances:list" type='ns' as instance_ns_list_url %}
+ {% url "projects:instances:list" type='vnf' as instance_vnf_list_url %}
<li {% if request.get_full_path == instance_ns_list_url or request.get_full_path == instance_vnf_list_url %}
class="active treeview menu-open" {% else %} class="treeview menu-open" {% endif %} >
<a href="#">
@@ -49,32 +49,32 @@
</span>
</a>
<ul class="treeview-menu" style="display: block;">
- {% url "projects:instances:list" project_id=project_id type='ns' as instance_ns_list_url %}
+ {% url "projects:instances:list" type='ns' as instance_ns_list_url %}
<li {% if request.get_full_path == instance_ns_list_url %} class="active" {% endif %} >
- <a href='{% url "projects:instances:list" project_id=project_id type="ns" %}'>
+ <a href='{% url "projects:instances:list" type="ns" %}'>
<i class="fa fa-sitemap fa-fw"></i> <span>NS Instances</span>
</a>
</li>
- {% url "projects:instances:list" project_id=project_id type='vnf' as instance_vnf_list_url %}
+ {% url "projects:instances:list" type='vnf' as instance_vnf_list_url %}
<li {% if request.get_full_path == instance_vnf_list_url %} class="active" {% endif %} >
- <a href='{% url "projects:instances:list" project_id=project_id type="vnf" %}'>
+ <a href='{% url "projects:instances:list" type="vnf" %}'>
<i class="far fa-hdd fa-fw"></i> <span>VNF Instances</span>
</a>
</li>
</ul>
</li>
- {% url "projects:sdns:list" project_id=project_id as sdn_list_url %}
+ {% url "projects:sdns:list" as sdn_list_url %}
<li {% if request.get_full_path == sdn_list_url %} class="active" {% endif %}>
- <a href='{% url "projects:sdns:list" project_id=project_id %}'>
+ <a href='{% url "projects:sdns:list" %}'>
<i class="fas fa-globe fa-fw"></i> <span>SDN Controllers</span>
</a>
</li>
- {% url "projects:vims:list" project_id=project_id as vim_list_url %}
+ {% url "projects:vims:list" as vim_list_url %}
<li {% if request.get_full_path == vim_list_url %} class="active" {% endif %}>
- <a href='{% url "projects:vims:list" project_id=project_id %}'>
+ <a href='{% url "projects:vims:list" %}'>
<i class="fa fa-server fa-fw"></i> <span>VIM Accounts</span>
</a>
</li>
diff --git a/projecthandler/template/project/project_delete.html b/projecthandler/template/project/project_delete.html
index 432e1ff..4ae063e 100644
--- a/projecthandler/template/project/project_delete.html
+++ b/projecthandler/template/project/project_delete.html
@@ -14,7 +14,7 @@
{% block breadcrumb_body %}
{{ block.super }}
{% if project_id %}
- <li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_overview_data.name}}</a></li>
+ <li><a href="{% url 'projects:open_project' %}">{{project_overview_data.name}}</a></li>
<li>Delete Project</li>
{% endif %}
{% endblock %}
diff --git a/projecthandler/template/project/project_details.html b/projecthandler/template/project/project_details.html
index e944e0d..aac2983 100644
--- a/projecthandler/template/project/project_details.html
+++ b/projecthandler/template/project/project_details.html
@@ -25,7 +25,7 @@
{% block breadcrumb_body %}
{{ block.super }}
<li><a href="{% url 'projects:projects_list' %}">Projects</a></li>
- <li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_overview.name}}</a></li>
+ <li><a href="{% url 'projects:open_project' %}">{{project_overview.name}}</a></li>
{% endblock %}
{% block content_body %}
diff --git a/projecthandler/template/project/project_graph_base.html b/projecthandler/template/project/project_graph_base.html
index 7d344da..282afb4 100644
--- a/projecthandler/template/project/project_graph_base.html
+++ b/projecthandler/template/project/project_graph_base.html
@@ -1,58 +1,81 @@
{% extends "base.html" %}
-
+{% load get %}
{% load staticfiles %}
+
+
{% block head_block %}
- {{ block.super }}
- <link rel="stylesheet" href="{% static "topology3D/css/graph_editor_d3js.css" %}">
- <link rel="stylesheet" href="{% static "topology3D/css/d3-context-menu.css" %}">
+ {{ block.super }}
+ <link rel="stylesheet" href="/static/bower_components/select2/dist/css/select2.min.css">
+ <link rel="stylesheet" href="/static/css/lwuitable.css">
+
+ <!-- Topology3D core CSS -->
+ <link rel="stylesheet" href="/static/topology3D/css/graph_editor_d3js.css">
+ <link rel="stylesheet" href="/static/topology3D/css/d3-context-menu.css">
+
{% endblock %}
{% block title_header_big %}
{{ block.super }}
{% endblock %}
{% block left_sidebar %}
-
+ {% include 'osm/osm_project_left_sidebar.html' %}
{% endblock %}
{% block breadcrumb_body %}
- {{ block.super }}
- <li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_overview_data.name}}</a></li>
+ {{ block.super }}
+ <li><a href="#"><i class="fa fa-sitemap"></i> Composer</a></li>
{% endblock %}
{% block content_body %}
- {{ block.super }}
- {% csrf_token %}
-<div class="row" >
- <div class="col-md-12">
- {% block topology_toolbar %}
+ {{ block.super }}
+ {% csrf_token %}
+ {% include 'osm/descriptor/modal/create_link_chooser.html' %}
+{% include 'osm/descriptor/modal/choose_node_id.html' %}
+{% include 'osm/modal/modal_keyboard_info.html' %}
+ <div class="row" >
+ <div class="col-md-12">
+ {% block topology_toolbar %}
+ {{ block.super }}
+ {% include 'topology_toolbar.html' %}
+ {% endblock %}
+ <div id="graph_ed_container" style="width: 100%; height:100%; background-color: white; border: 2px #3c8dbc solid;">
-
- {% endblock %}
- <div id="graph_ed_container" style="width: 100%; height:100%; background-color: white; border: 2px #3c8dbc solid;">
-
+ </div>
</div>
</div>
-</div>
+
{% endblock %}
{% block resource_block %}
- {{ block.super }}
+ {{ block.super }}
+ <script>
+ var topology_data = {};//{{topology_data|safe }};
+ </script>
+ <!-- Utility JS -->
+ <script src="/static/bower_components/select2/dist/js/select2.js"></script>
<!-- d3.js -->
- <script src="{% static "bower_components/d3/d3.min.js" %}" charset="utf-8"></script>
+ <script src="https://d3js.org/d3.v4.js"></script>
+<!--
+ <script src="/static/bower_components/d3/d3.js"></script>-->
<!-- topology3D -->
- <script src="{% static "topology3D/js/d3-context-menu.js" %}"></script>
- <script src="{% static "topology3D/js/event.js" %}"></script>
- <script src="{% static "topology3D/js/graph_editor.js" %}"></script>
- <script src="{% static "topology3D/js/graph_request.js" %}"></script>
+ <script src="/static/topology3D/js/d3-context-menu.js"></script>
+ <script src="/static/topology3D/js/event.js"></script>
+ <script src="/static/topology3D/js/graph_editor.js"></script>
+ <script src="/static/topology3D/js/graph_request.js"></script>
+ <script src="/static/topology3D/js/model_graph_editor.js"></script>
+
+
+ <script src="/static/src/osm_gui_properties.js"></script>
+ <script src="/static/src/projecthandler/composer.js"></script>
+ <script src="/static/src/projecthandler/osm/controller.js"></script>
{% endblock %}
-
-{% block header %}
+{% block footer %}
+ {% include "footer.html" %}
{% endblock %}
-
diff --git a/projecthandler/template/project/projectlist.html b/projecthandler/template/project/projectlist.html
index 6339679..6e3793d 100644
--- a/projecthandler/template/project/projectlist.html
+++ b/projecthandler/template/project/projectlist.html
@@ -57,13 +57,13 @@
<tr>
<td>
- <a href="javascript:openProject('{{ p.name }}')" >{{ p.name }}</a>
+ <a href="/projects/switch/{{ p.name }}" >{{ p.name }}</a>
</td>
<td>{{ p|get_sub:"_admin,modified"|get_date}}</td>
<td>{{ p|get_sub:"_admin,created"|get_date}}</td>
- <td><a href="javascript:deleteProject('{% url 'projects:delete_project' project_id=p|get:'_id' %}')"> Delete</a></td>
+ <td><a href="javascript:deleteProject('{% url 'projects:delete_project' %}')"> Delete</a></td>
</tr>
{% endfor %}
diff --git a/projecthandler/template/project/repository/repo_base_left_sidebar.html b/projecthandler/template/project/repository/repo_base_left_sidebar.html
deleted file mode 100644
index 3367eeb..0000000
--- a/projecthandler/template/project/repository/repo_base_left_sidebar.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "left_sidebar_base.html" %}
-
-{% block left_sidebar_base %}
- <li class="header">REPOSITORY</li>
- {% url "repos:repos_list" as repo_list_url %}
- <li {% if request.get_full_path == repo_list_url %} class="active" {% endif %}><a href='{% url "repos:repos_list" %}'><i class="fa fa-git fa-fw"></i><span>Ropository Registered</span></a></li>
-
- {% block li_list %}
-
-
- {% endblock %}
-{% endblock %}
diff --git a/projecthandler/template/project/repository/repo_create_modal.html b/projecthandler/template/project/repository/repo_create_modal.html
deleted file mode 100644
index 6df53b5..0000000
--- a/projecthandler/template/project/repository/repo_create_modal.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<div class="modal" id="modal_new_repository" xmlns="http://www.w3.org/1999/html">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-label="Close">
- <span aria-hidden="true">×</span></button>
- <h4 class="modal-title" id="modal_new_repo_title">New Repository</h4>
- </div>
- <div id="div_chose_id" class="modal-body">
- <!-- form start -->
- <form action='{% url "repos:new_repo" %}' class="form-horizontal" role="form" method="post" enctype="multipart/form-data">
- {% csrf_token %}
- <div class="box-body">
- <div class="form-group">
- <label for="name" class="col-sm-2 control-label">Name</label>
-
- <div class="col-sm-10">
- <input type="text" class="form-control" id="name" placeholder="Name" name="name" required>
- </div>
- </div>
- <div class="form-group">
- <label for="base_url_repo" class="col-sm-2 control-label">Base Url</label>
-
- <div class="col-sm-10">
- <input class="form-control required" id="base_url_repo"
- name="base_url_repo" placeholder="Base Url" pattern="((git|ssh|http(s)?)|(git@[\w\.]+))(:(\/\/)?)([\w\.\/\-]*)">
- </div>
- </div>
- </div>
- <!-- /.box-body -->
- <div class="box-footer">
- <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button>
- <button type="submit" class="btn btn-info pull-right" id="save_new_repo">Register</button>
- </div>
- <!-- /.box-footer -->
- </form>
- </div>
-
- </div>
- <!-- /.modal-content -->
- </div>
- <!-- /.modal-dialog -->
-</div>
\ No newline at end of file
diff --git a/projecthandler/template/project/repository/repo_list.html b/projecthandler/template/project/repository/repo_list.html
deleted file mode 100644
index 1f0a8f3..0000000
--- a/projecthandler/template/project/repository/repo_list.html
+++ /dev/null
@@ -1,120 +0,0 @@
-{% extends "base.html" %}
-
-{% load staticfiles %}
-
-{% block head_block %}
-{{ block.super }}
-
-<style type="text/css">
-
- input:required:invalid, input:focus:invalid {
-
- background-position: right top;
- background-repeat: no-repeat;
- }
- input:required:valid {
-
- background-position: right top;
- background-repeat: no-repeat;
- }
-
-.form-control.select2-hidden-accessible {
- top: 30px;
-}
-
-
-</style>
-{% endblock %}
-
-{% block title_header_big %}
-{{ block.super }}
-{% endblock %}
-
-{% block left_sidebar %}
-<!-- Left side column. contains the sidebar -->
-{% include "repository/repo_base_left_sidebar.html" %}
-{% endblock %}
-
-
-{% block breadcrumb_body %}
-{{ block.super }}
-
-{% endblock %}
-
-{% block content_body %}
-{{ block.super }}
-{% csrf_token %}
- <div class="row">
-
- <div class="col-md-12">
-
- <div class="box">
- <div class="box-header with-border">
- <h3 class="box-title">Registered Repository</h3>
- <div class="box-tools">
- <a href="#" class="btn btn-block btn-primary btn-sm" data-toggle="modal"
- data-target="#modal_new_repository"><i
- class="fa fa-plus"></i><span> New Repository</span></a>
- </div>
- </div>
- <div class="box-body">
- <table id="deployments_table" class="table table-bordered table-striped">
- <thead>
- <tr>
-
- <th>Name</th>
- <th>Url</th>
- <th>Last Update</th>
- <th>Actions</th>
- </tr>
- </thead>
- <tbody>
- {% for repo in repos %}
- <tr>
-
- <td>
- {{ repo.name }}
- </td>
- <td>
- {{ repo.base_url }}
- </td>
- <td>{{ repo.last_update }}</td>
- <td>
- <div class="btn-group">
- <button type="button" class="btn btn-default"><i class="fa fa-cog"
- aria-hidden="true"></i>
- </button>
- <button type="button" class="btn btn-default dropdown-toggle"
- data-toggle="dropdown"
- aria-expanded="false">
- <span class="caret"></span>
- <span class="sr-only">Toggle Dropdown</span>
- </button>
- <ul class="dropdown-menu" role="menu">
- <li class='disabled'><a href='#'><i class="fa fa-edit fa-fw"></i>Edit</a>
- </li>
- <li><a href='{% url "repos:delete_repo" repo_id=repo.id %}'>
- <i class="fa fa-trash fa-fw"></i>Delete</a></li>
- </ul>
- </div>
- </td>
-
- </tr>
- {% endfor %}
- </tbody>
- </table>
- </div>
- </div>
- </div>
-
- </div>
-{% include 'repository/repo_create_modal.html' %}
-
-{% endblock %}
-
-{% block resource_block %}
-{{ block.super }}
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/projecthandler/urls/project.py b/projecthandler/urls/project.py
index 2054656..1e3b24e 100644
--- a/projecthandler/urls/project.py
+++ b/projecthandler/urls/project.py
@@ -18,24 +18,26 @@
from projecthandler import views
urlpatterns = [
+ url(r'^$', views.open_project, name='open_project'),
url(r'^list/', views.user_projects, name='projects_list'),
url(r'^new/', views.create_new_project, name='new_project'),
- url(r'^(?P<project_id>\w+)/$', views.open_project, name='open_project'),
- url(r'^(?P<project_id>\w+)/sdn/', include('sdnctrlhandler.urls', namespace='sdns'), name='sdns_base'),
- url(r'^(?P<project_id>\w+)/vims/', include('vimhandler.urls', namespace='vims'), name='vims_base'),
- url(r'^(?P<project_id>\w+)/instances/', include('instancehandler.urls', namespace='instances'), name='instances_base'),
- url(r'^(?P<project_id>\w+)/delete$', views.delete_project, name='delete_project'),
- url(r'^(?P<project_id>\w+)/descriptors/(?P<descriptor_type>\w+)/list$', views.show_descriptors, name='list_descriptors'),
- url(r'^(?P<project_id>\w+)/descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)(/$)',
+ url(r'^delete$', views.delete_project, name='delete_project'),
+ url(r'^switch/(?P<project_id>\w+)', views.switch_project, name='switch_project'),
+ url(r'^descriptors/(?P<descriptor_type>\w+)/list$', views.show_descriptors, name='list_descriptors'),
+ url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)(/$)',
views.edit_descriptor, name='edit_descriptor'),
- url(r'^(?P<project_id>\w+)/descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/delete$',
+ url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/delete$',
views.delete_descriptor,
name='delete_descriptor'),
- url(r'^(?P<project_id>\w+)/descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/action/(?P<action_name>[-\w]+)',
+ url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/action/(?P<action_name>[-\w]+)',
views.custom_action,
name='custom_action'),
- url(r'^(?P<project_id>\w+)/descriptors/(?P<descriptor_type>\w+)/new$', views.new_descriptor,
+ url(r'^descriptors/(?P<descriptor_type>\w+)/new$', views.new_descriptor,
name='new_descriptor'),
-
+ url(r'^composer$', views.open_composer, name='open_composer'),
+ url(r'^availablenodes', views.get_available_nodes, name='get_available_nodes'),
+ url(r'^sdn/', include('sdnctrlhandler.urls', namespace='sdns'), name='sdns_base'),
+ url(r'^vims/', include('vimhandler.urls', namespace='vims'), name='vims_base'),
+ url(r'^instances/', include('instancehandler.urls', namespace='instances'), name='instances_base'),
]
\ No newline at end of file
diff --git a/projecthandler/views.py b/projecthandler/views.py
index 0d50e10..144aa5b 100644
--- a/projecthandler/views.py
+++ b/projecthandler/views.py
@@ -20,11 +20,12 @@
import yaml
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse, JsonResponse
-from django.middleware.csrf import get_token
from django.shortcuts import render, redirect
+
+from authosm.exceptions import OSMAuthException
from lib.util import Util
-from projecthandler.osm_model import OsmProject
from lib.osm.osmclient.clientv2 import Client
+import authosm.utils as osmutils
logging.basicConfig(level=logging.DEBUG)
@@ -39,11 +40,12 @@
@login_required
def create_new_project(request):
if request.method == 'POST':
+ user = osmutils.get_user(request)
client = Client()
new_project_dict = request.POST.dict()
keys = ["name"]
project_data = dict(filter(lambda i: i[0] in keys and len(i[1]) > 0, new_project_dict.items()))
- result = client.project_create(request.session['token'], project_data)
+ result = client.project_create(user.get_token(), project_data)
if isinstance(result, dict) and 'error' in result and result['error']:
print result
return __response_handler(request, result['data'], url=None,
@@ -54,23 +56,208 @@
@login_required
def user_projects(request):
+ user = osmutils.get_user(request)
client = Client()
- result = client.project_list(request.session['token'])
+ result = client.project_list(user.get_token())
return render(request, 'projectlist.html', {
'projects': result['data'] if result and result['error'] is False else [],
})
+def open_composer(request):
+ user = osmutils.get_user(request)
+ project_id = user.project_id
+ result = {'project_id': project_id,
+ 'vertices': [
+ {"info": {"type": "vnf", "property": {"custom_label": ""},
+ "group": []}, "id": "vm"},
+ {"info": {"type": "vnf", "property": {"custom_label": ""},
+ "group": []}, "id": "vlan"},
+ {"info": {"type": "vnf", "property": {"custom_label": ""},
+ "group": []}, "id": "firewall"},
+ {"info": {"type": "vnf", "property": {"custom_label": ""},
+ "group": []}, "id": "ping"},
+
+ {"info": {"type": "ns_vl", "property": {"custom_label": ""},
+ "group": []}, "id": "vl1"},
+ {"info": {"type": "ns_vl", "property": {"custom_label": ""},
+ "group": []}, "id": "vl2"},
+ {"info": {"type": "ns_vl", "property": {"custom_label": ""},
+ "group": []}, "id": "vl3"},
+ ],
+ 'edges': [
+ {"source": "vm", "group": [], "target": "vl3", "view": "ns"},
+ {"source": "vlan", "group": [], "target": "vl3", "view": "ns"},
+ {"source": "vlan", "group": [], "target": "vl1", "view": "ns"},
+ {"source": "firewall", "group": [], "target": "vl1", "view": "ns"},
+ {"source": "firewall", "group": [], "target": "vl2", "view": "ns"},
+ {"source": "ping", "group": [], "target": "vl2", "view": "ns"},
+ ],
+ 'model': {
+ "layer": {
+
+ "ns": {
+ "nodes": {
+ "vnf": {
+ "addable": {
+ "callback": "addNode"
+ },
+ "removable": {
+ "callback": "removeNode"
+ },
+ "expands": "vnf"
+ },
+ "ns_vl": {
+ "addable": {
+ "callback": "addNode"
+ },
+ "removable": {
+ "callback": "removeNode"
+ }
+ },
+
+ },
+ "allowed_edges": {
+ "ns_vl": {
+ "destination": {
+ "vnf": {
+ "callback": "addLink",
+ "direct_edge": False,
+ "removable": {
+ "callback": "removeLink"
+ }
+ }
+ }
+ },
+ "vnf": {
+ "destination": {
+ "ns_vl": {
+ "callback": "addLink",
+ "direct_edge": False,
+ "removable": {
+ "callback": "removeLink"
+ }
+ },
+
+ }
+ }
+
+ }
+ },
+ "vnf": {
+ "nodes": {
+ "vdu": {
+ "addable": {
+ "callback": "addNode"
+ },
+ "removable": {
+ "callback": "removeNode"
+ }
+ },
+ "cp": {
+ "addable": {
+ "callback": "addNode"
+ },
+ "removable": {
+ "callback": "removeNode"
+ }
+ },
+
+ },
+ "allowed_edges": {
+ "vdu": {
+ "destination": {
+ "cp": {
+ "callback": "addLink",
+ "direct_edge": False,
+ "removable": {
+ "callback": "removeLink"
+ }
+ }
+ }
+ },
+ "cp": {
+ "destination": {
+ "vdu": {
+ "callback": "addLink",
+ "direct_edge": False,
+ "removable": {
+ "callback": "removeLink"
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": "OSM",
+ "version": 1,
+ "nodes": {
+ "vnf": {
+ "label": "vnf"
+ },
+ "ns_vl": {
+ "label": "vl"
+ },
+ "cp": {
+ "label": "cp"
+ },
+ "vdu": {
+ "label": "vdu"
+ }
+ },
+ "description": "osm",
+ "callback": {
+ "addNode": {
+ "file": "osm_controller.js",
+ "class": "OsmController"
+ },
+ "removeNode": {
+ "file": "osm_controller.js",
+ "class": "OsmController"
+ },
+ "addLink": {
+ "file": "osm_controller.js",
+ "class": "OsmController"
+ },
+ "removeLink": {
+ "file": "osm_controller.js",
+ "class": "OsmController"
+ }
+ }
+
+ }
+ }}
+ return __response_handler(request, result, 'project_graph_base.html')
+
+
+def get_available_nodes(request):
+
+ params = request.GET.dict()
+ nodes = {
+ 'ns': [{"types": [{"name": "Generic", "id": "vnf"},
+ {"name": "ping", "id": "vnf"},
+ {"name": "pong", "id": "vnf"},
+ {"name": "hackfest1-vm", "id": "vnf"}], "category_name": "Vnf"},
+ {"types": [{"name": "VL", "id": "ns_vl"}], "category_name": "VirtualLink"}],
+ 'vnf': [{"types": [{"name": "VDU", "id": "vdu"}], "category_name": "Vdu"},
+ {"types": [{"name": "CP", "id": "cp"}], "category_name": "CP"}]
+ }
+
+ return __response_handler(request, nodes[params['layer']])
+
+
@login_required
-def open_project(request, project_id=None):
+def open_project(request):
+ user = osmutils.get_user(request)
+ project_id = user.project_id
try:
- user = request.user
+
client = Client()
##TODO change with adhoc api call
- nsd = client.nsd_list(request.session['token'])
- vnfd = client.vnfd_list(request.session['token'])
- ns = client.ns_list(request.session['token'])
- vnf = client.vnf_list(request.session['token'])
+ nsd = client.nsd_list(user.get_token())
+ vnfd = client.vnfd_list(user.get_token())
+ ns = client.ns_list(user.get_token())
+ vnf = client.vnf_list(user.get_token())
project_overview = {
'owner': user.username,
'name': project_id,
@@ -92,9 +279,11 @@
@login_required
-def delete_project(request, project_id=None):
+def delete_project(request):
+ user = osmutils.get_user(request)
+ project_id = user.project_id
client = Client()
- result = client.project_delete(request.session['token'], project_id)
+ result = client.project_delete(user.get_token(), project_id)
if isinstance(result, dict) and 'error' in result and result['error']:
print result
return __response_handler(request, result['data'], url=None,
@@ -104,14 +293,23 @@
@login_required
-def show_descriptors(request, project_id=None, descriptor_type=None):
+def switch_project(request, project_id):
+ user = osmutils.get_user(request)
+ user.switch_project(project_id)
+ return redirect('projects:open_project')
+
+
+@login_required
+def show_descriptors(request, descriptor_type=None):
+ user = osmutils.get_user(request)
+ project_id = user.project_id
client = Client()
print request.GET.dict()
try:
if descriptor_type == 'nsd':
- descriptors = client.nsd_list(request.session['token'])
+ descriptors = client.nsd_list(user.get_token())
elif descriptor_type == 'vnfd':
- descriptors = client.vnfd_list(request.session['token'])
+ descriptors = client.vnfd_list(user.get_token())
except Exception as e:
log.exception(e)
descriptors = []
@@ -126,14 +324,15 @@
@login_required
-def delete_descriptor(request, project_id=None, descriptor_type=None, descriptor_id=None):
-
+def delete_descriptor(request, descriptor_type=None, descriptor_id=None):
+ user = osmutils.get_user(request)
+ project_id = user.project_id
try:
client = Client()
if descriptor_type == 'nsd':
- result = client.nsd_delete(request.session['token'], descriptor_id)
+ result = client.nsd_delete(user.get_token(), descriptor_id)
elif descriptor_type == 'vnfd':
- result = client.vnfd_delete(request.session['token'], descriptor_id)
+ result = client.vnfd_delete(user.get_token(), descriptor_id)
except Exception as e:
log.exception(e)
result = {'error': True, 'data': str(e)}
@@ -142,9 +341,9 @@
descriptors = {}
try:
if descriptor_type == 'nsd':
- descriptors = client.nsd_list(request.session['token'])
+ descriptors = client.nsd_list(user.get_token())
elif descriptor_type == 'vnfd':
- descriptors = client.vnfd_list(request.session['token'])
+ descriptors = client.vnfd_list(user.get_token())
except Exception as e:
log.exception(e)
@@ -161,8 +360,9 @@
@login_required
-def new_descriptor(request, project_id=None, descriptor_type=None):
-
+def new_descriptor(request, descriptor_type=None):
+ user = osmutils.get_user(request)
+ project_id = user.project_id
page = 'osm/descriptor/descriptor_new.html'
if request.method == 'GET':
request_id = request.GET.get('id', '')
@@ -181,9 +381,9 @@
try:
client = Client()
if descriptor_type == 'nsd':
- result = client.nsd_onboard(request.session['token'], file_uploaded)
+ result = client.nsd_onboard(user.get_token(), file_uploaded)
elif descriptor_type == 'vnfd':
- result = client.vnfd_onboard(request.session['token'], file_uploaded)
+ result = client.vnfd_onboard(user.get_token(), file_uploaded)
else:
log.debug('Create descriptor: Unknown data type')
result = {'error': True, 'data': 'Create descriptor: Unknown data type'}
@@ -202,7 +402,9 @@
@login_required
-def edit_descriptor(request, project_id=None, descriptor_id=None, descriptor_type=None):
+def edit_descriptor(request, descriptor_id=None, descriptor_type=None):
+ user = osmutils.get_user(request)
+ project_id = user.project_id
if request.method == 'POST':
print "edit_descriptor"
new_data = request.POST.get('text'),
@@ -216,14 +418,14 @@
elif data_type == 'json':
new_data = json.loads(request.POST.get('text'))
print new_data
- result = client.nsd_update(request.session['token'], descriptor_id, new_data)
+ result = client.nsd_update(user.get_token(), descriptor_id, new_data)
elif descriptor_type == 'vnfd':
if data_type == 'yaml':
new_data = yaml.load(request.POST.get('text'))
elif data_type == 'json':
new_data = json.loads(request.POST.get('text'))
print new_data
- result = client.vnfd_update(request.session['token'], descriptor_id, new_data)
+ result = client.vnfd_update(user.get_token(), descriptor_id, new_data)
else:
log.debug('Update descriptor: Unknown data type')
@@ -244,10 +446,10 @@
try:
client = Client()
if descriptor_type == 'nsd':
- result = client.nsd_get(request.session['token'], descriptor_id)
+ result = client.nsd_get(user.get_token(), descriptor_id)
print result
elif descriptor_type == 'vnfd':
- result = client.vnfd_get(request.session['token'], descriptor_id)
+ result = client.vnfd_get(user.get_token(), descriptor_id)
print result
except Exception as e:
@@ -269,14 +471,14 @@
@login_required
-def get_package_files_list(request, project_id, descriptor_id, descriptor_type):
- files_list = []
+def get_package_files_list(request, descriptor_id, descriptor_type):
+ user = osmutils.get_user(request)
try:
client = Client()
if descriptor_type == 'nsd':
- artifacts_res = client.nsd_artifacts(request.session['token'], descriptor_id)
+ artifacts_res = client.nsd_artifacts(user.get_token(), descriptor_id)
elif descriptor_type == 'vnfd':
- artifacts_res = client.vnf_packages_artifacts(request.session['token'], descriptor_id)
+ artifacts_res = client.vnf_packages_artifacts(user.get_token(), descriptor_id)
else:
return False
@@ -289,15 +491,16 @@
return __response_handler(request, result)
@login_required
-def download_pkg(request, project_id, descriptor_id, descriptor_type):
+def download_pkg(request, descriptor_id, descriptor_type):
+ user = osmutils.get_user(request)
file_name = "osm_export.tar.gz"
tar_pkg = None
try:
client = Client()
if descriptor_type == 'nsd':
- tar_pkg = client.get_nsd_pkg(request.session['token'], descriptor_id)
+ tar_pkg = client.get_nsd_pkg(user.get_token(), descriptor_id)
elif descriptor_type == 'vnfd':
- tar_pkg = client.get_vnfd_pkg(request.session['token'], descriptor_id)
+ tar_pkg = client.get_vnfd_pkg(user.get_token(), descriptor_id)
except Exception as e:
log.exception(e)
@@ -309,10 +512,10 @@
@login_required
-def custom_action(request, project_id=None, descriptor_id=None, descriptor_type=None, action_name=None):
+def custom_action(request, descriptor_id=None, descriptor_type=None, action_name=None):
if request.method == 'GET':
print "Custom action: " + action_name
- return globals()[action_name](request, project_id, descriptor_id, descriptor_type)
+ return globals()[action_name](request, descriptor_id, descriptor_type)
def __response_handler(request, data_res, url=None, to_redirect=None, *args, **kwargs):