clone packages
Change-Id: Iefe34dc4309ebc53cdee6f2d59924e10ea72e487
Signed-off-by: lombardofr <lombardo@everyup.it>
diff --git a/projecthandler/template/project/osm/descriptor/descriptorlist.html b/projecthandler/template/project/osm/descriptor/descriptorlist.html
index 734259f..b2222e2 100644
--- a/projecthandler/template/project/osm/descriptor/descriptorlist.html
+++ b/projecthandler/template/project/osm/descriptor/descriptorlist.html
@@ -30,46 +30,7 @@
</tr>
</thead>
<tbody>
- {% for k in descriptors %}
- <tr role="row">
- <td>{{ k|get:"short-name" }} </td>
- <td>{{ k|get:"_id" }}</td>
- <td>{{ k|get:"description" }} </td>
- <td>{{ k|get:"vendor" }} </td>
- <td>{{ k|get:"version" }} </td>
- <td>
- <div class="btn-group">
- {% 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 "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('{{ 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('{{ 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/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' 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( '{{ descriptor_type }}', '{{ k|get:"_id" }}')">
- <i class="far fa-trash-alt"></i></button>
- </div>
- </td>
- </tr>
- {% endfor %}
</tbody>
</table>
diff --git a/projecthandler/template/project/osm/osm_project_descriptors.html b/projecthandler/template/project/osm/osm_project_descriptors.html
index 182c8cc..4478ade 100644
--- a/projecthandler/template/project/osm/osm_project_descriptors.html
+++ b/projecthandler/template/project/osm/osm_project_descriptors.html
@@ -76,7 +76,7 @@
"columns": [
{
"render": function (data, type, row) {
- return row['short-name'];
+ return row['short-name'] || '';
},
"targets": 0
},
@@ -120,6 +120,10 @@
' data-toggle="tooltip" data-placement="top" title="Show content"\n' +
' onclick="javascript:openPackageContentList(\''+ descriptor_type +'\', \''+row["_id"]+'\')">\n' +
' <i class="fa fa-folder-open"></i></button>\n' +
+ '<button type="button" class="btn btn-default" data-container="body"\n' +
+ ' data-toggle="tooltip" data-placement="top" title="Clone"\n' +
+ ' onclick="javascript:clonePackage(\''+ descriptor_type +'\', \''+row["_id"]+'\')">\n' +
+ ' <i class="fa fa-clone"></i></button>\n' +
'<button type="button" class="btn btn-default" data-container="body"\n' +
' data-toggle="tooltip" data-placement="top" title="Show Graph"\n' +
' onclick="location.href=\'/projects/graph?type='+descriptor_type+'&id='+row["_id"] +'\'"\n' +
@@ -130,7 +134,7 @@
' <i class="fa fa-download fa-fw"></i></button>\n' +
'<button type="button" class="btn btn-default" data-container="body"\n' +
' data-toggle="tooltip" data-placement="top" title="Delete"\n' +
- ' onclick="javascript:deletePackage( \'' + descriptor_type + '\', \''+row["_id"] + '\')">\n' +
+ ' onclick="javascript:deletePackage( \'' + descriptor_type + '\', \''+row["_id"] + '\', \''+row["name"] + '\')">\n' +
' <i class="far fa-trash-alt"></i></button>\n' +
'</div>';
diff --git a/projecthandler/urls/project.py b/projecthandler/urls/project.py
index 9d653b6..91c79c7 100644
--- a/projecthandler/urls/project.py
+++ b/projecthandler/urls/project.py
@@ -30,6 +30,9 @@
url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/delete$',
views.delete_descriptor,
name='delete_descriptor'),
+ url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/clone',
+ views.clone_descriptor,
+ name='clone_descriptor'),
url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/action/(?P<action_name>[-\w]+)',
views.custom_action,
name='custom_action'),
diff --git a/projecthandler/views.py b/projecthandler/views.py
index 06b4770..1f1573d 100644
--- a/projecthandler/views.py
+++ b/projecthandler/views.py
@@ -376,6 +376,32 @@
}, url)
+@login_required
+def clone_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_clone(user.get_token(), descriptor_id)
+ elif descriptor_type == 'vnfd':
+ result = client.vnfd_clone(user.get_token(), descriptor_id)
+ else:
+ log.debug('Update descriptor: Unknown data type')
+ result = {'error': True, 'data': 'Update descriptor: Unknown data type'}
+ except Exception as e:
+ log.exception(e)
+ result = {'error': True, 'data': str(e)}
+ print result
+ if result['error'] == True:
+ return __response_handler(request, result['data'], url=None,
+ status=result['data']['status'] if 'status' in result['data'] else 500)
+
+ else:
+ return __response_handler(request, {}, url=None, status=200)
+
+
@login_required
def new_descriptor(request, descriptor_type=None):