Merge "Fix Sonar issue - throw generic exception."
[so.git] / mso-api-handlers / mso-api-handler-infra / src / main / java / org / onap / so / apihandlerinfra / MsoRequest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
7  * ================================================================================
8  * Modifications Copyright (c) 2019 Samsung
9  * ================================================================================
10  * Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  * 
14  *      http://www.apache.org/licenses/LICENSE-2.0
15  * 
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  * ============LICENSE_END=========================================================
22  */
23
24 package org.onap.so.apihandlerinfra;
25
26 import java.io.IOException;
27 import java.io.StringWriter;
28 import java.sql.Timestamp;
29 import java.util.ArrayList;
30 import java.util.HashMap;
31 import java.util.List;
32 import java.util.Map;
33 import java.util.Map.Entry;
34 import java.util.StringTokenizer;
35 import javax.ws.rs.core.MultivaluedMap;
36 import javax.ws.rs.core.Response;
37 import javax.xml.XMLConstants;
38 import javax.xml.transform.OutputKeys;
39 import javax.xml.transform.Transformer;
40 import javax.xml.transform.TransformerFactory;
41 import javax.xml.transform.dom.DOMSource;
42 import javax.xml.transform.stream.StreamResult;
43 import org.onap.so.apihandler.common.ResponseBuilder;
44 import org.onap.so.apihandlerinfra.tasksbeans.TasksRequest;
45 import org.onap.so.apihandlerinfra.validation.ApplyUpdatedConfigValidation;
46 import org.onap.so.apihandlerinfra.validation.CloudConfigurationValidation;
47 import org.onap.so.apihandlerinfra.validation.ConfigurationParametersValidation;
48 import org.onap.so.apihandlerinfra.validation.CustomWorkflowValidation;
49 import org.onap.so.apihandlerinfra.validation.InPlaceSoftwareUpdateValidation;
50 import org.onap.so.apihandlerinfra.validation.InstanceIdMapValidation;
51 import org.onap.so.apihandlerinfra.validation.MembersValidation;
52 import org.onap.so.apihandlerinfra.validation.ModelInfoValidation;
53 import org.onap.so.apihandlerinfra.validation.PlatformLOBValidation;
54 import org.onap.so.apihandlerinfra.validation.ProjectOwningEntityValidation;
55 import org.onap.so.apihandlerinfra.validation.RelatedInstancesValidation;
56 import org.onap.so.apihandlerinfra.validation.RequestInfoValidation;
57 import org.onap.so.apihandlerinfra.validation.RequestParametersValidation;
58 import org.onap.so.apihandlerinfra.validation.RequestScopeValidation;
59 import org.onap.so.apihandlerinfra.validation.SubscriberInfoValidation;
60 import org.onap.so.apihandlerinfra.validation.UserParamsValidation;
61 import org.onap.so.apihandlerinfra.validation.ValidationInformation;
62 import org.onap.so.apihandlerinfra.validation.ValidationRule;
63 import org.onap.so.apihandlerinfra.vnfbeans.RequestStatusType;
64 import org.onap.so.apihandlerinfra.vnfbeans.VnfInputs;
65 import org.onap.so.apihandlerinfra.vnfbeans.VnfRequest;
66 import org.onap.so.constants.Status;
67 import org.onap.so.db.request.beans.InfraActiveRequests;
68 import org.onap.so.db.request.client.RequestsDbClient;
69 import org.onap.so.exceptions.ValidationException;
70 import org.onap.so.logger.LogConstants;
71 import org.onap.so.serviceinstancebeans.CloudConfiguration;
72 import org.onap.so.serviceinstancebeans.InstanceDirection;
73 import org.onap.so.serviceinstancebeans.ModelInfo;
74 import org.onap.so.serviceinstancebeans.ModelType;
75 import org.onap.so.serviceinstancebeans.PolicyException;
76 import org.onap.so.serviceinstancebeans.RelatedInstance;
77 import org.onap.so.serviceinstancebeans.RelatedInstanceList;
78 import org.onap.so.serviceinstancebeans.RequestError;
79 import org.onap.so.serviceinstancebeans.RequestInfo;
80 import org.onap.so.serviceinstancebeans.RequestParameters;
81 import org.onap.so.serviceinstancebeans.Service;
82 import org.onap.so.serviceinstancebeans.ServiceException;
83 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
84 import org.slf4j.Logger;
85 import org.slf4j.LoggerFactory;
86 import org.slf4j.MDC;
87 import org.springframework.beans.factory.annotation.Autowired;
88 import org.springframework.beans.factory.annotation.Value;
89 import org.springframework.stereotype.Component;
90 import org.w3c.dom.Document;
91 import org.w3c.dom.Element;
92 import org.w3c.dom.Node;
93 import org.w3c.dom.NodeList;
94 import com.fasterxml.jackson.annotation.JsonInclude.Include;
95 import com.fasterxml.jackson.core.JsonGenerationException;
96 import com.fasterxml.jackson.databind.JsonMappingException;
97 import com.fasterxml.jackson.databind.ObjectMapper;
98
99
100 @Component
101 public class MsoRequest {
102
103     @Autowired
104     private RequestsDbClient requestsDbClient;
105
106     @Autowired
107     private ResponseBuilder builder;
108
109     @Value("${mso.enforceDLP:false}")
110     private boolean enforceDLP;
111
112     private static Logger logger = LoggerFactory.getLogger(MsoRequest.class);
113
114     public Response buildServiceErrorResponse(int httpResponseCode, MsoException exceptionType, String errorText,
115             String messageId, List<String> variables, String version) {
116
117         if (errorText.length() > 1999) {
118             errorText = errorText.substring(0, 1999);
119         }
120
121         RequestError re = new RequestError();
122
123         if ("PolicyException".equals(exceptionType.name())) {
124
125             PolicyException pe = new PolicyException();
126             pe.setMessageId(messageId);
127             pe.setText(errorText);
128             if (variables != null) {
129                 for (String variable : variables) {
130                     pe.getVariables().add(variable);
131                 }
132             }
133             re.setPolicyException(pe);
134
135         } else {
136
137             ServiceException se = new ServiceException();
138             se.setMessageId(messageId);
139             se.setText(errorText);
140             if (variables != null) {
141                 for (String variable : variables) {
142                     se.getVariables().add(variable);
143                 }
144             }
145             re.setServiceException(se);
146         }
147         return builder.buildResponse(httpResponseCode, null, re, version);
148     }
149
150
151
152     // Parse request JSON
153     public void parse(ServiceInstancesRequest sir, HashMap<String, String> instanceIdMap, Actions action,
154             String version, String originalRequestJSON, int reqVersion, Boolean aLaCarteFlag)
155             throws ValidationException, IOException {
156
157         logger.debug("Validating the Service Instance request");
158         List<ValidationRule> rules = new ArrayList<>();
159         logger.debug("Incoming version is: {} coverting to int: {}", version, reqVersion);
160         RequestParameters requestParameters = sir.getRequestDetails().getRequestParameters();
161         ValidationInformation info =
162                 new ValidationInformation(sir, instanceIdMap, action, reqVersion, aLaCarteFlag, requestParameters);
163
164         rules.add(new InstanceIdMapValidation());
165
166         String workflowUuid = null;
167         if (instanceIdMap != null) {
168             workflowUuid = instanceIdMap.get("workflowUuid");
169         }
170
171         if (workflowUuid != null) {
172             rules.add(new CustomWorkflowValidation());
173         } else if (reqVersion >= 6 && action == Action.inPlaceSoftwareUpdate) {
174             rules.add(new InPlaceSoftwareUpdateValidation());
175         } else if (reqVersion >= 6 && action == Action.applyUpdatedConfig) {
176             rules.add(new ApplyUpdatedConfigValidation());
177         } else if (action == Action.addMembers || action == Action.removeMembers) {
178             rules.add(new MembersValidation());
179         } else {
180             rules.add(new RequestScopeValidation());
181             rules.add(new RequestParametersValidation());
182             rules.add(new RequestInfoValidation());
183             rules.add(new ModelInfoValidation());
184             rules.add(new CloudConfigurationValidation());
185             rules.add(new SubscriberInfoValidation());
186             if (!enforceDLP) {
187                 rules.add(new PlatformLOBValidation());
188                 rules.add(new ProjectOwningEntityValidation());
189             }
190             rules.add(new RelatedInstancesValidation());
191             rules.add(new ConfigurationParametersValidation());
192         }
193         if (reqVersion >= 7 && requestParameters != null && requestParameters.getUserParams() != null) {
194             for (Map<String, Object> params : requestParameters.getUserParams()) {
195                 if (params.containsKey("service")) {
196                     ObjectMapper obj = new ObjectMapper();
197                     String input = obj.writeValueAsString(params.get("service"));
198                     Service validate = obj.readValue(input, Service.class);
199                     info.setUserParams(validate);
200                     rules.add(new UserParamsValidation());
201                     break;
202                 }
203             }
204         }
205         for (ValidationRule rule : rules) {
206             rule.validate(info);
207         }
208     }
209
210     void parseOrchestration(ServiceInstancesRequest sir) throws ValidationException {
211         RequestInfo requestInfo = sir.getRequestDetails().getRequestInfo();
212
213         if (requestInfo == null) {
214             throw new ValidationException("requestInfo");
215         }
216
217         if (empty(requestInfo.getSource())) {
218             throw new ValidationException("source");
219         }
220         if (empty(requestInfo.getRequestorId())) {
221             throw new ValidationException("requestorId");
222         }
223     }
224
225     public Map<String, List<String>> getOrchestrationFilters(MultivaluedMap<String, String> queryParams)
226             throws ValidationException {
227
228         String queryParam = null;
229         Map<String, List<String>> orchestrationFilterParams = new HashMap<>();
230
231
232         for (Entry<String, List<String>> entry : queryParams.entrySet()) {
233             queryParam = entry.getKey();
234
235             try {
236                 if ("filter".equalsIgnoreCase(queryParam)) {
237                     for (String value : entry.getValue()) {
238                         StringTokenizer st = new StringTokenizer(value, ":");
239
240                         int counter = 0;
241                         String mapKey = null;
242                         List<String> orchestrationList = new ArrayList<>();
243                         while (st.hasMoreElements()) {
244                             if (counter == 0) {
245                                 mapKey = st.nextElement() + "";
246                             } else {
247                                 orchestrationList.add(st.nextElement() + "");
248                             }
249                             counter++;
250                         }
251                         orchestrationFilterParams.put(mapKey, orchestrationList);
252                     }
253                 }
254
255             } catch (Exception e) {
256                 throw new ValidationException("QueryParam ServiceInfo", e);
257             }
258
259         }
260
261
262         return orchestrationFilterParams;
263     }
264
265     public InfraActiveRequests createRequestObject(ServiceInstancesRequest servInsReq, Actions action, String requestId,
266             Status status, String originalRequestJSON, String requestScope) {
267         InfraActiveRequests aq = new InfraActiveRequests();
268         try {
269             if (null == servInsReq) {
270                 servInsReq = new ServiceInstancesRequest();
271             }
272             String networkType = "";
273             String vnfType = "";
274             aq.setRequestId(requestId);
275             aq.setRequestAction(action.toString());
276             aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
277
278             Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
279
280             aq.setStartTime(startTimeStamp);
281             if (requestScope.equals(ModelType.instanceGroup.name()) && action == Action.deleteInstance) {
282                 aq.setRequestScope(requestScope);
283             } else {
284                 RequestInfo requestInfo = servInsReq.getRequestDetails().getRequestInfo();
285                 if (requestInfo != null) {
286
287                     if (requestInfo.getSource() != null) {
288                         aq.setSource(requestInfo.getSource());
289                     }
290                     if (requestInfo.getCallbackUrl() != null) {
291                         aq.setCallBackUrl(requestInfo.getCallbackUrl());
292                     }
293                     if (requestInfo.getCorrelator() != null) {
294                         aq.setCorrelator(requestInfo.getCorrelator());
295                     }
296
297                     if (requestInfo.getRequestorId() != null) {
298                         aq.setRequestorId(requestInfo.getRequestorId());
299                     }
300                 }
301
302                 if (servInsReq.getRequestDetails().getModelInfo() != null
303                         || (action == Action.inPlaceSoftwareUpdate || action == Action.applyUpdatedConfig)) {
304                     aq.setRequestScope(requestScope);
305                 }
306
307                 if (servInsReq.getRequestDetails().getCloudConfiguration() != null) {
308                     CloudConfiguration cloudConfiguration = servInsReq.getRequestDetails().getCloudConfiguration();
309                     if (cloudConfiguration.getLcpCloudRegionId() != null) {
310                         aq.setCloudRegion(cloudConfiguration.getLcpCloudRegionId());
311                     }
312
313                     if (cloudConfiguration.getTenantId() != null) {
314                         aq.setTenantId(cloudConfiguration.getTenantId());
315                     }
316
317                 }
318
319                 if (servInsReq.getServiceInstanceId() != null) {
320                     aq.setServiceInstanceId(servInsReq.getServiceInstanceId());
321                 }
322
323                 if (servInsReq.getVnfInstanceId() != null) {
324                     aq.setVnfId(servInsReq.getVnfInstanceId());
325                 }
326
327                 if (servInsReq.getPnfId() != null) {
328                     aq.setRequestScope(requestScope);
329                     aq.setPnfId(servInsReq.getPnfId());
330                 }
331
332                 if (ModelType.service.name().equalsIgnoreCase(requestScope)) {
333                     if (servInsReq.getRequestDetails().getRequestInfo() != null) {
334                         if (servInsReq.getRequestDetails().getRequestInfo().getInstanceName() != null) {
335                             aq.setServiceInstanceName(requestInfo.getInstanceName());
336                         }
337                     }
338                 }
339
340                 if (ModelType.network.name().equalsIgnoreCase(requestScope)) {
341                     aq.setNetworkName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
342                     aq.setNetworkType(networkType);
343                     aq.setNetworkId(servInsReq.getNetworkInstanceId());
344                 }
345
346                 if (ModelType.volumeGroup.name().equalsIgnoreCase(requestScope)) {
347                     aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
348                     aq.setVolumeGroupName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
349                     aq.setVnfType(vnfType);
350
351                 }
352
353                 if (ModelType.vfModule.name().equalsIgnoreCase(requestScope)) {
354                     aq.setVfModuleName(requestInfo.getInstanceName());
355                     aq.setVfModuleModelName(servInsReq.getRequestDetails().getModelInfo().getModelName());
356                     aq.setVfModuleId(servInsReq.getVfModuleInstanceId());
357                     aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
358                     aq.setVnfType(vnfType);
359
360                 }
361
362                 if (ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
363                     aq.setConfigurationId(servInsReq.getConfigurationId());
364                     aq.setConfigurationName(requestInfo.getInstanceName());
365                 }
366                 if (requestScope.equalsIgnoreCase(ModelType.instanceGroup.name())) {
367                     aq.setInstanceGroupId(servInsReq.getInstanceGroupId());
368                     aq.setInstanceGroupName(requestInfo.getInstanceName());
369                 }
370                 if (ModelType.vnf.name().equalsIgnoreCase(requestScope)) {
371                     if (requestInfo != null) {
372                         aq.setVnfName(requestInfo.getInstanceName());
373                     }
374                     if (null != servInsReq.getRequestDetails()) {
375                         RelatedInstanceList[] instanceList = servInsReq.getRequestDetails().getRelatedInstanceList();
376
377                         if (instanceList != null) {
378
379                             for (RelatedInstanceList relatedInstanceList : instanceList) {
380
381                                 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
382                                 if (relatedInstance.getModelInfo().getModelType().equals(ModelType.service)) {
383                                     aq.setVnfType(vnfType);
384                                 }
385                             }
386                         }
387                     }
388                 }
389             }
390
391             aq.setRequestBody(originalRequestJSON);
392
393             aq.setRequestStatus(status.toString());
394             aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
395         } catch (Exception e) {
396             logger.error("Exception when creation record request", e);
397
398             if (!status.equals(Status.FAILED)) {
399                 throw e;
400             }
401         }
402         return aq;
403     }
404
405     public InfraActiveRequests createRequestObject(TasksRequest taskRequest, Action action, String requestId,
406             Status status, String originalRequestJSON) {
407         InfraActiveRequests aq = new InfraActiveRequests();
408         try {
409
410             org.onap.so.apihandlerinfra.tasksbeans.RequestInfo requestInfo =
411                     taskRequest.getRequestDetails().getRequestInfo();
412             aq.setRequestId(requestId);
413             aq.setRequestAction(action.name());
414             aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
415
416             Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
417
418             aq.setStartTime(startTimeStamp);
419             if (requestInfo != null) {
420
421                 if (requestInfo.getSource() != null) {
422                     aq.setSource(requestInfo.getSource());
423                 }
424
425                 if (requestInfo.getRequestorId() != null) {
426                     aq.setRequestorId(requestInfo.getRequestorId());
427                 }
428             }
429
430             aq.setRequestBody(originalRequestJSON);
431             aq.setRequestStatus(status.toString());
432             aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
433
434         } catch (Exception e) {
435             logger.error("Exception when creation record request", e);
436
437             if (!status.equals(Status.FAILED)) {
438                 throw e;
439             }
440         }
441         return aq;
442     }
443
444     public void createErrorRequestRecord(Status status, String requestId, String errorMessage, Actions action,
445             String requestScope, String requestJSON) {
446         try {
447             InfraActiveRequests request = new InfraActiveRequests(requestId);
448             Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
449             request.setStartTime(startTimeStamp);
450             request.setRequestStatus(status.toString());
451             request.setStatusMessage(errorMessage);
452             request.setProgress((long) 100);
453             request.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
454             request.setRequestAction(action.toString());
455             request.setRequestScope(requestScope);
456             request.setRequestBody(requestJSON);
457             Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
458             request.setEndTime(endTimeStamp);
459             request.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
460             requestsDbClient.save(request);
461         } catch (Exception e) {
462             logger.error("Exception when updating record in DB", e);
463             logger.debug("Exception: ", e);
464         }
465     }
466
467
468
469     public Response buildResponse(int httpResponseCode, String errorCode, InfraActiveRequests inProgress) {
470         return buildResponseWithError(httpResponseCode, errorCode, inProgress, null);
471     }
472
473     public Response buildResponseWithError(int httpResponseCode, String errorCode, InfraActiveRequests inProgress,
474             String errorString) {
475
476
477
478         // Log the failed request into the MSO Requests database
479
480         return Response.status(httpResponseCode).entity(null).build();
481
482     }
483
484     public Response buildResponseFailedValidation(int httpResponseCode, String exceptionMessage) {
485
486         return Response.status(httpResponseCode).entity(null).build();
487     }
488
489
490
491     public String getServiceType(VnfInputs vnfInputs) {
492         if (vnfInputs.getServiceType() != null)
493             return vnfInputs.getServiceType();
494         if (vnfInputs.getServiceId() != null)
495             return vnfInputs.getServiceId();
496         return null;
497     }
498
499     public long translateStatus(RequestStatusType status) {
500         switch (status) {
501             case FAILED:
502             case COMPLETE:
503                 return Constants.PROGRESS_REQUEST_COMPLETED;
504             case IN_PROGRESS:
505                 return Constants.PROGRESS_REQUEST_IN_PROGRESS;
506             default:
507                 return 0;
508         }
509     }
510
511     public static String domToStr(Document doc) {
512         if (doc == null) {
513             return null;
514         }
515
516         try {
517             StringWriter sw = new StringWriter();
518             StreamResult sr = new StreamResult(sw);
519             TransformerFactory tf = TransformerFactory.newInstance();
520             tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
521             tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
522             Transformer t = tf.newTransformer();
523             t.setOutputProperty(OutputKeys.STANDALONE, "yes");
524             NodeList nl = doc.getDocumentElement().getChildNodes();
525             DOMSource source = null;
526             for (int x = 0; x < nl.getLength(); x++) {
527                 Node e = nl.item(x);
528                 if (e instanceof Element) {
529                     source = new DOMSource(e);
530                     break;
531                 }
532             }
533             if (source != null) {
534                 t.transform(source, sr);
535
536                 String s = sw.toString();
537                 return s;
538             }
539
540             return null;
541
542         } catch (Exception e) {
543             logger.error("Exception in domToStr", e);
544         }
545         return null;
546     }
547
548     public void addBPMNSpecificInputs(VnfRequest vnfReq, VnfInputs vnfInputs, String personaModelId,
549             String personaModelVersion, Boolean isBaseVfModule, String vnfPersonaModelId,
550             String vnfPersonaModelVersion) {
551         vnfInputs.setPersonaModelId(personaModelId);
552         vnfInputs.setPersonaModelVersion(personaModelVersion);
553         vnfInputs.setIsBaseVfModule(isBaseVfModule);
554         vnfInputs.setVnfPersonaModelId(vnfPersonaModelId);
555         vnfInputs.setVnfPersonaModelVersion(vnfPersonaModelVersion);
556
557         vnfReq.setVnfInputs(vnfInputs);
558
559     }
560
561     private static boolean empty(String s) {
562         return (s == null || s.trim().isEmpty());
563     }
564
565     public String getRequestJSON(ServiceInstancesRequest sir)
566             throws JsonGenerationException, JsonMappingException, IOException {
567         ObjectMapper mapper = new ObjectMapper();
568         mapper.setSerializationInclusion(Include.NON_NULL);
569
570         logger.debug("building sir from object {}", sir);
571         String requestJSON = mapper.writeValueAsString(sir);
572
573         // Perform mapping from VID-style modelInfo fields to ASDC-style modelInfo fields
574
575         logger.debug("REQUEST JSON before mapping: {}", requestJSON);
576         // modelUuid = modelVersionId
577         requestJSON = requestJSON.replaceAll("\"modelVersionId\":", "\"modelUuid\":");
578         // modelCustomizationUuid = modelCustomizationId
579         requestJSON = requestJSON.replaceAll("\"modelCustomizationId\":", "\"modelCustomizationUuid\":");
580         // modelInstanceName = modelCustomizationName
581         requestJSON = requestJSON.replaceAll("\"modelCustomizationName\":", "\"modelInstanceName\":");
582         // modelInvariantUuid = modelInvariantId
583         requestJSON = requestJSON.replaceAll("\"modelInvariantId\":", "\"modelInvariantUuid\":");
584         logger.debug("REQUEST JSON after mapping: {}", requestJSON);
585
586         return requestJSON;
587     }
588
589
590     public boolean getAlacarteFlag(ServiceInstancesRequest sir) {
591         if (sir.getRequestDetails().getRequestParameters() != null
592                 && sir.getRequestDetails().getRequestParameters().getALaCarte() != null)
593             return sir.getRequestDetails().getRequestParameters().getALaCarte();
594
595         return false;
596     }
597
598
599     public String getNetworkType(ServiceInstancesRequest sir, String requestScope) {
600         if (requestScope.equalsIgnoreCase(ModelType.network.name()))
601             return sir.getRequestDetails().getModelInfo().getModelName();
602         else
603             return null;
604     }
605
606
607     public String getServiceInstanceType(ServiceInstancesRequest sir, String requestScope) {
608         if (requestScope.equalsIgnoreCase(ModelType.network.name()))
609             return sir.getRequestDetails().getModelInfo().getModelName();
610         else
611             return null;
612     }
613
614
615     public String getSDCServiceModelVersion(ServiceInstancesRequest sir) {
616         String sdcServiceModelVersion = null;
617         if (sir.getRequestDetails().getRelatedInstanceList() != null)
618             for (RelatedInstanceList relatedInstanceList : sir.getRequestDetails().getRelatedInstanceList()) {
619                 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
620                 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
621                 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service))
622                     sdcServiceModelVersion = relatedInstanceModelInfo.getModelVersion();
623             }
624         return sdcServiceModelVersion;
625     }
626
627
628     public String getVfModuleType(ServiceInstancesRequest sir, String requestScope, Actions action, int reqVersion) {
629
630         String serviceInstanceType = null;
631
632         String vnfType = null;
633         String vfModuleType = null;
634         String vfModuleModelName = null;
635         ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
636         RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
637         String serviceModelName = null;
638         String vnfModelName = null;
639         String asdcServiceModelVersion = null;
640         String volumeGroupId = null;
641         boolean isRelatedServiceInstancePresent = false;
642         boolean isRelatedVnfInstancePresent = false;
643         boolean isSourceVnfPresent = false;
644         boolean isDestinationVnfPresent = false;
645         boolean isConnectionPointPresent = false;
646
647         if (instanceList != null) {
648             for (RelatedInstanceList relatedInstanceList : instanceList) {
649                 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
650                 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
651
652                 if (action != Action.deleteInstance) {
653
654                     if (ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
655                         if (InstanceDirection.source.equals(relatedInstance.getInstanceDirection())
656                                 && relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)) {
657                             isSourceVnfPresent = true;
658                         } else if (InstanceDirection.destination.equals(relatedInstance.getInstanceDirection())
659                                 && (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
660                                         || (relatedInstanceModelInfo.getModelType().equals(ModelType.pnf)
661                                                 && reqVersion == 6))) {
662                             isDestinationVnfPresent = true;
663                         }
664                     }
665
666                     if (ModelType.connectionPoint.equals(relatedInstanceModelInfo.getModelType())
667                             && ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
668                         isConnectionPointPresent = true;
669                     }
670                 }
671
672
673                 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
674                     isRelatedServiceInstancePresent = true;
675                     serviceModelName = relatedInstanceModelInfo.getModelName();
676                     asdcServiceModelVersion = relatedInstanceModelInfo.getModelVersion();
677                 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
678                         && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
679                     isRelatedVnfInstancePresent = true;
680                     vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
681                 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
682                     volumeGroupId = relatedInstance.getInstanceId();
683                 }
684             }
685
686             if (requestScope.equalsIgnoreCase(ModelType.volumeGroup.name())) {
687                 serviceInstanceType = serviceModelName;
688                 vnfType = serviceModelName + "/" + vnfModelName;
689             } else if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())) {
690                 vfModuleModelName = modelInfo.getModelName();
691                 serviceInstanceType = serviceModelName;
692                 vnfType = serviceModelName + "/" + vnfModelName;
693                 vfModuleType = vnfType + "::" + vfModuleModelName;
694                 sir.setVolumeGroupInstanceId(volumeGroupId);
695             } else if (requestScope.equalsIgnoreCase(ModelType.vnf.name()))
696                 vnfType = serviceModelName + "/" + sir.getRequestDetails().getModelInfo().getModelCustomizationName();
697
698         }
699
700         return vfModuleType;
701
702     }
703
704     public String getVnfType(ServiceInstancesRequest sir, String requestScope, Actions action, int reqVersion) {
705
706         String serviceInstanceType = null;
707         String networkType = null;
708         String vnfType = null;
709         String vfModuleType = null;
710         String vfModuleModelName = null;
711         ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
712         RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
713         String serviceModelName = null;
714         String vnfModelName = null;
715         String asdcServiceModelVersion = null;
716         String volumeGroupId = null;
717         boolean isRelatedServiceInstancePresent = false;
718         boolean isRelatedVnfInstancePresent = false;
719         boolean isSourceVnfPresent = false;
720         boolean isDestinationVnfPresent = false;
721         boolean isConnectionPointPresent = false;
722
723         if (instanceList != null) {
724             for (RelatedInstanceList relatedInstanceList : instanceList) {
725                 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
726                 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
727
728                 if (action != Action.deleteInstance) {
729
730                     if (ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
731                         if (InstanceDirection.source.equals(relatedInstance.getInstanceDirection())
732                                 && relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)) {
733                             isSourceVnfPresent = true;
734                         } else if (InstanceDirection.destination.equals(relatedInstance.getInstanceDirection())
735                                 && (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
736                                         || (relatedInstanceModelInfo.getModelType().equals(ModelType.pnf)
737                                                 && reqVersion == 6))) {
738                             isDestinationVnfPresent = true;
739                         }
740                     }
741
742                     if (ModelType.connectionPoint.equals(relatedInstanceModelInfo.getModelType())
743                             && ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
744                         isConnectionPointPresent = true;
745                     }
746                 }
747
748
749                 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
750                     isRelatedServiceInstancePresent = true;
751                     serviceModelName = relatedInstanceModelInfo.getModelName();
752                     asdcServiceModelVersion = relatedInstanceModelInfo.getModelVersion();
753                 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
754                         && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
755                     isRelatedVnfInstancePresent = true;
756                     vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
757                 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
758                     volumeGroupId = relatedInstance.getInstanceId();
759                 }
760             }
761
762             if (requestScope.equalsIgnoreCase(ModelType.volumeGroup.name())) {
763                 serviceInstanceType = serviceModelName;
764                 vnfType = serviceModelName + "/" + vnfModelName;
765             } else if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())) {
766                 vfModuleModelName = modelInfo.getModelName();
767                 serviceInstanceType = serviceModelName;
768                 vnfType = serviceModelName + "/" + vnfModelName;
769                 vfModuleType = vnfType + "::" + vfModuleModelName;
770                 sir.setVolumeGroupInstanceId(volumeGroupId);
771             } else if (requestScope.equalsIgnoreCase(ModelType.vnf.name()))
772                 vnfType = serviceModelName + "/" + sir.getRequestDetails().getModelInfo().getModelCustomizationName();
773
774         }
775
776         return vnfType;
777
778     }
779
780 }