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) {
\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, aicZone) {
\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
79 $log.debug("Service Activate/Deactivate payload", requestDetails);
\r
81 return requestDetails;
\r
85 var activateInstance = function(requestParams) {
\r
86 var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId, requestParams.aicZone);
\r
88 return sendPostRequest(COMPONENT.MSO_ACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId),
\r
92 var deactivateInstance = function(requestParams) {
\r
93 var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId, requestParams.aicZone);
\r
95 return sendPostRequest(COMPONENT.MSO_DEACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId),
\r
99 var sendPostRequest = function(url, requestDetails) {
\r
100 var deferred = $q.defer();
\r
103 requestDetails: requestDetails
\r
105 timeout: PropertyService.getServerResponseTimeoutMsec()
\r
106 }).success(function (response) {
\r
107 deferred.resolve({data: response});
\r
108 }).error(function (data, status) {
\r
109 deferred.reject({message: data, status: status});
\r
113 return deferred.promise;
\r
117 createInstance : requestInstanceUpdate,
\r
118 deleteInstance : requestInstanceUpdate,
\r
119 getOrchestrationRequest : function(requestId, successCallbackFunction) {
\r
120 $log.debug("MsoService:getOrchestrationRequest: requestId: "
\r
123 "mso/mso_get_orch_req/"
\r
124 + requestId + "?r=" + Math.random(),
\r
126 timeout : PropertyService
\r
127 .getServerResponseTimeoutMsec()
\r
128 }).then(successCallbackFunction)["catch"]
\r
129 (UtilityService.runHttpErrorHandler);
\r
131 getOrchestrationRequests : function(filterString,
\r
132 successCallbackFunction) {
\r
133 $log.debug("MsoService:getOrchestrationRequests: filterString: "
\r
136 "mso/mso_get_orch_reqs/"
\r
137 + encodeURIComponent(filterString) + "?r="
\r
140 timeout : PropertyService
\r
141 .getServerResponseTimeoutMsec()
\r
142 }).then(successCallbackFunction)["catch"]
\r
143 (UtilityService.runHttpErrorHandler);
\r
145 getFormattedCommonResponse : function(response) {
\r
146 return UtilityService.getCurrentTime() + " HTTP Status: "
\r
147 + UtilityService.getHttpStatusText(response.data.status)
\r
148 + "\n" + angular.toJson(response.data.entity, true)
\r
151 checkValidStatus : checkValidStatus,
\r
152 getFormattedGetOrchestrationRequestsResponse : function(response) {
\r
153 UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity);
\r
154 UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status);
\r
155 checkValidStatus(response);
\r
157 var list = response.data.entity.requestList
\r
158 UtilityService.checkUndefined(FIELD.ID.REQUEST_LIST, list);
\r
162 for (var i = 0; i < list.length; i++) {
\r
163 var request = list[i].request;
\r
164 message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n";
\r
165 message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType)
\r
167 var status = request.requestStatus;
\r
168 if (status === undefined) {
\r
169 message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n";
\r
171 message += addListEntry(FIELD.ID.TIMESTAMP, status.timestamp)
\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, status.timestamp)
\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": {
\r
345 "instanceId": requestParams.configurationByPolicy ?
\r
346 requestParams.portMirroringConfigFields.destinationInstance.properties['pnfName']:
\r
347 requestParams.portMirroringConfigFields.destinationInstance.properties['vnf-id'],
\r
348 "instanceDirection": "destination",
\r
350 requestParams.configurationByPolicy ?
\r
351 {"modelType": "pnf"} :
\r
352 modelInfoOf(requestParams.portMirroringConfigFields.destinationInstance)
\r
356 "requestParameters": {
\r
362 $log.debug("payload", payload);
\r
364 var deferred = $q.defer();
\r
366 'mso','mso_create_configuration_instance',
\r
367 requestParams.topServiceInstanceId,
\r
368 'configurations',''
\r
369 ].join(COMPONENT.FORWARD_SLASH),
\r
371 .success(function (response) {
\r
372 deferred.resolve({data : response});
\r
373 }).error(function (data, status) {
\r
374 deferred.reject({message: data, status: status});
\r
376 return deferred.promise;
\r
379 toggleConfigurationStatus: function(requestParams) {
\r
381 var requestDetails = {
\r
382 "modelInfo": requestParams.configurationModel,
\r
383 "cloudConfiguration": {
\r
384 "lcpCloudRegionId": "mdt1"
\r
388 "requestorId": requestParams.userId
\r
390 "relatedInstanceList": [{
\r
391 "relatedInstance": {
\r
392 "instanceId": requestParams.serviceInstanceId,
\r
393 "modelInfo": requestParams.serviceModel
\r
396 "requestParameters": {
\r
402 switch (requestParams.configStatus) {
\r
403 case FIELD.STATUS.AAI_CREATED:
\r
404 case FIELD.STATUS.AAI_INACTIVE:
\r
405 url = "mso/mso_activate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
\r
407 case FIELD.STATUS.AAI_ACTIVE:
\r
408 url = "mso/mso_deactivate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
\r
412 return sendPostRequest(url, requestDetails);
\r
415 togglePortStatus: function(requestParams) {
\r
416 var requestDetails = {
\r
417 "modelInfo": requestParams.configurationModel,
\r
418 "cloudConfiguration": {
\r
419 "lcpCloudRegionId": "mdt1"
\r
423 "requestorId": requestParams.userId
\r
425 "relatedInstanceList": [
\r
427 "relatedInstance": {
\r
428 "instanceId": requestParams.serviceInstanceId,
\r
429 "modelInfo": requestParams.serviceModel
\r
433 "relatedInstance": {
\r
434 "instanceId": requestParams.portId,
\r
435 "instanceDirection": "source",
\r
437 "modelType": "connectionPoint"
\r
445 switch (requestParams.portStatus) {
\r
446 case FIELD.STATUS.AAI_ENABLED:
\r
447 url = "mso/mso_disable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
\r
449 case FIELD.STATUS.AAI_DISABLED:
\r
450 url = "mso/mso_enable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
\r
454 return sendPostRequest(url, requestDetails);
\r
457 buildPayloadForAssociateDissociate: function(serviceModelInfo, attuuid, instanceId, pnf) {
\r
460 "modelType": "service",
\r
461 "modelInvariantId": serviceModelInfo.invariantUuid,
\r
462 "modelVersionId": serviceModelInfo.uuid,
\r
463 "modelName": serviceModelInfo.name,
\r
464 "modelVersion": serviceModelInfo.version
\r
468 "requestorId": attuuid
\r
470 "relatedInstanceList": [
\r
472 "relatedInstance": {
\r
473 "instanceName": pnf,
\r
479 "requestParameters": {
\r
484 $log.debug("payload", payload);
\r
488 associatePnf: function(requestParams) {
\r
490 var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.instanceId, requestParams.pnf);
\r
491 return sendPostRequest([
\r
492 COMPONENT.MSO, COMPONENT.MSO_CREATE_REALATIONSHIP,
\r
493 requestParams.instanceId,
\r
495 ].join(COMPONENT.FORWARD_SLASH), payload);
\r
497 dissociatePnf: function(requestParams) {
\r
499 var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.serviceInstanceId, requestParams.pnf);
\r
501 return sendPostRequest([
\r
502 COMPONENT.MSO, COMPONENT.MSO_REMOVE_RELATIONSHIP,
\r
503 requestParams.serviceInstanceId,
\r
505 ].join(COMPONENT.FORWARD_SLASH), payload);
\r
510 appDS2.factory("MsoService", MsoService );
\r