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.GenericVnf;
46 import org.onap.aai.domain.yang.ServiceInstance;
47 import org.onap.aai.domain.yang.Tenant;
48 import org.onap.so.apihandler.common.ResponseBuilder;
49 import org.onap.so.apihandlerinfra.infra.rest.AAIDataRetrieval;
50 import org.onap.so.apihandlerinfra.tasksbeans.TasksRequest;
51 import org.onap.so.apihandlerinfra.validation.ApplyUpdatedConfigValidation;
52 import org.onap.so.apihandlerinfra.validation.CloudConfigurationValidation;
53 import org.onap.so.apihandlerinfra.validation.ConfigurationParametersValidation;
54 import org.onap.so.apihandlerinfra.validation.CustomWorkflowValidation;
55 import org.onap.so.apihandlerinfra.validation.InPlaceSoftwareUpdateValidation;
56 import org.onap.so.apihandlerinfra.validation.InstanceIdMapValidation;
57 import org.onap.so.apihandlerinfra.validation.MembersValidation;
58 import org.onap.so.apihandlerinfra.validation.ModelInfoValidation;
59 import org.onap.so.apihandlerinfra.validation.PlatformLOBValidation;
60 import org.onap.so.apihandlerinfra.validation.ProjectOwningEntityValidation;
61 import org.onap.so.apihandlerinfra.validation.RelatedInstancesValidation;
62 import org.onap.so.apihandlerinfra.validation.RequestInfoValidation;
63 import org.onap.so.apihandlerinfra.validation.RequestParametersValidation;
64 import org.onap.so.apihandlerinfra.validation.RequestScopeValidation;
65 import org.onap.so.apihandlerinfra.validation.SubscriberInfoValidation;
66 import org.onap.so.apihandlerinfra.validation.UserParamsValidation;
67 import org.onap.so.apihandlerinfra.validation.ValidationInformation;
68 import org.onap.so.apihandlerinfra.validation.ValidationRule;
69 import org.onap.so.apihandlerinfra.vnfbeans.RequestStatusType;
70 import org.onap.so.apihandlerinfra.vnfbeans.VnfInputs;
71 import org.onap.so.apihandlerinfra.vnfbeans.VnfRequest;
72 import org.onap.so.constants.Status;
73 import org.onap.so.db.request.beans.InfraActiveRequests;
74 import org.onap.so.db.request.client.RequestsDbClient;
75 import org.onap.so.exceptions.ValidationException;
76 import org.onap.so.logger.LogConstants;
77 import org.onap.so.serviceinstancebeans.CloudConfiguration;
78 import org.onap.so.serviceinstancebeans.ModelInfo;
79 import org.onap.so.serviceinstancebeans.ModelType;
80 import org.onap.so.serviceinstancebeans.PolicyException;
81 import org.onap.so.serviceinstancebeans.RelatedInstance;
82 import org.onap.so.serviceinstancebeans.RelatedInstanceList;
83 import org.onap.so.serviceinstancebeans.RequestError;
84 import org.onap.so.serviceinstancebeans.RequestInfo;
85 import org.onap.so.serviceinstancebeans.RequestParameters;
86 import org.onap.so.serviceinstancebeans.Service;
87 import org.onap.so.serviceinstancebeans.ServiceException;
88 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
89 import org.slf4j.Logger;
90 import org.slf4j.LoggerFactory;
92 import org.springframework.beans.factory.annotation.Autowired;
93 import org.springframework.beans.factory.annotation.Value;
94 import org.springframework.stereotype.Component;
95 import org.w3c.dom.Document;
96 import org.w3c.dom.Element;
97 import org.w3c.dom.Node;
98 import org.w3c.dom.NodeList;
99 import com.fasterxml.jackson.annotation.JsonInclude.Include;
100 import com.fasterxml.jackson.core.JsonGenerationException;
101 import com.fasterxml.jackson.databind.JsonMappingException;
102 import com.fasterxml.jackson.databind.ObjectMapper;
105 public class MsoRequest {
108 private RequestsDbClient requestsDbClient;
111 private ResponseBuilder builder;
114 private AAIDataRetrieval aaiDataRet;
116 @Value("${mso.enforceDLP:false}")
117 private boolean enforceDLP;
119 private static Logger logger = LoggerFactory.getLogger(MsoRequest.class);
121 public Response buildServiceErrorResponse(int httpResponseCode, MsoException exceptionType, String errorText,
122 String messageId, List<String> variables, String version) {
124 if (errorText.length() > 1999) {
125 errorText = errorText.substring(0, 1999);
128 RequestError re = new RequestError();
130 if ("PolicyException".equals(exceptionType.name())) {
132 PolicyException pe = new PolicyException();
133 pe.setMessageId(messageId);
134 pe.setText(errorText);
135 if (variables != null) {
136 for (String variable : variables) {
137 pe.getVariables().add(variable);
140 re.setPolicyException(pe);
144 ServiceException se = new ServiceException();
145 se.setMessageId(messageId);
146 se.setText(errorText);
147 if (variables != null) {
148 for (String variable : variables) {
149 se.getVariables().add(variable);
152 re.setServiceException(se);
154 return builder.buildResponse(httpResponseCode, null, re, version);
158 // Parse request JSON
159 public void parse(ServiceInstancesRequest sir, HashMap<String, String> instanceIdMap, Actions action,
160 String version, String originalRequestJSON, int reqVersion, Boolean aLaCarteFlag)
161 throws ValidationException, IOException {
163 logger.debug("Validating the Service Instance request");
164 List<ValidationRule> rules = new ArrayList<>();
165 logger.debug("Incoming version is: {} coverting to int: {}", version, reqVersion);
166 RequestParameters requestParameters = sir.getRequestDetails().getRequestParameters();
167 ValidationInformation info =
168 new ValidationInformation(sir, instanceIdMap, action, reqVersion, aLaCarteFlag, requestParameters);
170 rules.add(new InstanceIdMapValidation());
172 String workflowUuid = null;
173 if (instanceIdMap != null) {
174 workflowUuid = instanceIdMap.get("workflowUuid");
177 if (workflowUuid != null) {
178 rules.add(new CustomWorkflowValidation());
179 } else if (reqVersion >= 6 && action == Action.inPlaceSoftwareUpdate) {
180 rules.add(new InPlaceSoftwareUpdateValidation());
181 } else if (reqVersion >= 6 && action == Action.applyUpdatedConfig) {
182 rules.add(new ApplyUpdatedConfigValidation());
183 } else if (action == Action.addMembers || action == Action.removeMembers) {
184 rules.add(new MembersValidation());
186 rules.add(new RequestScopeValidation());
187 rules.add(new RequestParametersValidation());
188 rules.add(new RequestInfoValidation());
189 rules.add(new ModelInfoValidation());
190 rules.add(new CloudConfigurationValidation());
191 rules.add(new SubscriberInfoValidation());
193 rules.add(new PlatformLOBValidation());
194 rules.add(new ProjectOwningEntityValidation());
196 rules.add(new RelatedInstancesValidation());
197 rules.add(new ConfigurationParametersValidation());
199 if (reqVersion >= 7 && requestParameters != null && requestParameters.getUserParams() != null) {
200 for (Map<String, Object> params : requestParameters.getUserParams()) {
201 if (params.containsKey("service")) {
202 ObjectMapper obj = new ObjectMapper();
203 String input = obj.writeValueAsString(params.get("service"));
204 Service validate = obj.readValue(input, Service.class);
205 info.setUserParams(validate);
206 rules.add(new UserParamsValidation());
211 for (ValidationRule rule : rules) {
216 void parseOrchestration(ServiceInstancesRequest sir) throws ValidationException {
217 RequestInfo requestInfo = sir.getRequestDetails().getRequestInfo();
219 if (requestInfo == null) {
220 throw new ValidationException("requestInfo");
223 if (empty(requestInfo.getSource())) {
224 throw new ValidationException("source");
226 if (empty(requestInfo.getRequestorId())) {
227 throw new ValidationException("requestorId");
231 public Map<String, List<String>> getOrchestrationFilters(MultivaluedMap<String, String> queryParams) {
232 final String FILTER_KEY = "filter";
233 Map<String, List<String>> orchestrationFilterParams = new HashMap<>();
235 Optional.ofNullable(queryParams.get(FILTER_KEY)).ifPresent(listValues -> listValues
236 .forEach(value -> addValueToOrchestrationFilterParamsMap(orchestrationFilterParams, value)));
238 return orchestrationFilterParams;
241 private void addValueToOrchestrationFilterParamsMap(Map<String, List<String>> orchestrationFilterParams,
243 final String TOKEN_DELIMITER = ":";
244 StringTokenizer stringTokenizer = new StringTokenizer(value, TOKEN_DELIMITER);
246 if (!stringTokenizer.hasMoreTokens()) {
249 String mapKey = stringTokenizer.nextToken();
250 List<String> orchestrationList = new ArrayList<>();
251 while (stringTokenizer.hasMoreTokens()) {
252 orchestrationList.add(stringTokenizer.nextToken());
255 orchestrationFilterParams.put(mapKey, orchestrationList);
258 public InfraActiveRequests createRequestObject(ServiceInstancesRequest servInsReq, Actions action, String requestId,
259 Status status, String originalRequestJSON, String requestScope) {
260 InfraActiveRequests aq = new InfraActiveRequests();
262 if (null == servInsReq) {
263 servInsReq = new ServiceInstancesRequest();
265 String networkType = "";
267 aq.setRequestId(requestId);
268 aq.setRequestAction(action.toString());
269 aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
271 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
273 aq.setStartTime(startTimeStamp);
274 if (requestScope.equals(ModelType.instanceGroup.name()) && action == Action.deleteInstance) {
275 aq.setRequestScope(requestScope);
277 RequestInfo requestInfo = servInsReq.getRequestDetails().getRequestInfo();
278 if (requestInfo != null) {
280 if (requestInfo.getSource() != null) {
281 aq.setSource(requestInfo.getSource());
283 if (requestInfo.getCallbackUrl() != null) {
284 aq.setCallBackUrl(requestInfo.getCallbackUrl());
286 if (requestInfo.getCorrelator() != null) {
287 aq.setCorrelator(requestInfo.getCorrelator());
290 if (requestInfo.getRequestorId() != null) {
291 aq.setRequestorId(requestInfo.getRequestorId());
295 if (servInsReq.getRequestDetails().getModelInfo() != null
296 || (action == Action.inPlaceSoftwareUpdate || action == Action.applyUpdatedConfig)) {
297 aq.setRequestScope(requestScope);
300 if (servInsReq.getRequestDetails().getCloudConfiguration() != null) {
301 CloudConfiguration cloudConfiguration = servInsReq.getRequestDetails().getCloudConfiguration();
302 if (cloudConfiguration.getLcpCloudRegionId() != null) {
303 aq.setCloudRegion(cloudConfiguration.getLcpCloudRegionId());
306 if (cloudConfiguration.getTenantId() != null) {
307 aq.setTenantId(cloudConfiguration.getTenantId());
312 if (servInsReq.getServiceInstanceId() != null) {
313 aq.setServiceInstanceId(servInsReq.getServiceInstanceId());
316 if (servInsReq.getVnfInstanceId() != null) {
317 aq.setVnfId(servInsReq.getVnfInstanceId());
320 if (servInsReq.getPnfName() != null) {
321 aq.setRequestScope(requestScope);
322 aq.setPnfName(servInsReq.getPnfName());
325 if (servInsReq.getRequestDetails() != null && servInsReq.getRequestDetails().getRequestInfo() != null
326 && servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId() != null) {
327 logger.debug("Retrieving productFamilyName to put into requests db");
329 org.onap.aai.domain.yang.Service service =
330 aaiDataRet.getService(servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId());
331 if (service != null) {
332 logger.debug("Found service by service-id");
333 String productFamilyName = service.getServiceDescription();
334 if (productFamilyName != null) {
335 aq.setProductFamilyName(productFamilyName);
340 aq.setProductFamilyName(getProductFamilyNameFromAAI(servInsReq));
342 aq.setTenantName(getTenantNameFromAAI(servInsReq));
344 if (ModelType.service.name().equalsIgnoreCase(requestScope)) {
345 if (servInsReq.getRequestDetails().getRequestInfo() != null) {
346 if (servInsReq.getRequestDetails().getRequestInfo().getInstanceName() != null) {
347 aq.setServiceInstanceName(requestInfo.getInstanceName());
352 if (ModelType.network.name().equalsIgnoreCase(requestScope)) {
353 aq.setNetworkName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
354 aq.setNetworkType(networkType);
355 aq.setNetworkId(servInsReq.getNetworkInstanceId());
358 if (ModelType.volumeGroup.name().equalsIgnoreCase(requestScope)) {
359 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
360 aq.setVolumeGroupName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
361 aq.setVnfType(vnfType);
365 if (ModelType.vfModule.name().equalsIgnoreCase(requestScope)) {
366 aq.setVfModuleName(requestInfo.getInstanceName());
367 aq.setVfModuleModelName(servInsReq.getRequestDetails().getModelInfo().getModelName());
368 aq.setVfModuleId(servInsReq.getVfModuleInstanceId());
369 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
370 aq.setVnfType(vnfType);
374 if (ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
375 aq.setConfigurationId(servInsReq.getConfigurationId());
376 aq.setConfigurationName(requestInfo.getInstanceName());
378 if (requestScope.equalsIgnoreCase(ModelType.instanceGroup.name())) {
379 aq.setInstanceGroupId(servInsReq.getInstanceGroupId());
380 aq.setInstanceGroupName(requestInfo.getInstanceName());
382 if (ModelType.vnf.name().equalsIgnoreCase(requestScope)) {
383 if (requestInfo != null) {
384 aq.setVnfName(requestInfo.getInstanceName());
386 if (null != servInsReq.getRequestDetails()) {
387 RelatedInstanceList[] instanceList = servInsReq.getRequestDetails().getRelatedInstanceList();
389 if (instanceList != null) {
391 for (RelatedInstanceList relatedInstanceList : instanceList) {
393 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
394 if (relatedInstance.getModelInfo().getModelType().equals(ModelType.service)) {
395 aq.setVnfType(vnfType);
403 aq.setRequestBody(originalRequestJSON);
405 aq.setRequestStatus(status.toString());
406 aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
407 } catch (Exception e) {
408 logger.error("Exception when creation record request", e);
410 if (!status.equals(Status.FAILED)) {
417 public InfraActiveRequests createRequestObject(TasksRequest taskRequest, Action action, String requestId,
418 Status status, String originalRequestJSON) {
419 InfraActiveRequests aq = new InfraActiveRequests();
422 org.onap.so.apihandlerinfra.tasksbeans.RequestInfo requestInfo =
423 taskRequest.getRequestDetails().getRequestInfo();
424 aq.setRequestId(requestId);
425 aq.setRequestAction(action.name());
426 aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
428 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
430 aq.setStartTime(startTimeStamp);
431 if (requestInfo != null) {
433 if (requestInfo.getSource() != null) {
434 aq.setSource(requestInfo.getSource());
437 if (requestInfo.getRequestorId() != null) {
438 aq.setRequestorId(requestInfo.getRequestorId());
442 aq.setRequestBody(originalRequestJSON);
443 aq.setRequestStatus(status.toString());
444 aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
446 } catch (Exception e) {
447 logger.error("Exception when creation record request", e);
449 if (!status.equals(Status.FAILED)) {
456 public void createErrorRequestRecord(Status status, String requestId, String errorMessage, Actions action,
457 String requestScope, String requestJSON) {
459 InfraActiveRequests request = new InfraActiveRequests(requestId);
460 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
461 request.setStartTime(startTimeStamp);
462 request.setRequestStatus(status.toString());
463 request.setStatusMessage(errorMessage);
464 request.setProgress((long) 100);
465 request.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
466 request.setRequestAction(action.toString());
467 request.setRequestScope(requestScope);
468 request.setRequestBody(requestJSON);
469 Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
470 request.setEndTime(endTimeStamp);
471 request.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
472 requestsDbClient.save(request);
473 } catch (Exception e) {
474 logger.error("Exception when updating record in DB", e);
475 logger.debug("Exception: ", e);
480 public Response buildResponse(int httpResponseCode, String errorCode, InfraActiveRequests inProgress) {
481 return buildResponseWithError(httpResponseCode, errorCode, inProgress, null);
484 public Response buildResponseWithError(int httpResponseCode, String errorCode, InfraActiveRequests inProgress,
485 String errorString) {
488 // Log the failed request into the MSO Requests database
490 return Response.status(httpResponseCode).entity(null).build();
494 public Response buildResponseFailedValidation(int httpResponseCode, String exceptionMessage) {
496 return Response.status(httpResponseCode).entity(null).build();
500 public String getServiceType(VnfInputs vnfInputs) {
501 if (vnfInputs.getServiceType() != null)
502 return vnfInputs.getServiceType();
503 if (vnfInputs.getServiceId() != null)
504 return vnfInputs.getServiceId();
508 public long translateStatus(RequestStatusType status) {
512 return Constants.PROGRESS_REQUEST_COMPLETED;
514 return Constants.PROGRESS_REQUEST_IN_PROGRESS;
520 public static String domToStr(Document doc) {
526 StringWriter sw = new StringWriter();
527 StreamResult sr = new StreamResult(sw);
528 TransformerFactory tf = TransformerFactory.newInstance();
529 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
530 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
531 Transformer t = tf.newTransformer();
532 t.setOutputProperty(OutputKeys.STANDALONE, "yes");
533 NodeList nl = doc.getDocumentElement().getChildNodes();
534 DOMSource source = null;
535 for (int x = 0; x < nl.getLength(); x++) {
537 if (e instanceof Element) {
538 source = new DOMSource(e);
542 if (source != null) {
543 t.transform(source, sr);
545 String s = sw.toString();
551 } catch (Exception e) {
552 logger.error("Exception in domToStr", e);
557 public void addBPMNSpecificInputs(VnfRequest vnfReq, VnfInputs vnfInputs, String personaModelId,
558 String personaModelVersion, Boolean isBaseVfModule, String vnfPersonaModelId,
559 String vnfPersonaModelVersion) {
560 vnfInputs.setPersonaModelId(personaModelId);
561 vnfInputs.setPersonaModelVersion(personaModelVersion);
562 vnfInputs.setIsBaseVfModule(isBaseVfModule);
563 vnfInputs.setVnfPersonaModelId(vnfPersonaModelId);
564 vnfInputs.setVnfPersonaModelVersion(vnfPersonaModelVersion);
566 vnfReq.setVnfInputs(vnfInputs);
570 private static boolean empty(String s) {
571 return (s == null || s.trim().isEmpty());
574 public String getRequestJSON(ServiceInstancesRequest sir)
575 throws JsonGenerationException, JsonMappingException, IOException {
576 ObjectMapper mapper = new ObjectMapper();
577 mapper.setSerializationInclusion(Include.NON_NULL);
579 logger.debug("building sir from object {}", sir);
580 String requestJSON = mapper.writeValueAsString(sir);
582 // Perform mapping from VID-style modelInfo fields to ASDC-style modelInfo fields
584 logger.debug("REQUEST JSON before mapping: {}", requestJSON);
585 // modelUuid = modelVersionId
586 requestJSON = requestJSON.replaceAll("\"modelVersionId\":", "\"modelUuid\":");
587 // modelCustomizationUuid = modelCustomizationId
588 requestJSON = requestJSON.replaceAll("\"modelCustomizationId\":", "\"modelCustomizationUuid\":");
589 // modelInstanceName = modelCustomizationName
590 requestJSON = requestJSON.replaceAll("\"modelCustomizationName\":", "\"modelInstanceName\":");
591 // modelInvariantUuid = modelInvariantId
592 requestJSON = requestJSON.replaceAll("\"modelInvariantId\":", "\"modelInvariantUuid\":");
593 logger.debug("REQUEST JSON after mapping: {}", requestJSON);
599 public boolean getAlacarteFlag(ServiceInstancesRequest sir) {
600 if (sir.getRequestDetails().getRequestParameters() != null
601 && sir.getRequestDetails().getRequestParameters().getALaCarte() != null)
602 return sir.getRequestDetails().getRequestParameters().getALaCarte();
608 public String getNetworkType(ServiceInstancesRequest sir, String requestScope) {
609 if (requestScope.equalsIgnoreCase(ModelType.network.name()))
610 return sir.getRequestDetails().getModelInfo().getModelName();
616 public String getServiceInstanceType(ServiceInstancesRequest sir, String requestScope) {
617 if (requestScope.equalsIgnoreCase(ModelType.network.name()))
618 return sir.getRequestDetails().getModelInfo().getModelName();
624 public String getSDCServiceModelVersion(ServiceInstancesRequest sir) {
625 String sdcServiceModelVersion = null;
626 if (sir.getRequestDetails().getRelatedInstanceList() != null)
627 for (RelatedInstanceList relatedInstanceList : sir.getRequestDetails().getRelatedInstanceList()) {
628 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
629 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
630 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service))
631 sdcServiceModelVersion = relatedInstanceModelInfo.getModelVersion();
633 return sdcServiceModelVersion;
637 public String getVfModuleType(ServiceInstancesRequest sir, String requestScope) {
640 String vfModuleType = null;
641 String vfModuleModelName;
642 ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
643 RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
644 String serviceModelName = null;
645 String vnfModelName = null;
646 String volumeGroupId = null;
648 if (instanceList == null) {
651 for (RelatedInstanceList relatedInstanceList : instanceList) {
652 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
653 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
655 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
656 serviceModelName = relatedInstanceModelInfo.getModelName();
657 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
658 && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
659 vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
660 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
661 volumeGroupId = relatedInstance.getInstanceId();
664 if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())) {
665 vfModuleModelName = modelInfo.getModelName();
666 vnfType = serviceModelName + "/" + vnfModelName;
667 vfModuleType = vnfType + "::" + vfModuleModelName;
668 sir.setVolumeGroupInstanceId(volumeGroupId);
675 public String getVnfType(ServiceInstancesRequest sir, String requestScope) {
677 String vnfType = null;
678 RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
679 String serviceModelName = null;
680 String vnfModelName = null;
681 String volumeGroupId = null;
683 if (instanceList == null) {
686 for (RelatedInstanceList relatedInstanceList : instanceList) {
687 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
688 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
690 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
691 serviceModelName = relatedInstanceModelInfo.getModelName();
692 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
693 && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
694 vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
695 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
696 volumeGroupId = relatedInstance.getInstanceId();
700 if (requestScope.equalsIgnoreCase(ModelType.volumeGroup.name())) {
701 vnfType = serviceModelName + "/" + vnfModelName;
702 } else if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())) {
703 vnfType = serviceModelName + "/" + vnfModelName;
704 sir.setVolumeGroupInstanceId(volumeGroupId);
705 } else if (requestScope.equalsIgnoreCase(ModelType.vnf.name()))
706 vnfType = serviceModelName + "/" + sir.getRequestDetails().getModelInfo().getModelCustomizationName();
711 protected String getTenantNameFromAAI(ServiceInstancesRequest servInsReq) {
712 String tenantName = null;
713 if (servInsReq.getRequestDetails() != null && servInsReq.getRequestDetails().getCloudConfiguration() != null
714 && servInsReq.getRequestDetails().getCloudConfiguration().getTenantId() != null) {
715 Tenant tenant = aaiDataRet.getTenant(servInsReq.getRequestDetails().getCloudConfiguration().getCloudOwner(),
716 servInsReq.getRequestDetails().getCloudConfiguration().getLcpCloudRegionId(),
717 servInsReq.getRequestDetails().getCloudConfiguration().getTenantId());
718 if (tenant != null) {
719 tenantName = tenant.getTenantName();
725 protected String getProductFamilyNameFromAAI(ServiceInstancesRequest servInsReq) {
726 String productFamilyName = null;
727 if (servInsReq.getRequestDetails() != null && servInsReq.getRequestDetails().getRequestInfo() != null
728 && servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId() != null) {
729 org.onap.aai.domain.yang.Service service =
730 aaiDataRet.getService(servInsReq.getRequestDetails().getRequestInfo().getProductFamilyId());
731 if (service != null) {
732 productFamilyName = service.getServiceDescription();
735 return productFamilyName;