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.so.apihandler.common.ResponseBuilder;
46 import org.onap.so.apihandlerinfra.tasksbeans.TasksRequest;
47 import org.onap.so.apihandlerinfra.validation.ApplyUpdatedConfigValidation;
48 import org.onap.so.apihandlerinfra.validation.CloudConfigurationValidation;
49 import org.onap.so.apihandlerinfra.validation.ConfigurationParametersValidation;
50 import org.onap.so.apihandlerinfra.validation.CustomWorkflowValidation;
51 import org.onap.so.apihandlerinfra.validation.InPlaceSoftwareUpdateValidation;
52 import org.onap.so.apihandlerinfra.validation.InstanceIdMapValidation;
53 import org.onap.so.apihandlerinfra.validation.MembersValidation;
54 import org.onap.so.apihandlerinfra.validation.ModelInfoValidation;
55 import org.onap.so.apihandlerinfra.validation.PlatformLOBValidation;
56 import org.onap.so.apihandlerinfra.validation.ProjectOwningEntityValidation;
57 import org.onap.so.apihandlerinfra.validation.RelatedInstancesValidation;
58 import org.onap.so.apihandlerinfra.validation.RequestInfoValidation;
59 import org.onap.so.apihandlerinfra.validation.RequestParametersValidation;
60 import org.onap.so.apihandlerinfra.validation.RequestScopeValidation;
61 import org.onap.so.apihandlerinfra.validation.SubscriberInfoValidation;
62 import org.onap.so.apihandlerinfra.validation.UserParamsValidation;
63 import org.onap.so.apihandlerinfra.validation.ValidationInformation;
64 import org.onap.so.apihandlerinfra.validation.ValidationRule;
65 import org.onap.so.apihandlerinfra.vnfbeans.RequestStatusType;
66 import org.onap.so.apihandlerinfra.vnfbeans.VnfInputs;
67 import org.onap.so.apihandlerinfra.vnfbeans.VnfRequest;
68 import org.onap.so.constants.Status;
69 import org.onap.so.db.request.beans.InfraActiveRequests;
70 import org.onap.so.db.request.client.RequestsDbClient;
71 import org.onap.so.exceptions.ValidationException;
72 import org.onap.so.logger.LogConstants;
73 import org.onap.so.serviceinstancebeans.CloudConfiguration;
74 import org.onap.so.serviceinstancebeans.ModelInfo;
75 import org.onap.so.serviceinstancebeans.ModelType;
76 import org.onap.so.serviceinstancebeans.PolicyException;
77 import org.onap.so.serviceinstancebeans.RelatedInstance;
78 import org.onap.so.serviceinstancebeans.RelatedInstanceList;
79 import org.onap.so.serviceinstancebeans.RequestError;
80 import org.onap.so.serviceinstancebeans.RequestInfo;
81 import org.onap.so.serviceinstancebeans.RequestParameters;
82 import org.onap.so.serviceinstancebeans.Service;
83 import org.onap.so.serviceinstancebeans.ServiceException;
84 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
85 import org.slf4j.Logger;
86 import org.slf4j.LoggerFactory;
88 import org.springframework.beans.factory.annotation.Autowired;
89 import org.springframework.beans.factory.annotation.Value;
90 import org.springframework.stereotype.Component;
91 import org.w3c.dom.Document;
92 import org.w3c.dom.Element;
93 import org.w3c.dom.Node;
94 import org.w3c.dom.NodeList;
95 import com.fasterxml.jackson.annotation.JsonInclude.Include;
96 import com.fasterxml.jackson.core.JsonGenerationException;
97 import com.fasterxml.jackson.databind.JsonMappingException;
98 import com.fasterxml.jackson.databind.ObjectMapper;
102 public class MsoRequest {
105 private RequestsDbClient requestsDbClient;
108 private ResponseBuilder builder;
110 @Value("${mso.enforceDLP:false}")
111 private boolean enforceDLP;
113 private static Logger logger = LoggerFactory.getLogger(MsoRequest.class);
115 public Response buildServiceErrorResponse(int httpResponseCode, MsoException exceptionType, String errorText,
116 String messageId, List<String> variables, String version) {
118 if (errorText.length() > 1999) {
119 errorText = errorText.substring(0, 1999);
122 RequestError re = new RequestError();
124 if ("PolicyException".equals(exceptionType.name())) {
126 PolicyException pe = new PolicyException();
127 pe.setMessageId(messageId);
128 pe.setText(errorText);
129 if (variables != null) {
130 for (String variable : variables) {
131 pe.getVariables().add(variable);
134 re.setPolicyException(pe);
138 ServiceException se = new ServiceException();
139 se.setMessageId(messageId);
140 se.setText(errorText);
141 if (variables != null) {
142 for (String variable : variables) {
143 se.getVariables().add(variable);
146 re.setServiceException(se);
148 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 final String FILTER_KEY = "filter";
227 Map<String, List<String>> orchestrationFilterParams = new HashMap<>();
229 Optional.ofNullable(queryParams.get(FILTER_KEY)).ifPresent(listValues -> listValues
230 .forEach(value -> addValueToOrchestrationFilterParamsMap(orchestrationFilterParams, value)));
232 return orchestrationFilterParams;
235 private void addValueToOrchestrationFilterParamsMap(Map<String, List<String>> orchestrationFilterParams,
237 final String TOKEN_DELIMITER = ":";
238 StringTokenizer stringTokenizer = new StringTokenizer(value, TOKEN_DELIMITER);
240 if (!stringTokenizer.hasMoreTokens()) {
243 String mapKey = stringTokenizer.nextToken();
244 List<String> orchestrationList = new ArrayList<>();
245 while (stringTokenizer.hasMoreTokens()) {
246 orchestrationList.add(stringTokenizer.nextToken());
249 orchestrationFilterParams.put(mapKey, orchestrationList);
252 public InfraActiveRequests createRequestObject(ServiceInstancesRequest servInsReq, Actions action, String requestId,
253 Status status, String originalRequestJSON, String requestScope) {
254 InfraActiveRequests aq = new InfraActiveRequests();
256 if (null == servInsReq) {
257 servInsReq = new ServiceInstancesRequest();
259 String networkType = "";
261 aq.setRequestId(requestId);
262 aq.setRequestAction(action.toString());
263 aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
265 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
267 aq.setStartTime(startTimeStamp);
268 if (requestScope.equals(ModelType.instanceGroup.name()) && action == Action.deleteInstance) {
269 aq.setRequestScope(requestScope);
271 RequestInfo requestInfo = servInsReq.getRequestDetails().getRequestInfo();
272 if (requestInfo != null) {
274 if (requestInfo.getSource() != null) {
275 aq.setSource(requestInfo.getSource());
277 if (requestInfo.getCallbackUrl() != null) {
278 aq.setCallBackUrl(requestInfo.getCallbackUrl());
280 if (requestInfo.getCorrelator() != null) {
281 aq.setCorrelator(requestInfo.getCorrelator());
284 if (requestInfo.getRequestorId() != null) {
285 aq.setRequestorId(requestInfo.getRequestorId());
289 if (servInsReq.getRequestDetails().getModelInfo() != null
290 || (action == Action.inPlaceSoftwareUpdate || action == Action.applyUpdatedConfig)) {
291 aq.setRequestScope(requestScope);
294 if (servInsReq.getRequestDetails().getCloudConfiguration() != null) {
295 CloudConfiguration cloudConfiguration = servInsReq.getRequestDetails().getCloudConfiguration();
296 if (cloudConfiguration.getLcpCloudRegionId() != null) {
297 aq.setCloudRegion(cloudConfiguration.getLcpCloudRegionId());
300 if (cloudConfiguration.getTenantId() != null) {
301 aq.setTenantId(cloudConfiguration.getTenantId());
306 if (servInsReq.getServiceInstanceId() != null) {
307 aq.setServiceInstanceId(servInsReq.getServiceInstanceId());
310 if (servInsReq.getVnfInstanceId() != null) {
311 aq.setVnfId(servInsReq.getVnfInstanceId());
314 if (servInsReq.getPnfName() != null) {
315 aq.setRequestScope(requestScope);
316 aq.setPnfName(servInsReq.getPnfName());
319 if (ModelType.service.name().equalsIgnoreCase(requestScope)) {
320 if (servInsReq.getRequestDetails().getRequestInfo() != null) {
321 if (servInsReq.getRequestDetails().getRequestInfo().getInstanceName() != null) {
322 aq.setServiceInstanceName(requestInfo.getInstanceName());
327 if (ModelType.network.name().equalsIgnoreCase(requestScope)) {
328 aq.setNetworkName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
329 aq.setNetworkType(networkType);
330 aq.setNetworkId(servInsReq.getNetworkInstanceId());
333 if (ModelType.volumeGroup.name().equalsIgnoreCase(requestScope)) {
334 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
335 aq.setVolumeGroupName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
336 aq.setVnfType(vnfType);
340 if (ModelType.vfModule.name().equalsIgnoreCase(requestScope)) {
341 aq.setVfModuleName(requestInfo.getInstanceName());
342 aq.setVfModuleModelName(servInsReq.getRequestDetails().getModelInfo().getModelName());
343 aq.setVfModuleId(servInsReq.getVfModuleInstanceId());
344 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
345 aq.setVnfType(vnfType);
349 if (ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
350 aq.setConfigurationId(servInsReq.getConfigurationId());
351 aq.setConfigurationName(requestInfo.getInstanceName());
353 if (requestScope.equalsIgnoreCase(ModelType.instanceGroup.name())) {
354 aq.setInstanceGroupId(servInsReq.getInstanceGroupId());
355 aq.setInstanceGroupName(requestInfo.getInstanceName());
357 if (ModelType.vnf.name().equalsIgnoreCase(requestScope)) {
358 if (requestInfo != null) {
359 aq.setVnfName(requestInfo.getInstanceName());
361 if (null != servInsReq.getRequestDetails()) {
362 RelatedInstanceList[] instanceList = servInsReq.getRequestDetails().getRelatedInstanceList();
364 if (instanceList != null) {
366 for (RelatedInstanceList relatedInstanceList : instanceList) {
368 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
369 if (relatedInstance.getModelInfo().getModelType().equals(ModelType.service)) {
370 aq.setVnfType(vnfType);
378 aq.setRequestBody(originalRequestJSON);
380 aq.setRequestStatus(status.toString());
381 aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
382 } catch (Exception e) {
383 logger.error("Exception when creation record request", e);
385 if (!status.equals(Status.FAILED)) {
392 public InfraActiveRequests createRequestObject(TasksRequest taskRequest, Action action, String requestId,
393 Status status, String originalRequestJSON) {
394 InfraActiveRequests aq = new InfraActiveRequests();
397 org.onap.so.apihandlerinfra.tasksbeans.RequestInfo requestInfo =
398 taskRequest.getRequestDetails().getRequestInfo();
399 aq.setRequestId(requestId);
400 aq.setRequestAction(action.name());
401 aq.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
403 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
405 aq.setStartTime(startTimeStamp);
406 if (requestInfo != null) {
408 if (requestInfo.getSource() != null) {
409 aq.setSource(requestInfo.getSource());
412 if (requestInfo.getRequestorId() != null) {
413 aq.setRequestorId(requestInfo.getRequestorId());
417 aq.setRequestBody(originalRequestJSON);
418 aq.setRequestStatus(status.toString());
419 aq.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
421 } catch (Exception e) {
422 logger.error("Exception when creation record request", e);
424 if (!status.equals(Status.FAILED)) {
431 public void createErrorRequestRecord(Status status, String requestId, String errorMessage, Actions action,
432 String requestScope, String requestJSON) {
434 InfraActiveRequests request = new InfraActiveRequests(requestId);
435 Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
436 request.setStartTime(startTimeStamp);
437 request.setRequestStatus(status.toString());
438 request.setStatusMessage(errorMessage);
439 request.setProgress((long) 100);
440 request.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
441 request.setRequestAction(action.toString());
442 request.setRequestScope(requestScope);
443 request.setRequestBody(requestJSON);
444 Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
445 request.setEndTime(endTimeStamp);
446 request.setRequestUrl(MDC.get(LogConstants.HTTP_URL));
447 requestsDbClient.save(request);
448 } catch (Exception e) {
449 logger.error("Exception when updating record in DB", e);
450 logger.debug("Exception: ", e);
455 public Response buildResponse(int httpResponseCode, String errorCode, InfraActiveRequests inProgress) {
456 return buildResponseWithError(httpResponseCode, errorCode, inProgress, null);
459 public Response buildResponseWithError(int httpResponseCode, String errorCode, InfraActiveRequests inProgress,
460 String errorString) {
463 // Log the failed request into the MSO Requests database
465 return Response.status(httpResponseCode).entity(null).build();
469 public Response buildResponseFailedValidation(int httpResponseCode, String exceptionMessage) {
471 return Response.status(httpResponseCode).entity(null).build();
475 public String getServiceType(VnfInputs vnfInputs) {
476 if (vnfInputs.getServiceType() != null)
477 return vnfInputs.getServiceType();
478 if (vnfInputs.getServiceId() != null)
479 return vnfInputs.getServiceId();
483 public long translateStatus(RequestStatusType status) {
487 return Constants.PROGRESS_REQUEST_COMPLETED;
489 return Constants.PROGRESS_REQUEST_IN_PROGRESS;
495 public static String domToStr(Document doc) {
501 StringWriter sw = new StringWriter();
502 StreamResult sr = new StreamResult(sw);
503 TransformerFactory tf = TransformerFactory.newInstance();
504 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
505 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
506 Transformer t = tf.newTransformer();
507 t.setOutputProperty(OutputKeys.STANDALONE, "yes");
508 NodeList nl = doc.getDocumentElement().getChildNodes();
509 DOMSource source = null;
510 for (int x = 0; x < nl.getLength(); x++) {
512 if (e instanceof Element) {
513 source = new DOMSource(e);
517 if (source != null) {
518 t.transform(source, sr);
520 String s = sw.toString();
526 } catch (Exception e) {
527 logger.error("Exception in domToStr", e);
532 public void addBPMNSpecificInputs(VnfRequest vnfReq, VnfInputs vnfInputs, String personaModelId,
533 String personaModelVersion, Boolean isBaseVfModule, String vnfPersonaModelId,
534 String vnfPersonaModelVersion) {
535 vnfInputs.setPersonaModelId(personaModelId);
536 vnfInputs.setPersonaModelVersion(personaModelVersion);
537 vnfInputs.setIsBaseVfModule(isBaseVfModule);
538 vnfInputs.setVnfPersonaModelId(vnfPersonaModelId);
539 vnfInputs.setVnfPersonaModelVersion(vnfPersonaModelVersion);
541 vnfReq.setVnfInputs(vnfInputs);
545 private static boolean empty(String s) {
546 return (s == null || s.trim().isEmpty());
549 public String getRequestJSON(ServiceInstancesRequest sir)
550 throws JsonGenerationException, JsonMappingException, IOException {
551 ObjectMapper mapper = new ObjectMapper();
552 mapper.setSerializationInclusion(Include.NON_NULL);
554 logger.debug("building sir from object {}", sir);
555 String requestJSON = mapper.writeValueAsString(sir);
557 // Perform mapping from VID-style modelInfo fields to ASDC-style modelInfo fields
559 logger.debug("REQUEST JSON before mapping: {}", requestJSON);
560 // modelUuid = modelVersionId
561 requestJSON = requestJSON.replaceAll("\"modelVersionId\":", "\"modelUuid\":");
562 // modelCustomizationUuid = modelCustomizationId
563 requestJSON = requestJSON.replaceAll("\"modelCustomizationId\":", "\"modelCustomizationUuid\":");
564 // modelInstanceName = modelCustomizationName
565 requestJSON = requestJSON.replaceAll("\"modelCustomizationName\":", "\"modelInstanceName\":");
566 // modelInvariantUuid = modelInvariantId
567 requestJSON = requestJSON.replaceAll("\"modelInvariantId\":", "\"modelInvariantUuid\":");
568 logger.debug("REQUEST JSON after mapping: {}", requestJSON);
574 public boolean getAlacarteFlag(ServiceInstancesRequest sir) {
575 if (sir.getRequestDetails().getRequestParameters() != null
576 && sir.getRequestDetails().getRequestParameters().getALaCarte() != null)
577 return sir.getRequestDetails().getRequestParameters().getALaCarte();
583 public String getNetworkType(ServiceInstancesRequest sir, String requestScope) {
584 if (requestScope.equalsIgnoreCase(ModelType.network.name()))
585 return sir.getRequestDetails().getModelInfo().getModelName();
591 public String getServiceInstanceType(ServiceInstancesRequest sir, String requestScope) {
592 if (requestScope.equalsIgnoreCase(ModelType.network.name()))
593 return sir.getRequestDetails().getModelInfo().getModelName();
599 public String getSDCServiceModelVersion(ServiceInstancesRequest sir) {
600 String sdcServiceModelVersion = null;
601 if (sir.getRequestDetails().getRelatedInstanceList() != null)
602 for (RelatedInstanceList relatedInstanceList : sir.getRequestDetails().getRelatedInstanceList()) {
603 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
604 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
605 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service))
606 sdcServiceModelVersion = relatedInstanceModelInfo.getModelVersion();
608 return sdcServiceModelVersion;
612 public String getVfModuleType(ServiceInstancesRequest sir, String requestScope) {
615 String vfModuleType = null;
616 String vfModuleModelName;
617 ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
618 RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
619 String serviceModelName = null;
620 String vnfModelName = null;
621 String volumeGroupId = null;
623 if (instanceList == null) {
626 for (RelatedInstanceList relatedInstanceList : instanceList) {
627 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
628 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
630 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
631 serviceModelName = relatedInstanceModelInfo.getModelName();
632 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
633 && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
634 vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
635 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
636 volumeGroupId = relatedInstance.getInstanceId();
639 if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())) {
640 vfModuleModelName = modelInfo.getModelName();
641 vnfType = serviceModelName + "/" + vnfModelName;
642 vfModuleType = vnfType + "::" + vfModuleModelName;
643 sir.setVolumeGroupInstanceId(volumeGroupId);
650 public String getVnfType(ServiceInstancesRequest sir, String requestScope) {
652 String vnfType = null;
653 RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
654 String serviceModelName = null;
655 String vnfModelName = null;
656 String volumeGroupId = null;
658 if (instanceList == null) {
661 for (RelatedInstanceList relatedInstanceList : instanceList) {
662 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
663 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo();
665 if (relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
666 serviceModelName = relatedInstanceModelInfo.getModelName();
667 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)
668 && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
669 vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
670 } else if (relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
671 volumeGroupId = relatedInstance.getInstanceId();
675 if (requestScope.equalsIgnoreCase(ModelType.volumeGroup.name())) {
676 vnfType = serviceModelName + "/" + vnfModelName;
677 } else if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())) {
678 vnfType = serviceModelName + "/" + vnfModelName;
679 sir.setVolumeGroupInstanceId(volumeGroupId);
680 } else if (requestScope.equalsIgnoreCase(ModelType.vnf.name()))
681 vnfType = serviceModelName + "/" + sir.getRequestDetails().getModelInfo().getModelCustomizationName();