nsi list, show, create, delete
[osm/LW-UI.git] / instancehandler / views.py
index ad7ead7..53dfb22 100644 (file)
@@ -15,7 +15,6 @@
 #
 
 from django.shortcuts import render, redirect
-#from django.contrib.auth.decorators import login_required
 from django.http import HttpResponse, JsonResponse
 import yaml
 import json
@@ -48,6 +47,8 @@ def list(request, type=None):
         instance_list = client.vnf_list(user.get_token())
     elif type == 'pdu':
         instance_list = client.pdu_list(user.get_token())
+    elif type == 'nsi':
+        instance_list = client.nsi_list(user.get_token())
 
     result['instances'] = instance_list['data'] if instance_list and instance_list['error'] is False else []
 
@@ -56,8 +57,10 @@ def list(request, type=None):
 @login_required
 def create(request, type=None):
     result = {}
+    config_vim_account_id = {}
     user = osmutils.get_user(request)
     client = Client()
+
     if type == 'ns':
         try:
 
@@ -96,6 +99,24 @@ def create(request, type=None):
             return __response_handler(request, {}, 'instances:list', to_redirect=True, type='ns', )
         result = client.ns_create(user.get_token(), ns_data)
         return __response_handler(request, result, 'instances:list', to_redirect=True, type='ns')
+
+    elif type == 'nsi':
+        try:
+            nsi_data = {
+                "nsiName": request.POST.get('nsiName', 'WithoutName'),
+                "nsiDescription": request.POST.get('nsiDescription', ''),
+                "nstId": request.POST.get('nstId', ''),
+                "vimAccountId": request.POST.get('vimAccountId', ''),
+            }
+            
+            if 'ssh_key' in request.POST and request.POST.get('ssh_key') != '':
+                nsi_data["ssh_keys"] = [request.POST.get('ssh_key')]
+        except Exception as e:
+            request.session["OSM_ERROR"] = "Error creating the NSI; Invalid parameters provided."
+            return __response_handler(request, {}, 'instances:list', to_redirect=True, type=type)
+        result = client.nsi_create(user.get_token(), nsi_data)
+        return __response_handler(request, result, 'instances:list', to_redirect=True, type=type)
+
     elif type == 'pdu':
         interface_param_name = request.POST.getlist('interfaces_name')
         interface_param_ip = request.POST.getlist('interfaces_ip')
@@ -128,12 +149,15 @@ def ns_operations(request, instance_id=None, type=None):
     user = osmutils.get_user(request)
     project_id = user.project_id
 
-    result = {'type': 'ns', 'project_id': project_id, 'instance_id': instance_id}
+    result = {'type': type, 'project_id': project_id, 'instance_id': instance_id}
     raw_content_types = request.META.get('HTTP_ACCEPT', '*/*').split(',')
     if 'application/json' not in raw_content_types:
         return __response_handler(request, result, 'instance_operations_list.html')
     client = Client()
-    op_list = client.ns_op_list(user.get_token(), instance_id)
+    if type == 'ns':
+        op_list = client.ns_op_list(user.get_token(), instance_id)
+    elif type == 'nsi':
+        op_list = client.nsi_op_list(user.get_token(), instance_id)
     result['operations'] = op_list['data'] if op_list and op_list['error'] is False else []
 
     return __response_handler(request, result, 'instance_operations_list.html')
@@ -164,7 +188,6 @@ def action(request, instance_id=None, type=None):
     if result['error']:
         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)
 
@@ -179,8 +202,14 @@ def delete(request, instance_id=None, type=None):
         result = client.ns_delete(user.get_token(), instance_id, force)
     elif type == 'pdu':
         result = client.pdu_delete(user.get_token(), instance_id)
-    print result
-    return __response_handler(request, result, 'instances:list', to_redirect=True, type='ns')
+    elif type == 'nsi':
+        result = client.nsi_delete(user.get_token(), instance_id, force)
+
+    if result['error']:
+        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 show_topology(request, instance_id=None, type=None):
@@ -224,6 +253,8 @@ def show(request, instance_id=None, type=None):
         result = client.vnf_get(user.get_token(), instance_id)
     elif type == 'pdu':
         result = client.pdu_get(user.get_token(), instance_id)
+    elif type == 'nsi':
+        result = client.nsi_get(user.get_token(), instance_id)
     print result
     return __response_handler(request, result)