2 * Copyright 2016-2017 ZTE Corporation.
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
16 var templateParameters = {
\r
22 var lcmHandler = function () {
\r
23 this._addOwnEvents();
\r
24 jQuery.i18n.properties({
\r
26 name:'lcm-template-parameters-i18n',
\r
32 lcmHandler.prototype = {
\r
33 _addOwnEvents: function () {
\r
34 $('#createNS').click(this.okAction);
\r
36 okAction: function () {
\r
37 if(!checkLocation(templateParameters.parameters)) {
\r
38 alert('Location must be selected in Template Parameters');
\r
41 $.isLoading({ text: "Creating service..." });
\r
42 var serviceInstance = {
\r
43 serviceTemplateId: $("#svcTempl").val(),
\r
44 serviceName: $('#svcName').val(),
\r
45 description: $('#svcDesc').val(),
\r
46 inputParameters: collectServiceParameters(templateParameters.parameters)
\r
48 var gatewayService = '/openoapi/servicegateway/v1/services';
\r
50 fetchServiceTemplateBy(serviceInstance.serviceTemplateId)
\r
52 function(template) {
\r
53 serviceInstance.templateName = template.name;
\r
54 serviceInstance.serviceType = template.serviceType;
\r
55 return createNetworkServiceInstance(template, serviceInstance, gatewayService);
\r
58 function(response) {
\r
59 $.isLoading('hide');
\r
60 if(response.status === 'success') {
\r
61 updateTable(response.instance);
\r
62 $('#vmAppDialog').removeClass('in').css('display', 'none');
\r
64 showErrorMessage('Create service failed', response.errorResult);
\r
71 function showErrorMessage(title, result) {
\r
72 var info = '<br/>' + '<h5>' + title + '</h5><hr/>';
\r
73 info = info + '<h6>Status: ' + result.status + '</h6><p/>';
\r
74 info = info + '<h6>Description: </h6>';
\r
75 if(result.statusDescription.forEach === undefined) {
\r
76 info = info + '<h6>' + result.statusDescription + '</h6><p/>';
\r
78 result.statusDescription.forEach(function(message) {
\r
79 info = info + '<h6>' + message + '</h6><p/>';
\r
82 info = info + '<h6>Error code: '+ result.errorCode + '</h6>';
\r
83 $.bootstrapGrowl(info, {
\r
92 function checkLocation(parameters) {
\r
93 var checkPass = true;
\r
95 for(i = 0; i < parameters.length; i++) {
\r
96 if(parameters[i].type === 'location') {
\r
97 var value = $('#' + parameters[i].id).val();
\r
98 if(value === undefined || value === 'select') {
\r
106 function initParameterTab() {
\r
107 // Service template was not changed. Do not re-initiate the parameter tab.
\r
108 if (!templateParameters.changed) {
\r
111 var templateId = $("#svcTempl").val();
\r
112 if ('select' === templateId) {
\r
113 document.getElementById("templateParameterTab").innerHTML = '';
\r
117 fetchServiceTemplateBy(templateId)
\r
119 function(template) {
\r
120 if(template.serviceType === 'GSO') {
\r
121 return fetchGsoTemplateInputParameters(templateId, template);
\r
122 } else if(template.serviceType === 'NFVO') {
\r
123 return fetchNfvoTemplateInputParameters(templateId, template);
\r
124 } else if(template.serviceType === 'SDNO') {
\r
125 return fetchSdnoTemplateInputParameters(templateId, template);
\r
129 function(parameters) {
\r
130 var components = transformToComponents(parameters);
\r
131 document.getElementById("templateParameterTab").innerHTML = components;
\r
136 function fetchServiceTemplateBy(templateId) {
\r
137 var defer = $.Deferred();
\r
138 var serviceTemplateUri = '/openoapi/catalog/v1/servicetemplates/' + templateId;
\r
143 url: serviceTemplateUri,
\r
144 contentType: "application/json"
\r
147 function(response) {
\r
148 template.name = response.templateName;
\r
149 template.gsarId = response.csarId;
\r
150 template.id = response.id;
\r
151 template.nodeType = '';
\r
152 return fetchCsar(template.gsarId);
\r
155 function(response) {
\r
156 if(response.type === 'GSAR') {
\r
157 template.serviceType = 'GSO';
\r
158 } else if(response.type === 'NSAR' || response.type === 'NFAR') {
\r
159 template.serviceType = 'NFVO';
\r
160 } else if(response.type === 'SSAR') {
\r
161 template.serviceType = "SDNO";
\r
163 defer.resolve(template)
\r
169 function fetchCsar(csarId) {
\r
170 var queryCsarUri = '/openoapi/catalog/v1/csars/' + csarId;
\r
174 contentType: "application/json"
\r
178 function fetchGsoTemplateInputParameters(templateId, template) {
\r
179 var defer = $.Deferred();
\r
181 fetchTemplateParameterDefinitions(templateId),
\r
182 fetchGsoNestingTemplateParameters(templateId),
\r
184 fetchSdnController()
\r
186 function (templateParameterResponse, nestingTempatesParas, vimInfoResponse, sdnControllersResponse) {
\r
187 var inputs = templateParameterResponse[0].inputs.map(function(input) {
\r
188 input.showName = input.name;
\r
189 if(template.nodeType === null || template.nodeType === undefined || template.nodeType.length === 0) {
\r
190 input.i18nKey = input.name;
\r
192 input.i18nKey = template.nodeType + '.' +input.name;
\r
196 var inputParas = concat(inputs, nestingTempatesParas);
\r
197 var vims = translateToVimInfo(vimInfoResponse[0]);
\r
198 var sdnControllers = translateToSdnControllers(sdnControllersResponse[0]);
\r
199 templateParameters = translateToTemplateParameters(inputParas, vims, sdnControllers);
\r
200 defer.resolve(templateParameters);
\r
206 function fetchGsoNestingTemplateParameters(templateId) {
\r
207 var defer = $.Deferred();
\r
209 fetchNodeTemplates(templateId)
\r
211 function(nodeTemplates) {
\r
212 var count = nodeTemplates.length;
\r
217 var nestingParasAggregatation = aggregate(count, function(nestingParas) {
\r
218 defer.resolve(nestingParas);
\r
220 nodeTemplates.forEach(function(nodeTemplate) {
\r
221 var nestingNodeUri = '/openoapi/catalog/v1/servicetemplates/nesting?nodeTypeIds=' + nodeTemplate.type;
\r
225 url: nestingNodeUri
\r
228 function(serviceTemplates) {
\r
229 var nodeAggregatation = aggregate(serviceTemplates.length, function(oneNodeParameters) {
\r
230 nestingParasAggregatation.notify(oneNodeParameters);
\r
232 serviceTemplates.forEach(function(serviceTemplate) {
\r
233 if(serviceTemplate === null || serviceTemplate === undefined || serviceTemplate.inputs === undefined || serviceTemplate.csarId === undefined)
\r
235 nodeAggregatation.notify([]);
\r
238 var inputs = serviceTemplate.inputs.map(function(input) {
\r
239 input.showName = input.name;
\r
240 input.name = nodeTemplate.type + '.' + input.name;
\r
241 input.i18nKey = nodeTemplate.type + '.' + input.name;
\r
245 fetchCsar(serviceTemplate.csarId)
\r
247 function(response) {
\r
248 if(response.type === 'NSAR' || response.type === 'NFAR') {
\r
250 name: nodeTemplate.type + '.location',
\r
252 description: nodeTemplate.name + ' Location',
\r
254 showName: nodeTemplate.name + ' Location',
\r
255 i18nKey: nodeTemplate.name + ' Location'
\r
258 name: nodeTemplate.type + '.sdncontroller',
\r
259 type: 'sdncontroller',
\r
260 description: nodeTemplate.name + ' SDN Controller',
\r
262 showName: nodeTemplate.name + ' SDN Controller',
\r
263 i18nKey: nodeTemplate.name + ' SDN Controller'
\r
266 nodeAggregatation.notify(inputs);
\r
278 function fetchNodeTemplates(templateId) {
\r
279 var nodeTemplateUri = '/openoapi/catalog/v1/servicetemplates/'+ templateId +'/nodetemplates';
\r
282 url: nodeTemplateUri
\r
286 function aggregate(n, deferFun) {
\r
287 var aggregation = $.Deferred();
\r
290 aggregation.progress(function(array) {
\r
291 pushAll(result, array);
\r
297 return aggregation;
\r
300 function concat(array1, array2) {
\r
302 pushAll(result, array1);
\r
303 pushAll(result, array2);
\r
307 function pushAll(acc, array) {
\r
309 array.forEach(function(element) {
\r
310 result.push(element)
\r
315 function translateToTemplateParameters(inputs, vims, controllers) {
\r
316 var inputParameters = [];
\r
318 for (i = 0; i < inputs.length; i += 1) {
\r
319 inputParameters[i] = {
\r
320 name: inputs[i].name,
\r
321 type: inputs[i].type,
\r
322 description: inputs[i].description,
\r
323 defaultValue: inputs[i].defaultValue,
\r
324 required: inputs[i].required,
\r
325 id: 'parameters_' + i,
\r
326 value: inputs[i].defaultValue || '',
\r
327 showName: inputs[i].showName
\r
330 return {changed: false, parameters: inputParameters, vimInfos: vims, sdnControllers: controllers};
\r
333 function fetchNfvoTemplateInputParameters(templateId, template) {
\r
334 var defer = $.Deferred();
\r
336 fetchTemplateParameterDefinitions(templateId),
\r
338 fetchSdnController()
\r
340 function (templateParameterResponse, vimInfoResponse, sdnControllerResponse) {
\r
341 var vims = translateToVimInfo(vimInfoResponse[0]);
\r
342 var sdnControllers = translateToSdnControllers(sdnControllerResponse[0]);
\r
343 var inputParas = templateParameterResponse[0].inputs;
\r
344 inputParas = inputParas.map(function(input) {
\r
345 input.showName = input.name;
\r
346 input.i18nKey = template.nodeType + '.' + input.name;
\r
352 description: 'Location',
\r
354 showName: 'Location',
\r
355 i18nKey: 'Location'
\r
358 name: 'sdncontroller',
\r
359 type: 'sdncontroller',
\r
360 description: 'SDN Controller',
\r
362 showName: 'SDN Controller',
\r
363 i18nKey: 'SDN Controller'
\r
365 templateParameters = translateToTemplateParameters(inputParas, vims, sdnControllers);
\r
366 defer.resolve(templateParameters);
\r
372 function fetchSdnoTemplateInputParameters(templateId, template) {
\r
373 var defer = $.Deferred();
\r
375 fetchTemplateParameterDefinitions(templateId)
\r
377 function (templateParameterResponse) {
\r
378 var inputs = templateParameterResponse.inputs.map(function(input) {
\r
379 input.showName = input.name;
\r
380 input.i18nKey = template.nodeType + '.' + input.name;
\r
383 templateParameters = translateToTemplateParameters(inputs, [], []);
\r
384 defer.resolve(templateParameters);
\r
390 function fetchTemplateParameterDefinitions(templateId) {
\r
391 var queryParametersUri = '/openoapi/catalog/v1/servicetemplates/' + templateId + '/parameters';
\r
394 url: queryParametersUri
\r
398 function fetchVimInfo() {
\r
399 var vimQueryUri = '/openoapi/extsys/v1/vims';
\r
406 function fetchSdnController() {
\r
407 var sdnControllerUri = '/openoapi/extsys/v1/sdncontrollers';
\r
410 url: sdnControllerUri
\r
414 function translateToVimInfo(vims) {
\r
415 return vims.map(function (vim) {
\r
417 optionId: vim.vimId,
\r
418 optionName: vim.name
\r
423 function translateToSdnControllers(controllers) {
\r
424 return controllers.map(function(controller) {
\r
426 optionId: controller.sdnControllerId,
\r
427 optionName: controller.name
\r
432 function transformToComponents(templateParas) {
\r
433 var inputs = templateParas.parameters;
\r
434 var vimInfos = templateParas.vimInfos;
\r
435 var sdnControllers = templateParas.sdnControllers;
\r
436 var components = '';
\r
437 inputs.forEach(function (inputPara) {
\r
438 if(inputPara.type === 'location') {
\r
439 components = components + generateComboxComponent(inputPara, vimInfos);
\r
440 } else if(inputPara.type === 'sdncontroller') {
\r
441 components = components + generateComboxComponent(inputPara, sdnControllers);
\r
443 components = components + generateComponent(inputPara);
\r
449 function generateComboxComponent(inputPara, items) {
\r
450 var component = '<div class="form-group" style="margin-left:25px;margin-bottom:15px;">' +
\r
451 '<label class="col-sm-3 control-label">' +
\r
452 '<span>'+ inputPara.showName +'</span>' +
\r
453 '<span class="required">*</span>' +
\r
455 '<div class="col-sm-7">' +
\r
456 '<select class="form-control" style ="padding-top: 0px;padding-bottom: 0px;"' +
\r
457 ' id="' + inputPara.id + '" name="'+ inputPara.name +'">' +
\r
458 transformToOptions(items) +
\r
459 '</select></div></div>';
\r
463 function transformToOptions(items) {
\r
464 var options = '<option value="select">--select--</option>';
\r
466 for (i = 0; i < items.length; i += 1) {
\r
467 var option = '<option value="' + items[i].optionId + '">' + items[i].optionName + '</option>';
\r
468 options = options + option;
\r
473 function generateComponent(inputPara) {
\r
474 var component = '<div class="mT15 form-group" style="margin-left:25px;">' +
\r
475 '<label class="col-sm-3 control-label">' +
\r
476 '<span>' + showName(inputPara) + '</span>' + generateRequiredLabel(inputPara) +
\r
478 '<div class="col-sm-7">' +
\r
479 '<input type="text" id="' + inputPara.id + '" name="parameter description" class="form-control" placeholder="' +
\r
480 showName(inputPara) + '" value="' + inputPara.value + '" />' +
\r
485 function showName(inputPara) {
\r
486 var name = $.i18n.prop(inputPara.name)
\r
487 if(name.length === 0 || name.slice(0, 1) === '[') {
\r
488 name = inputPara.showName;
\r
493 function generateRequiredLabel(parameter) {
\r
494 var requiredLabel = '';
\r
495 if (parameter.required === 'true') {
\r
496 requiredLabel = '<span class="required">*</span>';
\r
498 return requiredLabel;
\r
501 function createNetworkServiceInstance(template, serviceInstance, gatewayService) {
\r
502 if (template.serviceType === 'GSO') {
\r
503 return createGsoServiceInstance(gatewayService, serviceInstance, template);
\r
504 } else if (template.serviceType === 'NFVO') {
\r
505 return createNfvoServiceInstance(gatewayService, serviceInstance, template);
\r
506 } else if (template.serviceType === 'SDNO') {
\r
507 return createSdnoServiceInstance(gatewayService, serviceInstance);
\r
511 function createGsoServiceInstance(gatewayService, serviceInstance, serviceTemplate) {
\r
512 var defer = $.Deferred();
\r
513 var gsoLcmUri = '/openoapi/gso/v1/services';
\r
516 'name': serviceInstance.serviceName,
\r
517 'description': serviceInstance.description,
\r
518 'serviceDefId': serviceTemplate.gsarId,
\r
519 'templateId': serviceInstance.serviceTemplateId,
\r
520 'templateName': serviceTemplate.name,
\r
521 'gatewayUri': gsoLcmUri,
\r
522 'parameters': serviceInstance.inputParameters
\r
527 url: gatewayService,
\r
528 contentType: "application/json",
\r
530 data: JSON.stringify(parameter)
\r
531 })).then(function(response) {
\r
532 if(response.result.status === 'success') {
\r
533 serviceInstance.serviceId = response.serviceId;
\r
534 var gsoServiceUri = '/openoapi/gso/v1/services/' + response.serviceId;
\r
535 var timerDefer = $.Deferred();
\r
536 var timeout = 3600000;
\r
537 var fun = function() {
\r
538 if(timeout === 0) {
\r
539 timerDefer.resolve({
\r
541 statusDescription: 'Operation is timeout!',
\r
546 timeout = timeout - 1000;
\r
553 function(response) {
\r
554 if(response.result === 'success' || response.result === 'failed') {
\r
555 timerDefer.resolve(response);
\r
560 var timerId = setInterval(fun, 1000);
\r
561 $.when(timerDefer).then(
\r
562 function(responseDesc) {
\r
563 clearInterval(timerId);
\r
564 if(responseDesc.result === 'success') {
\r
565 defer.resolve({status: 'success', instance: serviceInstance});
\r
570 status: responseDesc.result,
\r
571 statusDescription: 'fail to create the service',
\r
578 defer.resolve({status: 'fail', errorResult: {status:'fail', statusDescription: 'fail to create the service', errorCode: ''}});
\r
584 function createNfvoServiceInstance(gatewayService, serviceInstance, template) {
\r
585 var nfvoLcmUri = '/openoapi/nslcm/v1';
\r
586 serviceInstance.nsdId = template.id;
\r
587 return createServiceInstance(gatewayService, nfvoLcmUri, serviceInstance);
\r
590 function createSdnoServiceInstance(gatewayService, serviceInstance) {
\r
591 var sdnoLcmUri = '/openoapi/sdnonslcm/v1';
\r
592 serviceInstance.nsdId = serviceInstance.serviceTemplateId;
\r
593 return createServiceInstance(gatewayService, sdnoLcmUri, serviceInstance);
\r
596 function createServiceInstance(gatewayService, lcmUri, serviceInstance) {
\r
597 var nsUri = lcmUri + '/ns';
\r
598 var defer = $.Deferred();
\r
600 'nsdId': serviceInstance.nsdId,
\r
601 'nsName': serviceInstance.serviceName,
\r
602 'description': serviceInstance.description,
\r
603 'gatewayUri': nsUri
\r
607 url: gatewayService,
\r
608 contentType: "application/json",
\r
610 data: JSON.stringify(sParameter)
\r
611 })).then(function(response) {
\r
612 if(response.result.status === 'success') {
\r
613 var nsInstanceId = response.serviceId;
\r
614 serviceInstance.serviceId = nsInstanceId;
\r
615 var initNsUrl = nsUri + '/' + nsInstanceId + '/instantiate';
\r
617 'gatewayUri': initNsUrl,
\r
618 'nsInstanceId': nsInstanceId,
\r
619 'additionalParamForNs': serviceInstance.inputParameters
\r
623 url: gatewayService,
\r
624 contentType: "application/json",
\r
626 data: JSON.stringify(parameter)
\r
631 }).then(function(response) {
\r
632 if(response.result.status === 'success') {
\r
633 var jobId = response.serviceId;
\r
634 var jobStatusUri = lcmUri + '/jobs/' + jobId;
\r
635 var timerDefer = $.Deferred();
\r
636 var timeout = 3600000;
\r
637 var fun = function() {
\r
638 if(timeout === 0) {
\r
639 timerDefer.resolve({
\r
641 statusDescription: 'Operation is timeout!',
\r
646 timeout = timeout - 1000;
\r
653 function(jobResponse) {
\r
654 var responseDesc = jobResponse.responseDescriptor;
\r
655 if(responseDesc.status === 'finished' || responseDesc.status === 'error') {
\r
656 timerDefer.resolve(responseDesc);
\r
661 var timerId = setInterval(fun, 1000);
\r
662 $.when(timerDefer).then(
\r
663 function(responseDesc) {
\r
664 clearInterval(timerId);
\r
665 if(responseDesc.status === 'finished') {
\r
666 defer.resolve({status: 'success', instance: serviceInstance});
\r
671 status: responseDesc.status,
\r
672 statusDescription: responseDesc.statusDescription,
\r
673 errorCode: responseDesc.errorCode
\r
679 defer.resolve({status: 'fail', errorResult: response.result});
\r
686 function collectServiceParameters(parameters) {
\r
687 var serviceParameters = {};
\r
689 for (i = 0; i < parameters.length; i += 1) {
\r
690 var value = $('#' + parameters[i].id).val();
\r
691 serviceParameters[parameters[i].name] = value;
\r
693 return serviceParameters;
\r
696 function updateTable(serviceInstance) {
\r
697 serviceInstance.createTime = formatDate(new Date());
\r
698 $('#sai').bootstrapTable("append", serviceInstance);
\r
701 function formatDate(date) {
\r
702 var year = date.getFullYear();
\r
703 var month = date.getMonth() + 1;
\r
704 var day = date.getDate();
\r
705 var hh = date.getHours();
\r
706 var mm = date.getMinutes();
\r
707 var ss = date.getSeconds();
\r
708 return year + "-" + month + "-" + day + " " + hh + ":" + mm + ":" + ss;
\r
711 function deleteNe(rowId, row) {
\r
712 var deleteHandle = function(result) {
\r
714 $.isLoading({ text: "Deleting service..." });
\r
715 var instanceId = row.serviceId;
\r
716 var serviceType = row.serviceType;
\r
717 var gatewayService = '/openoapi/servicegateway/v1/services/' + instanceId + '/terminate';
\r
718 var remove = function () {
\r
719 $.isLoading( "hide" );
\r
720 $('#sai').bootstrapTable('remove', {field: 'serviceId', values: [instanceId]});
\r
722 var failFun = function(responseDesc) {
\r
723 $.isLoading( "hide" );
\r
724 showErrorMessage("Delete service failed", responseDesc);
\r
726 if(serviceType === 'GSO') {
\r
727 deleteGsoServiceInstance(gatewayService, instanceId, remove, failFun);
\r
728 } else if (serviceType === 'NFVO') {
\r
729 var nfvoLcmUri = '/openoapi/nslcm/v1';
\r
730 deleteNonGsoServiceInstance(gatewayService, nfvoLcmUri, instanceId, remove, failFun);
\r
731 } else if (serviceType === 'SDNO') {
\r
732 var sdnoLcmUri = '/openoapi/sdnonslcm/v1';
\r
733 deleteNonGsoServiceInstance(gatewayService, sdnoLcmUri, instanceId, remove, failFun);
\r
737 bootbox.confirm("Do you confirm to delete service?", deleteHandle);
\r
740 function deleteGsoServiceInstance(gatewayService, instanceId, remove, failFun) {
\r
741 var gsoLcmUri = '/openoapi/gso/v1/services';
\r
743 deleteNetworkServiceInstance(gatewayService, gsoLcmUri, instanceId)
\r
745 function(response) {
\r
746 var gsoServiceUri = '/openoapi/gso/v1/services/toposequence/' + instanceId;
\r
747 var timerDefer = $.Deferred();
\r
748 var timeout = 3600000;
\r
749 var fun = function() {
\r
750 if(timeout === 0) {
\r
751 timerDefer.resolve({
\r
753 statusDescription: 'Operation is timeout!',
\r
758 timeout = timeout - 1000;
\r
765 function(response) {
\r
766 if(response.length == 0) {
\r
767 timerDefer.resolve({status:'success', statusDescription: 'success to delete the service', errorCode: ''});
\r
772 var timerId = setInterval(fun, 1000);
\r
773 $.when(timerDefer).then(
\r
774 function(responseDesc) {
\r
775 clearInterval(timerId);
\r
777 if(responseDesc.status != 'success'){
\r
778 failFun({status: "fail", statusDescription: "delete service failed.", errorCode: "500"});
\r
786 function deleteNonGsoServiceInstance(gatewayService, lcmUri, instanceId, remove, failFun) {
\r
787 var nsUri = lcmUri + '/ns';
\r
789 terminateNetworkServiceInstance(gatewayService, nsUri, instanceId)
\r
791 function(response) {
\r
792 var jobId = response.jobId;
\r
793 var jobStatusUri = lcmUri + '/jobs/' + jobId;
\r
794 var timerDefer = $.Deferred();
\r
795 var timeout = 3600000;
\r
796 var fun = function() {
\r
797 if(timeout === 0) {
\r
798 timerDefer.resolve({
\r
800 statusDescription: 'Operation is timeout!',
\r
805 timeout = timeout - 1000;
\r
812 function(jobResponse) {
\r
813 var responseDesc = jobResponse.responseDescriptor;
\r
814 if(responseDesc.status === 'finished' || responseDesc.status === 'error') {
\r
815 timerDefer.resolve(responseDesc);
\r
820 var timerId = setInterval(fun, 1000);
\r
821 $.when(timerDefer).then(
\r
822 function(responseDesc) {
\r
823 clearInterval(timerId);
\r
824 if(responseDesc.status === 'finished') {
\r
826 deleteNetworkServiceInstance(gatewayService, nsUri, instanceId)
\r
828 function(nsResponse) {
\r
829 if(nsResponse.status === 'success') {
\r
832 failFun(nsResponse);
\r
835 ).fail(function() {
\r
836 failFun({status: "fail", statusDescription: "delete service failed.", errorCode: "500"});
\r
839 failFun(responseDesc);
\r
844 ).fail(function() {
\r
845 failFun({status: "fail", statusDescription: "delete service failed.", errorCode: "500"});
\r
849 function deleteNetworkServiceInstance(gatewayService, nsUri, instanceId) {
\r
850 var instanceUri = nsUri + '/' + instanceId;
\r
852 'operation': "DELETE",
\r
853 'gatewayUri': instanceUri
\r
857 url: gatewayService,
\r
858 contentType: "application/json",
\r
860 data: JSON.stringify(parameter)
\r
864 function terminateNetworkServiceInstance(gatewayService, nsUri, instanceId) {
\r
865 var instanceUri = nsUri + '/' + instanceId;
\r
866 var nsTerminateUri = instanceUri + '/terminate';
\r
867 var terminateParameter = {
\r
868 'nsInstanceId': instanceId,
\r
869 'terminationType': "graceful",
\r
870 'gracefulTerminationTimeout': "60",
\r
871 'operation': "POST",
\r
872 'gatewayUri': nsTerminateUri
\r
876 url: gatewayService,
\r
877 contentType: "application/json",
\r
879 data: JSON.stringify(terminateParameter)
\r