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 * Modifications Copyright (c) 2020 Nokia
11 * ================================================================================
12 * Licensed under the Apache License, Version 2.0 (the "License");
13 * you may not use this file except in compliance with the License.
14 * You may obtain a copy of the License at
16 * http://www.apache.org/licenses/LICENSE-2.0
18 * Unless required by applicable law or agreed to in writing, software
19 * distributed under the License is distributed on an "AS IS" BASIS,
20 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 * See the License for the specific language governing permissions and
22 * limitations under the License.
23 * ============LICENSE_END=========================================================
26 package org.onap.so.apihandlerinfra;
28 import java.io.IOException;
29 import java.io.StringWriter;
30 import java.sql.Timestamp;
31 import java.util.ArrayList;
32 import java.util.HashMap;
33 import java.util.List;
35 import java.util.Optional;
36 import java.util.StringTokenizer;
37 import javax.ws.rs.core.MultivaluedMap;
38 import javax.ws.rs.core.Response;
39 import javax.xml.XMLConstants;
40 import javax.xml.transform.OutputKeys;
41 import javax.xml.transform.Transformer;
42 import javax.xml.transform.TransformerFactory;
43 import javax.xml.transform.dom.DOMSource;
44 import javax.xml.transform.stream.StreamResult;
45 import org.onap.aai.domain.yang.Tenant;
46 import org.onap.so.apihandler.common.ResponseBuilder;
47 import org.onap.so.apihandlerinfra.infra.rest.AAIDataRetrieval;
48 import org.onap.so.apihandlerinfra.tasksbeans.TasksRequest;
49 import org.onap.so.apihandlerinfra.validation.ApplyUpdatedConfigValidation;
50 import org.onap.so.apihandlerinfra.validation.CloudConfigurationValidation;
51 import org.onap.so.apihandlerinfra.validation.ConfigurationParametersValidation;
52 import org.onap.so.apihandlerinfra.validation.CustomWorkflowValidation;
53 import org.onap.so.apihandlerinfra.validation.InPlaceSoftwareUpdateValidation;
54 import org.onap.so.apihandlerinfra.validation.InstanceIdMapValidation;
55 import org.onap.so.apihandlerinfra.validation.MembersValidation;
56 import org.onap.so.apihandlerinfra.validation.ModelInfoValidation;
57 import org.onap.so.apihandlerinfra.validation.PlatformLOBValidation;
58 import org.onap.so.apihandlerinfra.validation.ProjectOwningEntityValidation;
59 import org.onap.so.apihandlerinfra.validation.RelatedInstancesValidation;
60 import org.onap.so.apihandlerinfra.validation.RequestInfoValidation;
61 import org.onap.so.apihandlerinfra.validation.RequestParametersValidation;
62 import org.onap.so.apihandlerinfra.validation.RequestScopeValidation;
63 import org.onap.so.apihandlerinfra.validation.SubscriberInfoValidation;
64 import org.onap.so.apihandlerinfra.validation.UserParamsValidation;
65 import org.onap.so.apihandlerinfra.validation.ValidationInformation;
66 import org.onap.so.apihandlerinfra.validation.ValidationRule;
67 import org.onap.so.apihandlerinfra.vnfbeans.RequestStatusType;
68 import org.onap.so.apihandlerinfra.vnfbeans.VnfInputs;
69 import org.onap.so.apihandlerinfra.vnfbeans.VnfRequest;
70 import org.onap.so.constants.Status;
71 import org.onap.so.db.request.beans.InfraActiveRequests;
72 import org.onap.so.db.request.client.RequestsDbClient;
73 import org.onap.so.exceptions.ValidationException;
74 import org.onap.so.logger.LogConstants;
75 import org.onap.so.serviceinstancebeans.CloudConfiguration;
76 import org.onap.so.serviceinstancebeans.ModelInfo;
77 import org.onap.so.serviceinstancebeans.ModelType;
78 import org.onap.so.serviceinstancebeans.PolicyException;
79 import org.onap.so.serviceinstancebeans.RelatedInstance;
80 import org.onap.so.serviceinstancebeans.RelatedInstanceList;
81 import org.onap.so.serviceinstancebeans.RequestError;
82 import org.onap.so.serviceinstancebeans.RequestInfo;
83 import org.onap.so.serviceinstancebeans.RequestParameters;
84 import org.onap.so.serviceinstancebeans.Service;
85 import org.onap.so.serviceinstancebeans.ServiceException;
86 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
87 import org.slf4j.Logger;
88 import org.slf4j.LoggerFactory;
90 import org.springframework.beans.factory.annotation.Autowired;
91 import org.springframework.beans.factory.annotation.Value;
92 import org.springframework.stereotype.Component;
93 import org.w3c.dom.Document;
94 import org.w3c.dom.Element;
95 import org.w3c.dom.Node;
96 import org.w3c.dom.NodeList;
97 import com.fasterxml.jackson.annotation.JsonInclude.Include;
98 import com.fasterxml.jackson.core.JsonGenerationException;
99 import com.fasterxml.jackson.databind.JsonMappingException;
100 import com.fasterxml.jackson.databind.ObjectMapper;
103 public class MsoRequest {
106 private RequestsDbClient requestsDbClient;
109 private ResponseBuilder builder;
112 private AAIDataRetrieval aaiDataRet;
114 @Value("${mso.enforceDLP:false}")
115 private boolean enforceDLP;
117 private static Logger logger = LoggerFactory.getLogger(MsoRequest.class);
119 public Response buildServiceErrorResponse(int httpResponseCode, MsoException exceptionType, String errorText,
120 String messageId, List<String> variables, String version) {
122 if (errorText.length() > 1999) {
123 errorText = errorText.substring(0, 1999);
126 RequestError re = new RequestError();
128 if ("PolicyException".equals(exceptionType.name())) {
130 PolicyException pe = new PolicyException();
131 pe.setMessageId(messageId);
132 pe.setText(errorText);
133 if (variables != null) {
134 for (String variable : variables) {
135 pe.getVariables().add(variable);
138 re.setPolicyException(pe);
142 ServiceException se = new ServiceException();
143 se.setMessageId(messageId);
144 se.setText(errorText);
145 if (variables != null) {
146 for (String variable : variables) {
147 se.getVariables().add(variable);
150 re.setServiceException(se);
152 return builder.buildResponse(httpResponseCode, null, re, version);
156 // Parse request JSON
157 public void parse(ServiceInstancesRequest sir, HashMap<String, String> instanceIdMap, Actions action,
158 String version, String originalRequestJSON, int reqVersion, Boolean aLaCarteFlag)
159 throws ValidationException, IOException {
161 logger.debug("Validating the Service Instance request");
162 List<ValidationRule> rules = new ArrayList<>();
163 logger.debug("Incoming version is: {} coverting to int: {}", version, reqVersion);
164 RequestParameters requestParameters = sir.getRequestDetails().getRequestParameters();
165 ValidationInformation info =
166 new ValidationInformation(sir, instanceIdMap, action, reqVersion, aLaCarteFlag, requestParameters);
168 rules.add(new InstanceIdMapValidation());
170 String workflowUuid = null;
171 if (instanceIdMap != null) {
172 workflowUuid = instanceIdMap.get("workflowUuid");
175 if (workflowUuid != null) {
176 rules.add(new CustomWorkflowValidation());
177 } else if (reqVersion >= 6 && action == Action.inPlaceSoftwareUpdate) {
178 rules.add(new InPlaceSoftwareUpdateValidation());
179 } else if (reqVersion >= 6 && action == Action.applyUpdatedConfig) {
180 rules.add(new ApplyUpdatedConfigValidation());
181 } else if (action == Action.addMembers || action == Action.removeMembers) {
182 rules.add(new MembersValidation());
184 rules.add(new RequestScopeValidation());
185 rules.add(new RequestParametersValidation());
186 rules.add(new RequestInfoValidation());
187 rules.add(new ModelInfoValidation());
188 rules.add(new CloudConfigurationValidation());
189 rules.add(new SubscriberInfoValidation());
191 rules.add(new PlatformLOBValidation());
192 rules.add(new ProjectOwningEntityValidation());
194 rules.add(new RelatedInstancesValidation());
195 rules.add(new ConfigurationParametersValidation());
197 if (reqVersion >= 7 && requestParameters != null && requestParameters.getUserParams() != null) {
198 for (Map<String, Object> params : requestParameters.getUserParams()) {
199 if (params.containsKey("service")) {
200 ObjectMapper obj = new ObjectMapper();
201 String input = obj.writeValueAsString(params.get("service"));
202 Service validate = obj.readValue(input, Service.class);
203 info.setUserParams(validate);
204 rules.add(new UserParamsValidation());
209 for (ValidationRule rule : rules) {
214 void parseOrchestration(ServiceInstancesRequest sir) throws ValidationException {
215 RequestInfo requestInfo = sir.getRequestDetails().getRequestInfo();
217 if (requestInfo == null) {
218 throw new ValidationException("requestInfo");
221 if (empty(requestInfo.getSource())) {
222 throw new ValidationException("source");
224 if (empty(requestInfo.getRequestorId())) {
225 throw new ValidationException("requestorId");
229 public Map<String, List<String>> getOrchestrationFilters(MultivaluedMap<String, String> queryParams) {
230 final String FILTER_KEY = "filter";
231 Map<String, List<String>> orchestrationFilterParams = new HashMap<>();
233 Optional.ofNullable(queryParams.get(FILTER_KEY)).ifPresent(listValues -> listValues
234 .forEach(value -> addValueToOrchestrationFilterParamsMap(orchestrationFilterParams, value)));
236 return orchestrationFilterParams;
239 private void addValueToOrchestrationFilterParamsMap(Map<String, List<String>> orchestrationFilterParams,
241 final String TOKEN_DELIMITER = ":";
242 StringTokenizer stringTokenizer = new StringTokenizer(value, TOKEN_DELIMITER);
244 if (!stringTokenizer.hasMoreTokens()) {
247 String mapKey = stringTokenizer.nextToken();
248 List<String> orchestrationList = new ArrayList<>();
249 while (stringTokenizer.hasMoreTokens()) {
250 orchestrationList.add(stringTokenizer.nextToken());
253 orchestrationFilterParams.put(mapKey, orchestrationList);
256 public InfraActiveRequests createRequestObject(ServiceInstancesRequest servInsReq, Actions action, String requestId,
257 Status status, String originalRequestJSON, String requestScope) {
258 InfraActiveRequests aq = new InfraActiveRequests();
260 if (null == servInsReq) {
261 servInsReq = new ServiceInstancesRequest();
263 String networkType = "";
265 aq.setRequestId(requestId);
266 aq.setRequestAction(action.toString());
267 aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
269 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
271 aq.setStartTime(startTimeStamp);
272 if (requestScope.equals(ModelType.instanceGroup.name()) && action == Action.deleteInstance) {
273 aq.setRequestScope(requestScope);
275 RequestInfo requestInfo = servInsReq.getRequestDetails().getRequestInfo();
276 if (requestInfo != null) {
278 if (requestInfo.getSource() != null) {
279 aq.setSource(requestInfo.getSource());
281 if (requestInfo.getCallbackUrl() != null) {
282 aq.setCallBackUrl(requestInfo.getCallbackUrl());
284 if (requestInfo.getCorrelator() != null) {
285 aq.setCorrelator(requestInfo.getCorrelator());
288 if (requestInfo.getRequestorId() != null) {
289 aq.setRequestorId(requestInfo.getRequestorId());
293 if (servInsReq.getRequestDetails().getModelInfo() != null
294 || (action == Action.inPlaceSoftwareUpdate || action == Action.applyUpdatedConfig)) {
295 aq.setRequestScope(requestScope);
298 if (servInsReq.getRequestDetails().getCloudConfiguration() != null) {
299 CloudConfiguration cloudConfiguration = servInsReq.getRequestDetails().getCloudConfiguration();
300 if (cloudConfiguration.getLcpCloudRegionId() != null) {
301 aq.setCloudRegion(cloudConfiguration.getLcpCloudRegionId());
304 if (cloudConfiguration.getTenantId() != null) {
305 aq.setTenantId(cloudConfiguration.getTenantId());
310 if (servInsReq.getServiceInstanceId() != null) {
311 aq.setServiceInstanceId(servInsReq.getServiceInstanceId());
314 if (servInsReq.getVnfInstanceId() != null) {
315 aq.setVnfId(servInsReq.getVnfInstanceId());
318 if (servInsReq.getPnfName() != null) {
319 aq.setRequestScope(requestScope);
320 aq.setPnfName(servInsReq.getPnfName());
323 if (servInsReq.getRequestDetails() != null && servInsReq.getRequestDetails().getRequestInfo() != null
324 && servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId() != null) {
325 logger.debug("Retrieving productFamilyName to put into requests db");
327 org.onap.aai.domain.yang.Service service =
328 aaiDataRet.getService(servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId());
329 if (service != null) {
330 logger.debug("Found service by service-id");
331 String productFamilyName = service.getServiceDescription();
332 if (productFamilyName != null) {
333 aq.setProductFamilyName(productFamilyName);
338 aq.setProductFamilyName(getProductFamilyNameFromAAI(servInsReq));
340 aq.setTenantName(getTenantNameFromAAI(servInsReq));
342 if (ModelType.service.name().equalsIgnoreCase(requestScope)) {
343 if (servInsReq.getRequestDetails().getRequestInfo() != null) {
344 if (servInsReq.getRequestDetails().getRequestInfo().getInstanceName() != null) {
345 aq.setServiceInstanceName(requestInfo.getInstanceName());
350 if (ModelType.network.name().equalsIgnoreCase(requestScope)) {
351 aq.setNetworkName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
352 aq.setNetworkType(networkType);
353 aq.setNetworkId(servInsReq.getNetworkInstanceId());
356 if (ModelType.volumeGroup.name().equalsIgnoreCase(requestScope)) {
357 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
358 aq.setVolumeGroupName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
359 aq.setVnfType(vnfType);
363 if (ModelType.vfModule.name().equalsIgnoreCase(requestScope)) {
364 aq.setVfModuleName(requestInfo.getInstanceName());
365 aq.setVfModuleModelName(servInsReq.getRequestDetails().getModelInfo().getModelName());
366 aq.setVfModuleId(servInsReq.getVfModuleInstanceId());
367 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
368 aq.setVnfType(vnfType);
372 if (ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
373 aq.setConfigurationId(servInsReq.getConfigurationId());
374 aq.setConfigurationName(requestInfo.getInstanceName());
376 if (requestScope.equalsIgnoreCase(ModelType.instanceGroup.name())) {
377 aq.setInstanceGroupId(servInsReq.getInstanceGroupId());
378 aq.setInstanceGroupName(requestInfo.getInstanceName());
380 if (ModelType.vnf.name().equalsIgnoreCase(requestScope)) {
381 if (requestInfo != null) {
382 aq.setVnfName(requestInfo.getInstanceName());
384 if (null != servInsReq.getRequestDetails()) {
385 RelatedInstanceList[] instanceList = servInsReq.getRequestDetails().getRelatedInstanceList();
387 if (instanceList != null) {
389 for (RelatedInstanceList relatedInstanceList : instanceList) {
391 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
392 if (relatedInstance.getModelInfo().getModelType().equals(ModelType.service)) {
393 aq.setVnfType(vnfType);
401 aq.setRequestBody(originalRequestJSON);
403 aq.setRequestStatus(status.toString());
404 aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
405 } catch (Exception e) {
406 logger.error("Exception when creation record request", e);
408 if (!status.equals(Status.FAILED)) {
415 public InfraActiveRequests createRequestObject(TasksRequest taskRequest, Action action, String requestId,
416 Status status, String originalRequestJSON) {
417 InfraActiveRequests aq = new InfraActiveRequests();
420 org.onap.so.apihandlerinfra.tasksbeans.RequestInfo requestInfo =
421 taskRequest.getRequestDetails().getRequestInfo();
422 aq.setRequestId(requestId);
423 aq.setRequestAction(action.name());
424 aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
426 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
428 aq.setStartTime(startTimeStamp);
429 if (requestInfo != null) {
431 if (requestInfo.getSource() != null) {
432 aq.setSource(requestInfo.getSource());
435 if (requestInfo.getRequestorId() != null) {
436 aq.setRequestorId(requestInfo.getRequestorId());
440 aq.setRequestBody(originalRequestJSON);
441 aq.setRequestStatus(status.toString());
442 aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
444 } catch (Exception e) {
445 logger.error("Exception when creation record request", e);
447 if (!status.equals(Status.FAILED)) {
454 public void createErrorRequestRecord(Status status, String requestId, String errorMessage, Actions action,
455 String requestScope, String requestJSON) {
457 InfraActiveRequests request = new InfraActiveRequests(requestId);
458 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
459 request.setStartTime(startTimeStamp);
460 request.setRequestStatus(status.toString());
461 request.setStatusMessage(errorMessage);
462 request.setProgress((long) 100);
463 request.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
464 request.setRequestAction(action.toString());
465 request.setRequestScope(requestScope);
466 request.setRequestBody(requestJSON);
467 Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
468 request.setEndTime(endTimeStamp);
469 request.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
470 requestsDbClient.save(request);
471 } catch (Exception e) {
472 logger.error("Exception when updating record in DB", e);
473 logger.debug("Exception: ", e);
478 public Response buildResponse(int httpResponseCode, String errorCode, InfraActiveRequests inProgress) {
479 return buildResponseWithError(httpResponseCode, errorCode, inProgress, null);
482 public Response buildResponseWithError(int httpResponseCode, String errorCode, InfraActiveRequests inProgress,
483 String errorString) {
486 // Log the failed request into the MSO Requests database
488 return Response.status(httpResponseCode).entity(null).build();
492 public Response buildResponseFailedValidation(int httpResponseCode, String exceptionMessage) {
494 return Response.status(httpResponseCode).entity(null).build();
498 public String getServiceType(VnfInputs vnfInputs) {
499 if (vnfInputs.getServiceType() != null)
500 return vnfInputs.getServiceType();
501 if (vnfInputs.getServiceId() != null)
502 return vnfInputs.getServiceId();
506 public long translateStatus(RequestStatusType status) {
510 return Constants.PROGRESS_REQUEST_COMPLETED;
512 return Constants.PROGRESS_REQUEST_IN_PROGRESS;
518 public static String domToStr(Document doc) {
524 StringWriter sw = new StringWriter();
525 StreamResult sr = new StreamResult(sw);
526 TransformerFactory tf = TransformerFactory.newInstance();
527 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
528 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
529 Transformer t = tf.newTransformer();
530 t.setOutputProperty(OutputKeys.STANDALONE, "yes");
531 NodeList nl = doc.getDocumentElement().getChildNodes();
532 DOMSource source = null;
533 for (int x = 0; x < nl.getLength(); x++) {
535 if (e instanceof Element) {
536 source = new DOMSource(e);
540 if (source != null) {
541 t.transform(source, sr);
543 String s = sw.toString();
549 } catch (Exception e) {
550 logger.error("Exception in domToStr", e);
555 public void addBPMNSpecificInputs(VnfRequest vnfReq, VnfInputs vnfInputs, String personaModelId,
556 String personaModelVersion, Boolean isBaseVfModule, String vnfPersonaModelId,
557 String vnfPersonaModelVersion) {
558 vnfInputs.setPersonaModelId(personaModelId);
559 vnfInputs.setPersonaModelVersion(personaModelVersion);
560 vnfInputs.setIsBaseVfModule(isBaseVfModule);
561 vnfInputs.setVnfPersonaModelId(vnfPersonaModelId);
562 vnfInputs.setVnfPersonaModelVersion(vnfPersonaModelVersion);
564 vnfReq.setVnfInputs(vnfInputs);
568 private static boolean empty(String s) {
569 return (s == null || s.trim().isEmpty());
572 public String getRequestJSON(ServiceInstancesRequest sir)
573 throws JsonGenerationException, JsonMappingException, IOException {
574 ObjectMapper mapper = new ObjectMapper();
575 mapper.setSerializationInclusion(Include.NON_NULL);
577 logger.debug("building sir from object {}", sir);
578 String requestJSON = mapper.writeValueAsString(sir);
580 // Perform mapping from VID-style modelInfo fields to ASDC-style modelInfo fields
582 logger.debug("REQUEST JSON before mapping: {}", requestJSON);
583 // modelUuid = modelVersionId
584 requestJSON = requestJSON.replaceAll("\"modelVersionId\":", "\"modelUuid\":");
585 // modelCustomizationUuid = modelCustomizationId
586 requestJSON = requestJSON.replaceAll("\"modelCustomizationId\":", "\"modelCustomizationUuid\":");
587 // modelInstanceName = modelCustomizationName
588 requestJSON = requestJSON.replaceAll("\"modelCustomizationName\":", "\"modelInstanceName\":");
589 // modelInvariantUuid = modelInvariantId
590 requestJSON = requestJSON.replaceAll("\"modelInvariantId\":", "\"modelInvariantUuid\":");
591 logger.debug("REQUEST JSON after mapping: {}", requestJSON);
597 public boolean getAlacarteFlag(ServiceInstancesRequest sir) {
598 if (sir.getRequestDetails().getRequestParameters() != null
599 && sir.getRequestDetails().getRequestParameters().getALaCarte() != null)
600 return sir.getRequestDetails().getRequestParameters().getALaCarte();
606 public String getNetworkType(ServiceInstancesRequest sir, String requestScope) {
607 if (requestScope.equalsIgnoreCase(ModelType.network.name()))
608 return sir.getRequestDetails().getModelInfo().getModelName();
614 public String getServiceInstanceType(ServiceInstancesRequest sir, String requestScope) {
615 if (requestScope.equalsIgnoreCase(ModelType.network.name()))
616 return sir.getRequestDetails().getModelInfo().getModelName();
622 public String getSDCServiceModelVersion(ServiceInstancesRequest sir) {
623 String sdcServiceModelVersion = null;
624 if (sir.getRequestDetails().getRelatedInstanceList() != null)
625 for (RelatedInstanceList relatedInstanceList : sir.getRequestDetails().getRelatedInstanceList()) {
626 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
627 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
628 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service))
629 sdcServiceModelVersion = relatedInstanceModelInfo.getModelVersion();
631 return sdcServiceModelVersion;
635 public String getVfModuleType(ServiceInstancesRequest sir, String requestScope) {
638 String vfModuleType = null;
639 String vfModuleModelName;
640 ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
641 RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
642 String serviceModelName = null;
643 String vnfModelName = null;
644 String volumeGroupId = null;
646 if (instanceList == null) {
649 for (RelatedInstanceList relatedInstanceList : instanceList) {
650 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
651 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
653 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
654 serviceModelName = relatedInstanceModelInfo.getModelName();
655 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
656 && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
657 vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
658 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
659 volumeGroupId = relatedInstance.getInstanceId();
662 if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())) {
663 vfModuleModelName = modelInfo.getModelName();
664 vnfType = serviceModelName + "/" + vnfModelName;
665 vfModuleType = vnfType + "::" + vfModuleModelName;
666 sir.setVolumeGroupInstanceId(volumeGroupId);
673 public String getVnfType(ServiceInstancesRequest sir, String requestScope) {
675 String vnfType = null;
676 RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
677 String serviceModelName = null;
678 String vnfModelName = null;
679 String volumeGroupId = null;
681 if (instanceList == null) {
684 for (RelatedInstanceList relatedInstanceList : instanceList) {
685 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
686 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
688 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
689 serviceModelName = relatedInstanceModelInfo.getModelName();
690 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
691 && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
692 vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
693 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
694 volumeGroupId = relatedInstance.getInstanceId();
698 if (requestScope.equalsIgnoreCase(ModelType.volumeGroup.name())) {
699 vnfType = serviceModelName + "/" + vnfModelName;
700 } else if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())) {
701 vnfType = serviceModelName + "/" + vnfModelName;
702 sir.setVolumeGroupInstanceId(volumeGroupId);
703 } else if (requestScope.equalsIgnoreCase(ModelType.vnf.name()))
704 vnfType = serviceModelName + "/" + sir.getRequestDetails().getModelInfo().getModelCustomizationName();
709 protected String getTenantNameFromAAI(ServiceInstancesRequest servInsReq) {
710 String tenantName = null;
711 if (servInsReq.getRequestDetails() != null && servInsReq.getRequestDetails().getCloudConfiguration() != null
712 && servInsReq.getRequestDetails().getCloudConfiguration().getTenantId() != null) {
713 Tenant tenant = aaiDataRet.getTenant(servInsReq.getRequestDetails().getCloudConfiguration().getCloudOwner(),
714 servInsReq.getRequestDetails().getCloudConfiguration().getLcpCloudRegionId(),
715 servInsReq.getRequestDetails().getCloudConfiguration().getTenantId());
716 if (tenant != null) {
717 tenantName = tenant.getTenantName();
723 protected String getProductFamilyNameFromAAI(ServiceInstancesRequest servInsReq) {
724 String productFamilyName = null;
725 if (servInsReq.getRequestDetails() != null && servInsReq.getRequestDetails().getRequestInfo() != null
726 && servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId() != null) {
727 org.onap.aai.domain.yang.Service service =
728 aaiDataRet.getService(servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId());
729 if (service != null) {
730 productFamilyName = service.getServiceDescription();
733 return productFamilyName;