pdu: list, create, show, delete
Change-Id: I1d184eba4fef6cd55719ef5b0e51a29b05c34b96
Signed-off-by: lombardofr <lombardo@everyup.it>
diff --git a/static/src/instancehandler/instance_create.js b/static/src/instancehandler/instance_create.js
index 47cba12..4273f90 100644
--- a/static/src/instancehandler/instance_create.js
+++ b/static/src/instancehandler/instance_create.js
@@ -14,6 +14,31 @@
limitations under the License.
*/
+function openModalCreatePDU(args) {
+ var select2_groups = $('#pdu_vim_accounts').select2({
+ placeholder: 'Select Vims',
+ 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
+ };
+ }
+ }
+ });
+
+ $('#modal_new_pdu').modal('show');
+}
+
function openModalCreateNS(args) {
// load vim account list
select2_groups = $('#vimAccountId').select2({
@@ -27,7 +52,7 @@
if (data['datacenters']) {
for (d in data['datacenters']) {
var datacenter = data['datacenters'][d];
- vims.push({id: datacenter['_id'], text: datacenter['name']})
+ vims.push({ id: datacenter['_id'], text: datacenter['name'] })
}
}
@@ -51,7 +76,7 @@
if (data['descriptors']) {
for (d in data['descriptors']) {
var nsd = data['descriptors'][d];
- nsd_list.push({id: nsd['_id'], text: nsd['name']})
+ nsd_list.push({ id: nsd['_id'], text: nsd['name'] })
}
}
diff --git a/static/src/instancehandler/instance_list.js b/static/src/instancehandler/instance_list.js
index a2c2003..88a1f57 100644
--- a/static/src/instancehandler/instance_list.js
+++ b/static/src/instancehandler/instance_list.js
@@ -66,6 +66,38 @@
})
}
+function deletePDU(instance_name, instance_id) {
+ var url = '/instances/pdu/'+instance_id+'/delete';
+ bootbox.confirm("Are you sure want to delete " + instance_name + "?", function (result) {
+ if (result) {
+ 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) {
+ if (result['error'] == true){
+ dialog.modal('hide');
+ bootbox.alert("An error occurred.");
+ }
+ else {
+ dialog.modal('hide');
+ location.reload();
+ }
+ },
+ error: function (error) {
+ dialog.modal('hide');
+ bootbox.alert("An error occurred.");
+ }
+ });
+ }
+ })
+}
+
var addFormGroup = function (event) {
event.preventDefault();
@@ -87,6 +119,27 @@
$formGroup.remove();
};
+var addInterfaceGroup = function (event) {
+ event.preventDefault();
+
+ var $formGroup = $(this).closest('.interface-group');
+ var $formGroupClone = $formGroup.clone();
+
+ $(this)
+ .toggleClass('btn-success btn-add btn-danger btn-remove')
+ .html('–');
+
+ $formGroupClone.find('input').val('');
+ $formGroupClone.insertAfter($formGroup);
+
+};
+
+var removeInterfaceGroup = function (event) {
+ event.preventDefault();
+ var $formGroup = $(this).closest('.interface-group');
+ $formGroup.remove();
+};
+
function showTopology(type, instance_id) {
var url = '/instances/'+type+'/'+instance_id+'/topology';
window.location = url;
@@ -156,8 +209,39 @@
}, json_editor_settings);
- $(document).on('click', '.btn-add', addFormGroup);
- $(document).on('click', '.btn-remove', removeFormGroup);
+ $(document).on('click', '.primitive-group .btn-add', addFormGroup);
+ $(document).on('click', '.primitive-group .btn-remove', removeFormGroup);
+
+ $(document).on('click', '.interface-group .btn-add', addInterfaceGroup);
+ $(document).on('click', '.interface-group .btn-remove', removeInterfaceGroup);
+
+ $("#formCreatePDU").submit(function (event) {
+ event.preventDefault(); //prevent default action
+ var post_url = $(this).attr("action"); //get form action url
+ var request_method = $(this).attr("method"); //get form GET/POST method
+ var form_data = new FormData(this); //Encode form elements for submission
+ $.ajax({
+ url: post_url,
+ type: request_method,
+ data: form_data,
+ headers: {
+ "Accept": 'application/json'
+ },
+ contentType: false,
+ processData: false
+ }).done(function (response, textStatus, jqXHR) {
+ table.ajax.reload();
+ $('#modal_new_pdu').modal('hide');
+ }).fail(function (result) {
+ var data = result.responseJSON;
+ var title = "Error " + (data.code ? data.code : 'unknown');
+ var message = data.detail ? data.detail : 'No detail available.';
+ bootbox.alert({
+ title: title,
+ message: message
+ });
+ });
+ });
$("#formActionNS").submit(function (event) {
event.preventDefault(); //prevent default action