2 * ============LICENSE_START=======================================================
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
14 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
24 package org.onap.so.apihandlerinfra;
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;
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;
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;
101 public class MsoRequest {
104 private RequestsDbClient requestsDbClient;
107 private ResponseBuilder builder;
109 @Value("${mso.enforceDLP:false}")
110 private boolean enforceDLP;
112 private static Logger logger = LoggerFactory.getLogger(MsoRequest.class);
114 public Response buildServiceErrorResponse(int httpResponseCode, MsoException exceptionType, String errorText,
115 String messageId, List<String> variables, String version) {
117 if (errorText.length() > 1999) {
118 errorText = errorText.substring(0, 1999);
121 RequestError re = new RequestError();
123 if ("PolicyException".equals(exceptionType.name())) {
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);
133 re.setPolicyException(pe);
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);
145 re.setServiceException(se);
147 return builder.buildResponse(httpResponseCode, null, re, version);
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 {
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);
164 rules.add(new InstanceIdMapValidation());
166 String workflowUuid = null;
167 if (instanceIdMap != null) {
168 workflowUuid = instanceIdMap.get("workflowUuid");
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());
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());
187 rules.add(new PlatformLOBValidation());
188 rules.add(new ProjectOwningEntityValidation());
190 rules.add(new RelatedInstancesValidation());
191 rules.add(new ConfigurationParametersValidation());
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());
205 for (ValidationRule rule : rules) {
210 void parseOrchestration(ServiceInstancesRequest sir) throws ValidationException {
211 RequestInfo requestInfo = sir.getRequestDetails().getRequestInfo();
213 if (requestInfo == null) {
214 throw new ValidationException("requestInfo");
217 if (empty(requestInfo.getSource())) {
218 throw new ValidationException("source");
220 if (empty(requestInfo.getRequestorId())) {
221 throw new ValidationException("requestorId");
225 public Map<String, List<String>> getOrchestrationFilters(MultivaluedMap<String, String> queryParams)
226 throws ValidationException {
228 String queryParam = null;
229 Map<String, List<String>> orchestrationFilterParams = new HashMap<>();
232 for (Entry<String, List<String>> entry : queryParams.entrySet()) {
233 queryParam = entry.getKey();
236 if ("filter".equalsIgnoreCase(queryParam)) {
237 for (String value : entry.getValue()) {
238 StringTokenizer st = new StringTokenizer(value, ":");
241 String mapKey = null;
242 List<String> orchestrationList = new ArrayList<>();
243 while (st.hasMoreElements()) {
245 mapKey = st.nextElement() + "";
247 orchestrationList.add(st.nextElement() + "");
251 orchestrationFilterParams.put(mapKey, orchestrationList);
255 } catch (Exception e) {
256 throw new ValidationException("QueryParam ServiceInfo", e);
262 return orchestrationFilterParams;
265 public InfraActiveRequests createRequestObject(ServiceInstancesRequest servInsReq, Actions action, String requestId,
266 Status status, String originalRequestJSON, String requestScope) {
267 InfraActiveRequests aq = new InfraActiveRequests();
269 if (null == servInsReq) {
270 servInsReq = new ServiceInstancesRequest();
272 String networkType = "";
274 aq.setRequestId(requestId);
275 aq.setRequestAction(action.toString());
276 aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
278 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
280 aq.setStartTime(startTimeStamp);
281 if (requestScope.equals(ModelType.instanceGroup.name()) && action == Action.deleteInstance) {
282 aq.setRequestScope(requestScope);
284 RequestInfo requestInfo = servInsReq.getRequestDetails().getRequestInfo();
285 if (requestInfo != null) {
287 if (requestInfo.getSource() != null) {
288 aq.setSource(requestInfo.getSource());
290 if (requestInfo.getCallbackUrl() != null) {
291 aq.setCallBackUrl(requestInfo.getCallbackUrl());
293 if (requestInfo.getCorrelator() != null) {
294 aq.setCorrelator(requestInfo.getCorrelator());
297 if (requestInfo.getRequestorId() != null) {
298 aq.setRequestorId(requestInfo.getRequestorId());
302 if (servInsReq.getRequestDetails().getModelInfo() != null
303 || (action == Action.inPlaceSoftwareUpdate || action == Action.applyUpdatedConfig)) {
304 aq.setRequestScope(requestScope);
307 if (servInsReq.getRequestDetails().getCloudConfiguration() != null) {
308 CloudConfiguration cloudConfiguration = servInsReq.getRequestDetails().getCloudConfiguration();
309 if (cloudConfiguration.getLcpCloudRegionId() != null) {
310 aq.setCloudRegion(cloudConfiguration.getLcpCloudRegionId());
313 if (cloudConfiguration.getTenantId() != null) {
314 aq.setTenantId(cloudConfiguration.getTenantId());
319 if (servInsReq.getServiceInstanceId() != null) {
320 aq.setServiceInstanceId(servInsReq.getServiceInstanceId());
323 if (servInsReq.getVnfInstanceId() != null) {
324 aq.setVnfId(servInsReq.getVnfInstanceId());
327 if (servInsReq.getPnfId() != null) {
328 aq.setRequestScope(requestScope);
329 aq.setPnfId(servInsReq.getPnfId());
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());
340 if (ModelType.network.name().equalsIgnoreCase(requestScope)) {
341 aq.setNetworkName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
342 aq.setNetworkType(networkType);
343 aq.setNetworkId(servInsReq.getNetworkInstanceId());
346 if (ModelType.volumeGroup.name().equalsIgnoreCase(requestScope)) {
347 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
348 aq.setVolumeGroupName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
349 aq.setVnfType(vnfType);
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);
362 if (ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
363 aq.setConfigurationId(servInsReq.getConfigurationId());
364 aq.setConfigurationName(requestInfo.getInstanceName());
366 if (requestScope.equalsIgnoreCase(ModelType.instanceGroup.name())) {
367 aq.setInstanceGroupId(servInsReq.getInstanceGroupId());
368 aq.setInstanceGroupName(requestInfo.getInstanceName());
370 if (ModelType.vnf.name().equalsIgnoreCase(requestScope)) {
371 if (requestInfo != null) {
372 aq.setVnfName(requestInfo.getInstanceName());
374 if (null != servInsReq.getRequestDetails()) {
375 RelatedInstanceList[] instanceList = servInsReq.getRequestDetails().getRelatedInstanceList();
377 if (instanceList != null) {
379 for (RelatedInstanceList relatedInstanceList : instanceList) {
381 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
382 if (relatedInstance.getModelInfo().getModelType().equals(ModelType.service)) {
383 aq.setVnfType(vnfType);
391 aq.setRequestBody(originalRequestJSON);
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);
398 if (!status.equals(Status.FAILED)) {
405 public InfraActiveRequests createRequestObject(TasksRequest taskRequest, Action action, String requestId,
406 Status status, String originalRequestJSON) {
407 InfraActiveRequests aq = new InfraActiveRequests();
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));
416 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
418 aq.setStartTime(startTimeStamp);
419 if (requestInfo != null) {
421 if (requestInfo.getSource() != null) {
422 aq.setSource(requestInfo.getSource());
425 if (requestInfo.getRequestorId() != null) {
426 aq.setRequestorId(requestInfo.getRequestorId());
430 aq.setRequestBody(originalRequestJSON);
431 aq.setRequestStatus(status.toString());
432 aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
434 } catch (Exception e) {
435 logger.error("Exception when creation record request", e);
437 if (!status.equals(Status.FAILED)) {
444 public void createErrorRequestRecord(Status status, String requestId, String errorMessage, Actions action,
445 String requestScope, String requestJSON) {
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);
469 public Response buildResponse(int httpResponseCode, String errorCode, InfraActiveRequests inProgress) {
470 return buildResponseWithError(httpResponseCode, errorCode, inProgress, null);
473 public Response buildResponseWithError(int httpResponseCode, String errorCode, InfraActiveRequests inProgress,
474 String errorString) {
478 // Log the failed request into the MSO Requests database
480 return Response.status(httpResponseCode).entity(null).build();
484 public Response buildResponseFailedValidation(int httpResponseCode, String exceptionMessage) {
486 return Response.status(httpResponseCode).entity(null).build();
491 public String getServiceType(VnfInputs vnfInputs) {
492 if (vnfInputs.getServiceType() != null)
493 return vnfInputs.getServiceType();
494 if (vnfInputs.getServiceId() != null)
495 return vnfInputs.getServiceId();
499 public long translateStatus(RequestStatusType status) {
503 return Constants.PROGRESS_REQUEST_COMPLETED;
505 return Constants.PROGRESS_REQUEST_IN_PROGRESS;
511 public static String domToStr(Document doc) {
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++) {
528 if (e instanceof Element) {
529 source = new DOMSource(e);
533 if (source != null) {
534 t.transform(source, sr);
536 String s = sw.toString();
542 } catch (Exception e) {
543 logger.error("Exception in domToStr", e);
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);
557 vnfReq.setVnfInputs(vnfInputs);
561 private static boolean empty(String s) {
562 return (s == null || s.trim().isEmpty());
565 public String getRequestJSON(ServiceInstancesRequest sir)
566 throws JsonGenerationException, JsonMappingException, IOException {
567 ObjectMapper mapper = new ObjectMapper();
568 mapper.setSerializationInclusion(Include.NON_NULL);
570 logger.debug("building sir from object {}", sir);
571 String requestJSON = mapper.writeValueAsString(sir);
573 // Perform mapping from VID-style modelInfo fields to ASDC-style modelInfo fields
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);
590 public boolean getAlacarteFlag(ServiceInstancesRequest sir) {
591 if (sir.getRequestDetails().getRequestParameters() != null
592 && sir.getRequestDetails().getRequestParameters().getALaCarte() != null)
593 return sir.getRequestDetails().getRequestParameters().getALaCarte();
599 public String getNetworkType(ServiceInstancesRequest sir, String requestScope) {
600 if (requestScope.equalsIgnoreCase(ModelType.network.name()))
601 return sir.getRequestDetails().getModelInfo().getModelName();
607 public String getServiceInstanceType(ServiceInstancesRequest sir, String requestScope) {
608 if (requestScope.equalsIgnoreCase(ModelType.network.name()))
609 return sir.getRequestDetails().getModelInfo().getModelName();
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();
624 return sdcServiceModelVersion;
628 public String getVfModuleType(ServiceInstancesRequest sir, String requestScope, Actions action, int reqVersion) {
630 String serviceInstanceType = null;
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;
647 if (instanceList != null) {
648 for (RelatedInstanceList relatedInstanceList : instanceList) {
649 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
650 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
652 if (action != Action.deleteInstance) {
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;
666 if (ModelType.connectionPoint.equals(relatedInstanceModelInfo.getModelType())
667 && ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
668 isConnectionPointPresent = true;
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();
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();
704 public String getVnfType(ServiceInstancesRequest sir, String requestScope, Actions action, int reqVersion) {
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;
723 if (instanceList != null) {
724 for (RelatedInstanceList relatedInstanceList : instanceList) {
725 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
726 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
728 if (action != Action.deleteInstance) {
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;
742 if (ModelType.connectionPoint.equals(relatedInstanceModelInfo.getModelType())
743 && ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
744 isConnectionPointPresent = true;
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();
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();