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, Map<String, String> instanceIdMap, Actions action, String version,
158 String originalRequestJSON, int reqVersion, Boolean aLaCarteFlag) throws ValidationException, IOException {
160 logger.debug("Validating the Service Instance request");
161 List<ValidationRule> rules = new ArrayList<>();
162 logger.debug("Incoming version is: {} coverting to int: {}", version, reqVersion);
163 RequestParameters requestParameters = sir.getRequestDetails().getRequestParameters();
164 ValidationInformation info =
165 new ValidationInformation(sir, instanceIdMap, action, reqVersion, aLaCarteFlag, requestParameters);
167 rules.add(new InstanceIdMapValidation());
169 String workflowUuid = null;
170 if (instanceIdMap != null) {
171 workflowUuid = instanceIdMap.get("workflowUuid");
174 if (workflowUuid != null) {
175 rules.add(new CustomWorkflowValidation());
176 } else if (reqVersion >= 6 && action == Action.inPlaceSoftwareUpdate) {
177 rules.add(new InPlaceSoftwareUpdateValidation());
178 } else if (reqVersion >= 6 && action == Action.applyUpdatedConfig) {
179 rules.add(new ApplyUpdatedConfigValidation());
180 } else if (action == Action.addMembers || action == Action.removeMembers) {
181 rules.add(new MembersValidation());
183 rules.add(new RequestScopeValidation());
184 rules.add(new RequestParametersValidation());
185 rules.add(new RequestInfoValidation());
186 rules.add(new ModelInfoValidation());
187 rules.add(new CloudConfigurationValidation());
188 rules.add(new SubscriberInfoValidation());
190 rules.add(new PlatformLOBValidation());
191 rules.add(new ProjectOwningEntityValidation());
193 rules.add(new RelatedInstancesValidation());
194 rules.add(new ConfigurationParametersValidation());
196 if (reqVersion >= 7 && requestParameters != null && requestParameters.getUserParams() != null) {
197 for (Map<String, Object> params : requestParameters.getUserParams()) {
198 if (params.containsKey("service")) {
199 ObjectMapper obj = new ObjectMapper();
200 String input = obj.writeValueAsString(params.get("service"));
201 Service validate = obj.readValue(input, Service.class);
202 info.setUserParams(validate);
203 rules.add(new UserParamsValidation());
208 for (ValidationRule rule : rules) {
213 void parseOrchestration(ServiceInstancesRequest sir) throws ValidationException {
214 RequestInfo requestInfo = sir.getRequestDetails().getRequestInfo();
216 if (requestInfo == null) {
217 throw new ValidationException("requestInfo");
220 if (empty(requestInfo.getSource())) {
221 throw new ValidationException("source");
223 if (empty(requestInfo.getRequestorId())) {
224 throw new ValidationException("requestorId");
228 public Map<String, List<String>> getOrchestrationFilters(MultivaluedMap<String, String> queryParams) {
229 final String FILTER_KEY = "filter";
230 Map<String, List<String>> orchestrationFilterParams = new HashMap<>();
232 Optional.ofNullable(queryParams.get(FILTER_KEY)).ifPresent(listValues -> listValues
233 .forEach(value -> addValueToOrchestrationFilterParamsMap(orchestrationFilterParams, value)));
235 return orchestrationFilterParams;
238 private void addValueToOrchestrationFilterParamsMap(Map<String, List<String>> orchestrationFilterParams,
240 final String TOKEN_DELIMITER = ":";
241 StringTokenizer stringTokenizer = new StringTokenizer(value, TOKEN_DELIMITER);
243 if (!stringTokenizer.hasMoreTokens()) {
246 String mapKey = stringTokenizer.nextToken();
247 List<String> orchestrationList = new ArrayList<>();
248 while (stringTokenizer.hasMoreTokens()) {
249 orchestrationList.add(stringTokenizer.nextToken());
252 orchestrationFilterParams.put(mapKey, orchestrationList);
255 public InfraActiveRequests createRequestObject(ServiceInstancesRequest servInsReq, Actions action, String requestId,
256 Status status, String originalRequestJSON, String requestScope) {
257 InfraActiveRequests aq = new InfraActiveRequests();
259 if (null == servInsReq) {
260 servInsReq = new ServiceInstancesRequest();
262 String networkType = "";
264 aq.setRequestId(requestId);
265 aq.setRequestAction(action.toString());
266 aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
268 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
270 aq.setStartTime(startTimeStamp);
271 if (requestScope.equals(ModelType.instanceGroup.name()) && action == Action.deleteInstance) {
272 aq.setRequestScope(requestScope);
274 RequestInfo requestInfo = servInsReq.getRequestDetails().getRequestInfo();
275 if (requestInfo != null) {
277 if (requestInfo.getSource() != null) {
278 aq.setSource(requestInfo.getSource());
280 if (requestInfo.getCallbackUrl() != null) {
281 aq.setCallBackUrl(requestInfo.getCallbackUrl());
283 if (requestInfo.getCorrelator() != null) {
284 aq.setCorrelator(requestInfo.getCorrelator());
287 if (requestInfo.getRequestorId() != null) {
288 aq.setRequestorId(requestInfo.getRequestorId());
292 if (servInsReq.getRequestDetails().getModelInfo() != null
293 || (action == Action.inPlaceSoftwareUpdate || action == Action.applyUpdatedConfig)) {
294 aq.setRequestScope(requestScope);
297 if (servInsReq.getRequestDetails().getCloudConfiguration() != null) {
298 CloudConfiguration cloudConfiguration = servInsReq.getRequestDetails().getCloudConfiguration();
299 if (cloudConfiguration.getLcpCloudRegionId() != null) {
300 aq.setCloudRegion(cloudConfiguration.getLcpCloudRegionId());
303 if (cloudConfiguration.getTenantId() != null) {
304 aq.setTenantId(cloudConfiguration.getTenantId());
309 if (servInsReq.getServiceInstanceId() != null) {
310 aq.setServiceInstanceId(servInsReq.getServiceInstanceId());
313 if (servInsReq.getVnfInstanceId() != null) {
314 aq.setVnfId(servInsReq.getVnfInstanceId());
317 if (servInsReq.getPnfName() != null) {
318 aq.setRequestScope(requestScope);
319 aq.setPnfName(servInsReq.getPnfName());
322 if (servInsReq.getRequestDetails() != null && servInsReq.getRequestDetails().getRequestInfo() != null
323 && servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId() != null) {
324 logger.debug("Retrieving productFamilyName to put into requests db");
326 org.onap.aai.domain.yang.Service service =
327 aaiDataRet.getService(servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId());
328 if (service != null) {
329 logger.debug("Found service by service-id");
330 String productFamilyName = service.getServiceDescription();
331 if (productFamilyName != null) {
332 aq.setProductFamilyName(productFamilyName);
337 aq.setProductFamilyName(getProductFamilyNameFromAAI(servInsReq));
339 aq.setTenantName(getTenantNameFromAAI(servInsReq));
341 if (ModelType.service.name().equalsIgnoreCase(requestScope)) {
342 if (servInsReq.getRequestDetails().getRequestInfo() != null) {
343 if (servInsReq.getRequestDetails().getRequestInfo().getInstanceName() != null) {
344 aq.setServiceInstanceName(requestInfo.getInstanceName());
349 if (ModelType.network.name().equalsIgnoreCase(requestScope)) {
350 aq.setNetworkName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
351 aq.setNetworkType(networkType);
352 aq.setNetworkId(servInsReq.getNetworkInstanceId());
355 if (ModelType.volumeGroup.name().equalsIgnoreCase(requestScope)) {
356 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
357 aq.setVolumeGroupName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
358 aq.setVnfType(vnfType);
362 if (ModelType.vfModule.name().equalsIgnoreCase(requestScope)) {
363 aq.setVfModuleName(requestInfo.getInstanceName());
364 aq.setVfModuleModelName(servInsReq.getRequestDetails().getModelInfo().getModelName());
365 aq.setVfModuleId(servInsReq.getVfModuleInstanceId());
366 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
367 aq.setVnfType(vnfType);
371 if (ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
372 aq.setConfigurationId(servInsReq.getConfigurationId());
373 aq.setConfigurationName(requestInfo.getInstanceName());
375 if (requestScope.equalsIgnoreCase(ModelType.instanceGroup.name())) {
376 aq.setInstanceGroupId(servInsReq.getInstanceGroupId());
377 aq.setInstanceGroupName(requestInfo.getInstanceName());
380 if (ModelType.vnf.name().equalsIgnoreCase(requestScope)
381 || ModelType.cnf.name().equalsIgnoreCase(requestScope)) {
382 if (requestInfo != null) {
383 aq.setVnfName(requestInfo.getInstanceName());
385 if (null != servInsReq.getRequestDetails()) {
386 RelatedInstanceList[] instanceList = servInsReq.getRequestDetails().getRelatedInstanceList();
388 if (instanceList != null) {
390 for (RelatedInstanceList relatedInstanceList : instanceList) {
392 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
393 if (relatedInstance.getModelInfo().getModelType().equals(ModelType.service)) {
394 aq.setVnfType(vnfType);
402 aq.setRequestBody(originalRequestJSON);
404 aq.setRequestStatus(status.toString());
405 aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
406 } catch (Exception e) {
407 logger.error("Exception when creation record request", e);
409 if (!status.equals(Status.FAILED)) {
416 public InfraActiveRequests createRequestObject(TasksRequest taskRequest, Action action, String requestId,
417 Status status, String originalRequestJSON) {
418 InfraActiveRequests aq = new InfraActiveRequests();
421 org.onap.so.apihandlerinfra.tasksbeans.RequestInfo requestInfo =
422 taskRequest.getRequestDetails().getRequestInfo();
423 aq.setRequestId(requestId);
424 aq.setRequestAction(action.name());
425 aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
427 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
429 aq.setStartTime(startTimeStamp);
430 if (requestInfo != null) {
432 if (requestInfo.getSource() != null) {
433 aq.setSource(requestInfo.getSource());
436 if (requestInfo.getRequestorId() != null) {
437 aq.setRequestorId(requestInfo.getRequestorId());
441 aq.setRequestBody(originalRequestJSON);
442 aq.setRequestStatus(status.toString());
443 aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
445 } catch (Exception e) {
446 logger.error("Exception when creation record request", e);
448 if (!status.equals(Status.FAILED)) {
455 public void createErrorRequestRecord(Status status, String requestId, String errorMessage, Actions action,
456 String requestScope, String requestJSON, String serviceInstanceId, ServiceInstancesRequest sir) {
458 InfraActiveRequests request = new InfraActiveRequests(requestId);
459 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
460 request.setStartTime(startTimeStamp);
461 request.setRequestStatus(status.toString());
462 request.setStatusMessage(errorMessage);
463 request.setProgress((long) 100);
464 request.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
465 request.setRequestAction(action.toString());
466 request.setRequestScope(requestScope);
467 request.setRequestBody(requestJSON);
468 if (serviceInstanceId != null) {
469 request.setServiceInstanceId(serviceInstanceId);
471 Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
472 request.setEndTime(endTimeStamp);
473 request.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
475 if (sir.getRequestDetails() != null && sir.getRequestDetails().getRequestInfo() != null) {
476 request.setRequestorId(sir.getRequestDetails().getRequestInfo().getRequestorId());
477 request.setSource(sir.getRequestDetails().getRequestInfo().getSource());
478 if (ModelType.service.name().equalsIgnoreCase(requestScope)) {
479 if (sir.getRequestDetails().getRequestInfo().getInstanceName() != null) {
480 request.setServiceInstanceName(sir.getRequestDetails().getRequestInfo().getInstanceName());
485 requestsDbClient.save(request);
486 } catch (Exception e) {
487 logger.error("Exception when updating record in DB", e);
488 logger.debug("Exception: ", e);
492 public Response buildResponse(int httpResponseCode, String errorCode, InfraActiveRequests inProgress) {
493 return buildResponseWithError(httpResponseCode, errorCode, inProgress, null);
496 public Response buildResponseWithError(int httpResponseCode, String errorCode, InfraActiveRequests inProgress,
497 String errorString) {
500 // Log the failed request into the MSO Requests database
502 return Response.status(httpResponseCode).entity(null).build();
506 public Response buildResponseFailedValidation(int httpResponseCode, String exceptionMessage) {
508 return Response.status(httpResponseCode).entity(null).build();
512 public String getServiceType(VnfInputs vnfInputs) {
513 if (vnfInputs.getServiceType() != null)
514 return vnfInputs.getServiceType();
515 if (vnfInputs.getServiceId() != null)
516 return vnfInputs.getServiceId();
520 public long translateStatus(RequestStatusType status) {
524 return Constants.PROGRESS_REQUEST_COMPLETED;
526 return Constants.PROGRESS_REQUEST_IN_PROGRESS;
532 public static String domToStr(Document doc) {
538 StringWriter sw = new StringWriter();
539 StreamResult sr = new StreamResult(sw);
540 TransformerFactory tf = TransformerFactory.newInstance();
541 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
542 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
543 Transformer t = tf.newTransformer();
544 t.setOutputProperty(OutputKeys.STANDALONE, "yes");
545 NodeList nl = doc.getDocumentElement().getChildNodes();
546 DOMSource source = null;
547 for (int x = 0; x < nl.getLength(); x++) {
549 if (e instanceof Element) {
550 source = new DOMSource(e);
554 if (source != null) {
555 t.transform(source, sr);
557 String s = sw.toString();
563 } catch (Exception e) {
564 logger.error("Exception in domToStr", e);
569 public void addBPMNSpecificInputs(VnfRequest vnfReq, VnfInputs vnfInputs, String personaModelId,
570 String personaModelVersion, Boolean isBaseVfModule, String vnfPersonaModelId,
571 String vnfPersonaModelVersion) {
572 vnfInputs.setPersonaModelId(personaModelId);
573 vnfInputs.setPersonaModelVersion(personaModelVersion);
574 vnfInputs.setIsBaseVfModule(isBaseVfModule);
575 vnfInputs.setVnfPersonaModelId(vnfPersonaModelId);
576 vnfInputs.setVnfPersonaModelVersion(vnfPersonaModelVersion);
578 vnfReq.setVnfInputs(vnfInputs);
582 private static boolean empty(String s) {
583 return (s == null || s.trim().isEmpty());
586 public String getRequestJSON(ServiceInstancesRequest sir)
587 throws JsonGenerationException, JsonMappingException, IOException {
588 ObjectMapper mapper = new ObjectMapper();
589 mapper.setSerializationInclusion(Include.NON_NULL);
591 logger.debug("building sir from object {}", sir);
592 String requestJSON = mapper.writeValueAsString(sir);
594 // Perform mapping from VID-style modelInfo fields to ASDC-style modelInfo fields
596 logger.debug("REQUEST JSON before mapping: {}", requestJSON);
597 // modelUuid = modelVersionId
598 requestJSON = requestJSON.replaceAll("\"modelVersionId\":", "\"modelUuid\":");
599 // modelCustomizationUuid = modelCustomizationId
600 requestJSON = requestJSON.replaceAll("\"modelCustomizationId\":", "\"modelCustomizationUuid\":");
601 // modelInstanceName = modelCustomizationName
602 requestJSON = requestJSON.replaceAll("\"modelCustomizationName\":", "\"modelInstanceName\":");
603 // modelInvariantUuid = modelInvariantId
604 requestJSON = requestJSON.replaceAll("\"modelInvariantId\":", "\"modelInvariantUuid\":");
605 logger.debug("REQUEST JSON after mapping: {}", requestJSON);
611 public boolean getAlacarteFlag(ServiceInstancesRequest sir) {
612 if (sir.getRequestDetails().getRequestParameters() != null
613 && sir.getRequestDetails().getRequestParameters().getALaCarte() != null)
614 return sir.getRequestDetails().getRequestParameters().getALaCarte();
620 public String getNetworkType(ServiceInstancesRequest sir, String requestScope) {
621 if (requestScope.equalsIgnoreCase(ModelType.network.name()))
622 return sir.getRequestDetails().getModelInfo().getModelName();
628 public String getServiceInstanceType(ServiceInstancesRequest sir, String requestScope) {
629 if (requestScope.equalsIgnoreCase(ModelType.network.name()))
630 return sir.getRequestDetails().getModelInfo().getModelName();
636 public String getSDCServiceModelVersion(ServiceInstancesRequest sir) {
637 String sdcServiceModelVersion = null;
638 if (sir.getRequestDetails().getRelatedInstanceList() != null)
639 for (RelatedInstanceList relatedInstanceList : sir.getRequestDetails().getRelatedInstanceList()) {
640 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
641 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
642 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service))
643 sdcServiceModelVersion = relatedInstanceModelInfo.getModelVersion();
645 return sdcServiceModelVersion;
649 public String getVfModuleType(ServiceInstancesRequest sir, String requestScope) {
652 String vfModuleType = null;
653 String vfModuleModelName;
654 ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
655 RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
656 String serviceModelName = null;
657 String vnfModelName = null;
658 String volumeGroupId = null;
660 if (instanceList == null) {
663 for (RelatedInstanceList relatedInstanceList : instanceList) {
664 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
665 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
667 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
668 serviceModelName = relatedInstanceModelInfo.getModelName();
669 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
670 && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
671 vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
672 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
673 volumeGroupId = relatedInstance.getInstanceId();
676 if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())) {
677 vfModuleModelName = modelInfo.getModelName();
678 vnfType = serviceModelName + "/" + vnfModelName;
679 vfModuleType = vnfType + "::" + vfModuleModelName;
680 sir.setVolumeGroupInstanceId(volumeGroupId);
687 public String getVnfType(ServiceInstancesRequest sir, String requestScope) {
689 String vnfType = null;
690 RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
691 String serviceModelName = null;
692 String vnfModelName = null;
693 String volumeGroupId = null;
695 if (instanceList == null) {
698 for (RelatedInstanceList relatedInstanceList : instanceList) {
699 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
700 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
702 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
703 serviceModelName = relatedInstanceModelInfo.getModelName();
704 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
705 && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
706 vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
707 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
708 volumeGroupId = relatedInstance.getInstanceId();
712 if (requestScope.equalsIgnoreCase(ModelType.volumeGroup.name())) {
713 vnfType = serviceModelName + "/" + vnfModelName;
714 } else if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())) {
715 vnfType = serviceModelName + "/" + vnfModelName;
716 sir.setVolumeGroupInstanceId(volumeGroupId);
717 } else if (requestScope.equalsIgnoreCase(ModelType.vnf.name())
718 || requestScope.equalsIgnoreCase(ModelType.cnf.name()))
719 vnfType = serviceModelName + "/" + sir.getRequestDetails().getModelInfo().getModelCustomizationName();
724 protected String getTenantNameFromAAI(ServiceInstancesRequest servInsReq) {
725 String tenantName = null;
726 if (servInsReq.getRequestDetails() != null && servInsReq.getRequestDetails().getCloudConfiguration() != null
727 && servInsReq.getRequestDetails().getCloudConfiguration().getTenantId() != null) {
728 Tenant tenant = aaiDataRet.getTenant(servInsReq.getRequestDetails().getCloudConfiguration().getCloudOwner(),
729 servInsReq.getRequestDetails().getCloudConfiguration().getLcpCloudRegionId(),
730 servInsReq.getRequestDetails().getCloudConfiguration().getTenantId());
731 if (tenant != null) {
732 tenantName = tenant.getTenantName();
738 protected String getProductFamilyNameFromAAI(ServiceInstancesRequest servInsReq) {
739 String productFamilyName = null;
740 if (servInsReq.getRequestDetails() != null && servInsReq.getRequestDetails().getRequestInfo() != null
741 && servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId() != null) {
742 org.onap.aai.domain.yang.Service service =
743 aaiDataRet.getService(servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId());
744 if (service != null) {
745 productFamilyName = service.getServiceDescription();
748 return productFamilyName;