nsi list, show, create, delete

Change-Id: I0c7757cdb7a38712e8960806765a2508b0013ce6
Signed-off-by: lombardofr <lombardo@everyup.it>
diff --git a/static/src/instancehandler/instance_create.js b/static/src/instancehandler/instance_create.js
index 4273f90..3cce0c4 100644
--- a/static/src/instancehandler/instance_create.js
+++ b/static/src/instancehandler/instance_create.js
@@ -100,4 +100,66 @@
     }
 
     $('#modal_new_instance').modal('show');
+}
+function openModalCreateNSI(args) {
+    // load vim account list
+    select2_groups = $('#vimAccountIdNSI').select2({
+        placeholder: 'Select VIM',
+        width: '100%',
+        ajax: {
+            url: args.vim_list_url,
+            dataType: 'json',
+            processResults: function (data) {
+                vims = [];
+                if (data['datacenters']) {
+                    for (d in data['datacenters']) {
+                        var datacenter = data['datacenters'][d];
+                        vims.push({ id: datacenter['_id'], text: datacenter['name'] })
+                    }
+                }
+
+                return {
+                    results: vims
+                };
+            }
+        }
+    });
+
+    // load nsd list
+    select2_groups = $('#nstId').select2({
+        placeholder: 'Select NST',
+        width: '100%',
+        ajax: {
+            url: args.nst_list_url,
+            dataType: 'json',
+            processResults: function (data) {
+                nst_list = [];
+
+                if (data['templates']) {
+                    for (d in data['templates']) {
+                        var nst = data['templates'][d];
+                        nst_list.push({ id: nst['_id'], text: nst['name'] })
+                    }
+                }
+
+                return {
+                    results: nst_list
+                };
+            }
+        }
+    });
+
+    if (args.descriptor_id) {
+        // Set the value, creating a new option if necessary
+        if ($('#nstId').find("option[value='" + args.descriptor_id + "']").length) {
+            $('#nstId').val(args.descriptor_id).trigger('change');
+        } else {
+            // Create a DOM Option and pre-select by default
+            var newOption = new Option(args.descriptor_name, args.descriptor_id, true, true);
+            // Append it to the select
+            $('#nstId').append(newOption).trigger('change');
+        }
+    }
+
+    $('#modal_new_nsi').modal('show');
 }
\ No newline at end of file
diff --git a/static/src/instancehandler/instance_list.js b/static/src/instancehandler/instance_list.js
index 88a1f57..7fa6524 100644
--- a/static/src/instancehandler/instance_list.js
+++ b/static/src/instancehandler/instance_list.js
@@ -57,9 +57,61 @@
                         location.reload();
                     }
                 },
-                error: function (error) {
+                error: function (result) {
                     dialog.modal('hide');
-                    bootbox.alert("An error occurred.");
+                    var data = result.responseJSON;
+                        var title = "Error " + (data && data.code ? data.code : 'unknown');
+                        var message = data && data.detail ? data.detail : 'No detail available.';
+                        bootbox.alert({
+                            title: title,
+                            message: message
+                        });
+                }
+            });
+        }
+    })
+}
+function deleteNsi(instance_name, instance_id, force) {
+    var url = '/instances/nsi/'+instance_id+'/delete';
+    bootbox.confirm("Are you sure want to delete " + instance_name + "?", function (result) {
+        if (result) {
+            if (force)
+                url = url + '?force=true';
+            var dialog = bootbox.dialog({
+                message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
+                closeButton: true
+            });
+            $.ajax({
+                url: url,
+                type: 'GET',
+                dataType: "json",
+                contentType: "application/json;charset=utf-8",
+                success: function (result) {
+                    console.log(result)
+                    if (result['error'] == true){
+                        dialog.modal('hide');
+                        var data = result.responseJSON;
+                        var title = "Error " + (data && data.code ? data.code : 'unknown');
+                        var message = data && data.detail ? data.detail : 'No detail available.';
+                        bootbox.alert({
+                            title: title,
+                            message: message
+                        });
+                    }
+                    else {
+                        dialog.modal('hide');
+                        location.reload();
+                    }
+                },
+                error: function (result) {
+                    dialog.modal('hide');
+                    var data = result.responseJSON;
+                        var title = "Error " + (data && data.code ? data.code : 'unknown');
+                        var message = data && data.detail ? data.detail : 'No detail available.';
+                        bootbox.alert({
+                            title: title,
+                            message: message
+                        });
                 }
             });
         }