2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END=========================================================
\r
23 var MsoService = function($http, $log, $q, PropertyService, AaiService, UtilityService, COMPONENT, FIELD, moment) {
\r
28 * Common function to handle both create and delete instance requests
\r
30 var requestInstanceUpdate = function(request, successCallbackFunction) {
\r
31 $log.debug("MsoService:requestInstanceUpdate: request:");
\r
32 $log.debug(request);
\r
33 $http.post( "mso/" + request.url, {
\r
34 requestDetails : request.requestDetails
\r
36 timeout : PropertyService.getServerResponseTimeoutMsec()
\r
37 }).then(successCallbackFunction)["catch"]
\r
38 (UtilityService.runHttpErrorHandler);
\r
41 var checkValidStatus = function(response) {
\r
42 if (response.data.status < 200 || response.data.status > 202) {
\r
44 type : FIELD.ID.MSO_FAILURE
\r
49 var addListEntry = function(name, value) {
\r
50 var entry = '"' + name + '": ';
\r
51 if (value === undefined) {
\r
52 return entry + "undefined";
\r
54 return entry + '"' + value + '"';
\r
58 var buildPayloadForServiceActivateDeactivate = function (model, userId) {
\r
59 var requestDetails = {
\r
61 "modelType": "service",
\r
62 "modelInvariantId": model.service.invariantUuid,
\r
63 "modelVersionId": model.service.uuid,
\r
64 "modelName": model.service.name,
\r
65 "modelVersion": model.service.version
\r
69 "requestorId": userId
\r
71 "requestParameters": {
\r
72 // aicZone was sent from here
\r
77 $log.debug("Service Activate/Deactivate payload", requestDetails);
\r
79 return requestDetails;
\r
83 var activateInstance = function(requestParams) {
\r
84 var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId);
\r
86 return sendPostRequest(COMPONENT.MSO_ACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId),
\r
90 var deactivateInstance = function(requestParams) {
\r
91 var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId);
\r
93 return sendPostRequest(COMPONENT.MSO_DEACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId),
\r
97 var sendPostRequest = function(url, requestDetails) {
\r
98 var deferred = $q.defer();
\r
101 requestDetails: requestDetails
\r
103 timeout: PropertyService.getServerResponseTimeoutMsec()
\r
104 }).success(function (response) {
\r
105 deferred.resolve({data: response});
\r
106 }).error(function (data, status) {
\r
107 deferred.reject({message: data, status: status});
\r
111 return deferred.promise;
\r
115 createInstance : requestInstanceUpdate,
\r
116 deleteInstance : requestInstanceUpdate,
\r
117 getOrchestrationRequest : function(requestId, successCallbackFunction) {
\r
118 $log.debug("MsoService:getOrchestrationRequest: requestId: "
\r
121 "mso/mso_get_orch_req/"
\r
122 + requestId + "?r=" + Math.random(),
\r
124 timeout : PropertyService
\r
125 .getServerResponseTimeoutMsec()
\r
126 }).then(successCallbackFunction)["catch"]
\r
127 (UtilityService.runHttpErrorHandler);
\r
129 getOrchestrationRequests : function(filterString,
\r
130 successCallbackFunction) {
\r
131 $log.debug("MsoService:getOrchestrationRequests: filterString: "
\r
134 "mso/mso_get_orch_reqs/"
\r
135 + encodeURIComponent(filterString) + "?r="
\r
138 timeout : PropertyService
\r
139 .getServerResponseTimeoutMsec()
\r
140 }).then(successCallbackFunction)["catch"]
\r
141 (UtilityService.runHttpErrorHandler);
\r
143 getFormattedCommonResponse : function(response) {
\r
144 return UtilityService.getCurrentTime() + " HTTP Status: "
\r
145 + UtilityService.getHttpStatusText(response.data.status)
\r
146 + "\n" + angular.toJson(response.data.entity, true)
\r
149 checkValidStatus : checkValidStatus,
\r
150 getFormattedGetOrchestrationRequestsResponse : function(response) {
\r
151 UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity);
\r
152 UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status);
\r
153 checkValidStatus(response);
\r
155 var list = response.data.entity.requestList;
\r
156 UtilityService.checkUndefined(FIELD.ID.REQUEST_LIST, list);
\r
160 for (var i = 0; i < list.length; i++) {
\r
161 var request = list[i].request;
\r
162 message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n";
\r
163 message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType)
\r
165 var status = request.requestStatus;
\r
166 if (status === undefined) {
\r
167 message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n";
\r
169 if(status.finishTime) {
\r
170 message += addListEntry(FIELD.ID.TIMESTAMP, moment(new Date(status.finishTime)).format("ddd, DD MMM YYYY HH:mm:ss"))
\r
173 message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState)
\r
175 message += addListEntry(FIELD.ID.REQUEST_STATUS,
\r
176 status.statusMessage)
\r
178 message += addListEntry(FIELD.ID.PERCENT_PROGRESS,
\r
179 status.percentProgress)
\r
182 if (i < (list.length - 1)) {
\r
188 getFormattedSingleGetOrchestrationRequestResponse : function (response) {
\r
189 UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity);
\r
190 UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status);
\r
191 //checkValidStatus(response);
\r
194 if (! (response && response.data && response.data.entity)) {
\r
197 if ( UtilityService.hasContents (response.data.entity.request) ) {
\r
198 var request = response.data.entity.request;
\r
199 message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n";
\r
200 message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType)
\r
202 var status = request.requestStatus;
\r
203 if (status === undefined) {
\r
204 message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n";
\r
206 message += addListEntry(FIELD.ID.TIMESTAMP, moment(new Date()).format("ddd, DD MMM YYYY HH:mm:ss"))
\r
208 message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState)
\r
210 message += addListEntry(FIELD.ID.REQUEST_STATUS,
\r
211 status.statusMessage)
\r
213 message += addListEntry(FIELD.ID.PERCENT_PROGRESS,
\r
214 status.percentProgress)
\r
219 if (UtilityService.hasContents(response.data.status) && UtilityService.hasContents(response.data.entity)) {
\r
220 message = this.getFormattedCommonResponse(response) + "\n";
\r
225 getManualTasks : function(requestId) {
\r
226 $log.debug("MsoService:getManualTasks: requestId: "
\r
229 "mso/mso_get_man_task/" + requestId,
\r
231 timeout: PropertyService
\r
232 .getServerResponseTimeoutMsec()
\r
234 .catch(UtilityService.runHttpErrorHandler);
\r
236 completeTask: function(taskId, taskToComplete) {
\r
237 var promise = new Promise(function (resolve, reject) {
\r
238 $log.debug("MsoService:completeTask: taskId: "
\r
240 AaiService.getLoggedInUserID(function (response) {
\r
241 var attuid = response.data;
\r
242 var source = "VID";
\r
247 responseValue: taskToComplete,
\r
248 requestorId: attuid
\r
254 "mso/mso_post_man_task/" + taskId, data,
\r
256 timeout: PropertyService
\r
257 .getServerResponseTimeoutMsec()
\r
258 }).then(function (response) {
\r
261 .catch(UtilityService.runHttpErrorHandler);
\r
269 showResponseContentError : function(error, showFunction) {
\r
270 switch (error.type) {
\r
271 case "undefinedObject":
\r
272 showFunction(FIELD.ERROR.SYSTEM_FAILURE, error.message);
\r
275 showFunction(FIELD.ERROR.MSO, "");
\r
278 showFunction(FIELD.ERROR.SYSTEM_FAILURE);
\r
281 activateInstance: activateInstance,
\r
282 deactivateInstance: deactivateInstance,
\r
285 createConfigurationInstance: function(requestParams) {
\r
287 const modelInfoOf = function (instance) {
\r
288 const modelInfo = {
\r
289 "modelType": "vnf",
\r
290 "modelInvariantId": instance.properties['model-invariant-id'],
\r
291 "modelVersionId": instance.properties['model-version-id'],
\r
292 "modelName": instance.properties['model-name'],
\r
293 "modelVersion": instance.properties['model-version'],
\r
294 "modelCustomizationId": instance.properties['model-customization-id']
\r
297 $log.debug("model info from instance", instance);
\r
298 $log.debug("model info to model", modelInfo);
\r
304 "requestDetails": {
\r
306 "modelType": "configuration",
\r
307 "modelInvariantId": requestParams.configurationModelInfo.modelInvariantId,
\r
308 "modelVersionId": requestParams.configurationModelInfo.modelNameVersionId,
\r
309 "modelName": requestParams.configurationModelInfo.modelName, // "Port Mirroring Configuration"
\r
310 "modelVersion": requestParams.configurationModelInfo.modelVersion,
\r
311 "modelCustomizationId": requestParams.configurationModelInfo.customizationUuid,
\r
312 "modelCustomizationName": requestParams.configurationModelInfo.modelCustomizationName
\r
314 "cloudConfiguration": {
\r
315 // "tenantId": ????
\r
316 "lcpCloudRegionId": requestParams.portMirroringConfigFields.lcpRegion.value
\r
319 "instanceName": requestParams.portMirroringConfigFields.instanceName.value,
\r
321 "requestorId": requestParams.attuuid
\r
323 "relatedInstanceList": [
\r
325 "relatedInstance": {
\r
326 "instanceId": requestParams.topServiceInstanceId,
\r
328 "modelType": "service", // relatedTopModelsInfo.modelType
\r
329 "modelInvariantId": requestParams.relatedTopModelsInfo.modelInvariantId,
\r
330 "modelVersionId": requestParams.relatedTopModelsInfo.modelNameVersionId,
\r
331 "modelName": requestParams.relatedTopModelsInfo.modelName,
\r
332 "modelVersion": requestParams.relatedTopModelsInfo.modelVersion
\r
337 "relatedInstance": {
\r
338 "instanceId": requestParams.portMirroringConfigFields.sourceInstance.properties['vnf-id'],
\r
339 "instanceDirection": "source",
\r
340 "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.sourceInstance)
\r
344 "relatedInstance": requestParams.configurationByPolicy ? {
\r
345 "instanceName": requestParams.portMirroringConfigFields.destinationInstance.properties['pnfName'],
\r
346 "instanceDirection": "destination",
\r
351 "instanceId": requestParams.portMirroringConfigFields.destinationInstance.properties['vnf-id'],
\r
352 "instanceDirection": "destination",
\r
353 "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.destinationInstance)
\r
357 "requestParameters": {
\r
363 $log.debug("payload", payload);
\r
365 var deferred = $q.defer();
\r
367 'mso','mso_create_configuration_instance',
\r
368 requestParams.topServiceInstanceId,
\r
369 'configurations',''
\r
370 ].join(COMPONENT.FORWARD_SLASH),
\r
372 .success(function (response) {
\r
373 deferred.resolve({data : response});
\r
374 }).error(function (data, status) {
\r
375 deferred.reject({message: data, status: status});
\r
377 return deferred.promise;
\r
379 deleteConfiguration: function(requestParams, configuration) {
\r
381 var requestDetails = {
\r
382 "modelInfo": requestParams.configurationModel,
\r
383 "cloudConfiguration": {
\r
384 "lcpCloudRegionId": configuration.configData.cloudRegionId
\r
388 "requestorId": requestParams.userId
\r
390 "requestParameters": {
\r
395 var url = "mso/mso_delete_configuration/" + requestParams.serviceInstanceId + "/configurations/" + requestParams.configurationId;
\r
396 return sendPostRequest(url, requestDetails);
\r
398 toggleConfigurationStatus: function(requestParams, configuration) {
\r
400 var requestDetails = {
\r
401 "modelInfo": requestParams.configurationModel,
\r
402 "cloudConfiguration": {
\r
403 "lcpCloudRegionId": configuration && configuration.configData ? configuration.configData.cloudRegionId : null
\r
407 "requestorId": requestParams.userId
\r
409 "relatedInstanceList": [{
\r
410 "relatedInstance": {
\r
411 "instanceId": requestParams.serviceInstanceId,
\r
412 "modelInfo": requestParams.serviceModel
\r
415 "requestParameters": {
\r
421 switch (requestParams.configStatus) {
\r
422 case FIELD.STATUS.AAI_CREATED:
\r
423 case FIELD.STATUS.AAI_INACTIVE:
\r
424 url = "mso/mso_activate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
\r
426 case FIELD.STATUS.AAI_ACTIVE:
\r
427 url = "mso/mso_deactivate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
\r
431 return sendPostRequest(url, requestDetails);
\r
434 togglePortStatus: function(requestParams, configuration, defaultParams) {
\r
436 var requestDetails = {
\r
437 "modelInfo": requestParams.configurationModel,
\r
438 "cloudConfiguration": {
\r
439 "lcpCloudRegionId": configuration && configuration.configData ? configuration.configData.cloudRegionId : null
\r
443 "requestorId": requestParams.userId
\r
445 "relatedInstanceList": [
\r
447 "relatedInstance": {
\r
448 "instanceId": requestParams.serviceInstanceId,
\r
449 "modelInfo": requestParams.serviceModel
\r
453 "relatedInstance": {
\r
454 "instanceId": requestParams.portId,
\r
455 "instanceDirection": "source",
\r
457 "modelType": "connectionPoint"
\r
465 switch (requestParams.portStatus) {
\r
466 case FIELD.STATUS.AAI_ENABLED:
\r
467 url = "mso/mso_disable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
\r
469 case FIELD.STATUS.AAI_DISABLED:
\r
470 url = "mso/mso_enable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
\r
474 return sendPostRequest(url, requestDetails);
\r
477 buildPayloadForAssociateDissociate: function(serviceModelInfo, attuuid, instanceId, pnf) {
\r
480 "modelType": "service",
\r
481 "modelInvariantId": serviceModelInfo.invariantUuid,
\r
482 "modelVersionId": serviceModelInfo.uuid,
\r
483 "modelName": serviceModelInfo.name,
\r
484 "modelVersion": serviceModelInfo.version
\r
488 "requestorId": attuuid
\r
490 "relatedInstanceList": [
\r
492 "relatedInstance": {
\r
493 "instanceName": pnf,
\r
499 "requestParameters": {
\r
504 $log.debug("payload", payload);
\r
508 associatePnf: function(requestParams) {
\r
510 var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.instanceId, requestParams.pnf);
\r
511 return sendPostRequest([
\r
512 COMPONENT.MSO, COMPONENT.MSO_CREATE_REALATIONSHIP,
\r
513 requestParams.instanceId,
\r
515 ].join(COMPONENT.FORWARD_SLASH), payload);
\r
517 dissociatePnf: function(requestParams) {
\r
519 var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.serviceInstanceId, requestParams.pnf);
\r
521 return sendPostRequest([
\r
522 COMPONENT.MSO, COMPONENT.MSO_REMOVE_RELATIONSHIP,
\r
523 requestParams.serviceInstanceId,
\r
525 ].join(COMPONENT.FORWARD_SLASH), payload);
\r
530 appDS2.factory("MsoService", MsoService );
\r