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 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.so.apihandlerinfra;
24 import java.io.IOException;
25 import java.io.StringWriter;
26 import java.sql.Timestamp;
27 import java.util.ArrayList;
28 import java.util.HashMap;
29 import java.util.List;
31 import java.util.Map.Entry;
32 import java.util.StringTokenizer;
34 import javax.ws.rs.core.MultivaluedMap;
35 import javax.ws.rs.core.Response;
36 import javax.xml.XMLConstants;
37 import javax.xml.transform.OutputKeys;
38 import javax.xml.transform.Transformer;
39 import javax.xml.transform.TransformerFactory;
40 import javax.xml.transform.dom.DOMSource;
41 import javax.xml.transform.stream.StreamResult;
43 import org.onap.so.apihandler.common.ResponseBuilder;
44 import org.onap.so.apihandlerinfra.tasksbeans.TasksRequest;
45 import org.onap.so.apihandlerinfra.validation.ApplyUpdatedConfigValidation;
46 import org.onap.so.apihandlerinfra.validation.CloudConfigurationValidation;
47 import org.onap.so.apihandlerinfra.validation.ConfigurationParametersValidation;
48 import org.onap.so.apihandlerinfra.validation.InPlaceSoftwareUpdateValidation;
49 import org.onap.so.apihandlerinfra.validation.InstanceIdMapValidation;
50 import org.onap.so.apihandlerinfra.validation.ModelInfoValidation;
51 import org.onap.so.apihandlerinfra.validation.PlatformLOBValidation;
52 import org.onap.so.apihandlerinfra.validation.ProjectOwningEntityValidation;
53 import org.onap.so.apihandlerinfra.validation.RelatedInstancesValidation;
54 import org.onap.so.apihandlerinfra.validation.RequestInfoValidation;
55 import org.onap.so.apihandlerinfra.validation.RequestParametersValidation;
56 import org.onap.so.apihandlerinfra.validation.RequestScopeValidation;
57 import org.onap.so.apihandlerinfra.validation.SubscriberInfoValidation;
58 import org.onap.so.apihandlerinfra.validation.UserParamsValidation;
59 import org.onap.so.apihandlerinfra.validation.ValidationInformation;
60 import org.onap.so.apihandlerinfra.validation.ValidationRule;
61 import org.onap.so.apihandlerinfra.vnfbeans.RequestStatusType;
62 import org.onap.so.apihandlerinfra.vnfbeans.VnfInputs;
63 import org.onap.so.apihandlerinfra.vnfbeans.VnfRequest;
64 import org.onap.so.db.request.beans.InfraActiveRequests;
65 import org.onap.so.exceptions.ValidationException;
66 import org.onap.so.logger.MessageEnum;
67 import org.onap.so.logger.MsoLogger;
68 import org.onap.so.requestsdb.client.RequestsDbClient;
69 import org.onap.so.serviceinstancebeans.CloudConfiguration;
70 import org.onap.so.serviceinstancebeans.InstanceDirection;
71 import org.onap.so.serviceinstancebeans.ModelInfo;
72 import org.onap.so.serviceinstancebeans.ModelType;
73 import org.onap.so.serviceinstancebeans.PolicyException;
74 import org.onap.so.serviceinstancebeans.RelatedInstance;
75 import org.onap.so.serviceinstancebeans.RelatedInstanceList;
76 import org.onap.so.serviceinstancebeans.RequestError;
77 import org.onap.so.serviceinstancebeans.RequestInfo;
78 import org.onap.so.serviceinstancebeans.RequestParameters;
79 import org.onap.so.serviceinstancebeans.Service;
80 import org.onap.so.serviceinstancebeans.ServiceException;
81 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
82 import org.springframework.beans.factory.annotation.Autowired;
83 import org.springframework.stereotype.Component;
84 import org.w3c.dom.Document;
85 import org.w3c.dom.Element;
86 import org.w3c.dom.Node;
87 import org.w3c.dom.NodeList;
89 import com.fasterxml.jackson.annotation.JsonInclude.Include;
90 import com.fasterxml.jackson.core.JsonGenerationException;
91 import com.fasterxml.jackson.databind.JsonMappingException;
92 import com.fasterxml.jackson.databind.ObjectMapper;
96 public class MsoRequest {
99 private RequestsDbClient requestsDbClient;
102 private ResponseBuilder builder;
104 private static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.APIH,MsoRequest.class);
106 public Response buildServiceErrorResponse (int httpResponseCode, MsoException exceptionType,
107 String errorText, String messageId, List<String> variables, String version) {
109 if(errorText.length() > 1999){
110 errorText = errorText.substring(0, 1999);
113 RequestError re = new RequestError();
115 if("PolicyException".equals(exceptionType.name())){
117 PolicyException pe = new PolicyException();
118 pe.setMessageId(messageId);
119 pe.setText(errorText);
120 if(variables != null){
121 for(String variable: variables){
122 pe.getVariables().add(variable);
125 re.setPolicyException(pe);
129 ServiceException se = new ServiceException();
130 se.setMessageId(messageId);
131 se.setText(errorText);
132 if(variables != null){
133 for(String variable: variables){
134 se.getVariables().add(variable);
137 re.setServiceException(se);
140 String requestErrorStr = null;
143 ObjectMapper mapper = new ObjectMapper();
144 mapper.setSerializationInclusion(Include.NON_DEFAULT);
145 requestErrorStr = mapper.writeValueAsString(re);
147 msoLogger.error (MessageEnum.APIH_VALIDATION_ERROR, "", "", MsoLogger.ErrorCode.DataError, "Exception in buildServiceErrorResponse writing exceptionType to string ", e);
150 return builder.buildResponse(httpResponseCode, null, requestErrorStr, version);
155 // Parse request JSON
156 public void parse (ServiceInstancesRequest sir, HashMap<String,String> instanceIdMap, Actions action, String version,
157 String originalRequestJSON, int reqVersion, Boolean aLaCarteFlag) throws ValidationException, IOException {
159 msoLogger.debug ("Validating the Service Instance request");
160 List<ValidationRule> rules = new ArrayList<>();
161 msoLogger.debug ("Incoming version is: " + version + " coverting to int: " + reqVersion);
162 RequestParameters requestParameters = sir.getRequestDetails().getRequestParameters();
163 ValidationInformation info = new ValidationInformation(sir, instanceIdMap, action,
164 reqVersion, aLaCarteFlag, requestParameters);
166 rules.add(new InstanceIdMapValidation());
168 if(reqVersion >= 6 && action == Action.inPlaceSoftwareUpdate){
169 rules.add(new InPlaceSoftwareUpdateValidation());
170 }else if(reqVersion >= 6 && action == Action.applyUpdatedConfig){
171 rules.add(new ApplyUpdatedConfigValidation());
173 rules.add(new RequestScopeValidation());
174 rules.add(new RequestParametersValidation());
175 rules.add(new RequestInfoValidation());
176 rules.add(new ModelInfoValidation());
177 rules.add(new CloudConfigurationValidation());
178 rules.add(new SubscriberInfoValidation());
179 rules.add(new PlatformLOBValidation());
180 rules.add(new ProjectOwningEntityValidation());
181 rules.add(new RelatedInstancesValidation());
182 rules.add(new ConfigurationParametersValidation());
184 if(reqVersion >= 7 && requestParameters != null && requestParameters.getUserParams() != null){
185 for(Map<String, Object> params : requestParameters.getUserParams()){
186 if(params.containsKey("service")){
187 ObjectMapper obj = new ObjectMapper();
188 String input = obj.writeValueAsString(params.get("service"));
189 Service validate = obj.readValue(input, Service.class);
190 info.setUserParams(validate);
191 rules.add(new UserParamsValidation());
196 for(ValidationRule rule : rules){
200 void parseOrchestration (ServiceInstancesRequest sir) throws ValidationException {
201 RequestInfo requestInfo = sir.getRequestDetails().getRequestInfo();
203 if (requestInfo == null) {
204 throw new ValidationException ("requestInfo");
207 if (empty (requestInfo.getSource ())) {
208 throw new ValidationException ("source");
210 if (empty (requestInfo.getRequestorId ())) {
211 throw new ValidationException ("requestorId");
214 public Map<String, List<String>> getOrchestrationFilters (MultivaluedMap<String, String> queryParams) throws ValidationException {
216 String queryParam = null;
217 Map<String, List<String>> orchestrationFilterParams = new HashMap<>();
220 for (Entry<String,List<String>> entry : queryParams.entrySet()) {
221 queryParam = entry.getKey();
224 if("filter".equalsIgnoreCase(queryParam)){
225 for(String value : entry.getValue()) {
226 StringTokenizer st = new StringTokenizer(value, ":");
230 List<String> orchestrationList = new ArrayList<>();
231 while (st.hasMoreElements()) {
233 mapKey = st.nextElement() + "";
235 orchestrationList.add(st.nextElement() + "");
239 orchestrationFilterParams.put(mapKey, orchestrationList);
244 //msoLogger.error (MessageEnum.APIH_VALIDATION_ERROR, e);
245 throw new ValidationException ("QueryParam ServiceInfo", e);
252 return orchestrationFilterParams;
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 ();
263 String networkType = "";
265 aq.setRequestId (requestId);
266 aq.setRequestAction(action.toString());
267 aq.setAction(action.toString());
269 Timestamp startTimeStamp = new Timestamp (System.currentTimeMillis());
271 aq.setStartTime (startTimeStamp);
272 RequestInfo requestInfo =servInsReq.getRequestDetails().getRequestInfo();
273 if (requestInfo != null) {
275 if(requestInfo.getSource() != null){
276 aq.setSource(requestInfo.getSource());
278 if(requestInfo.getCallbackUrl() != null){
279 aq.setCallBackUrl(requestInfo.getCallbackUrl());
281 if(requestInfo.getCorrelator() != null){
282 aq.setCorrelator(requestInfo.getCorrelator());
285 if(requestInfo.getRequestorId() != null) {
286 aq.setRequestorId(requestInfo.getRequestorId());
290 if (servInsReq.getRequestDetails().getModelInfo() != null || (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.setAicCloudRegion(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(ModelType.service.name().equalsIgnoreCase(requestScope)){
315 if(servInsReq.getRequestDetails().getRequestInfo().getInstanceName() != null){
316 aq.setServiceInstanceName(requestInfo.getInstanceName());
320 if(ModelType.network.name().equalsIgnoreCase(requestScope)){
321 aq.setNetworkName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
322 aq.setNetworkType(networkType);
323 aq.setNetworkId(servInsReq.getNetworkInstanceId());
326 if(ModelType.volumeGroup.name().equalsIgnoreCase(requestScope)){
327 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
328 aq.setVolumeGroupName(servInsReq.getRequestDetails().getRequestInfo().getInstanceName());
329 aq.setVnfType(vnfType);
333 if(ModelType.vfModule.name().equalsIgnoreCase(requestScope)){
334 aq.setVfModuleName(requestInfo.getInstanceName());
335 aq.setVfModuleModelName(servInsReq.getRequestDetails().getModelInfo().getModelName());
336 aq.setVfModuleId(servInsReq.getVfModuleInstanceId());
337 aq.setVolumeGroupId(servInsReq.getVolumeGroupInstanceId());
338 aq.setVnfType(vnfType);
342 if(ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
343 aq.setConfigurationId(servInsReq.getConfigurationId());
344 aq.setConfigurationName(requestInfo.getInstanceName());
347 if(ModelType.vnf.name().equalsIgnoreCase(requestScope)){
348 aq.setVnfName(requestInfo.getInstanceName());
349 if (null != servInsReq.getRequestDetails()) {
350 RelatedInstanceList[] instanceList = servInsReq.getRequestDetails().getRelatedInstanceList();
352 if (instanceList != null) {
354 for(RelatedInstanceList relatedInstanceList : instanceList){
356 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
357 if(relatedInstance.getModelInfo().getModelType().equals(ModelType.service)){
358 aq.setVnfType(vnfType);
365 aq.setRequestBody (originalRequestJSON);
367 aq.setRequestStatus (status.toString ());
368 aq.setLastModifiedBy (Constants.MODIFIED_BY_APIHANDLER);
369 } catch (Exception e) {
370 msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.DataError, "Exception when creation record request", e);
372 if (!status.equals (Status.FAILED)) {
379 public InfraActiveRequests createRequestObject (TasksRequest taskRequest, Action action, String requestId,
380 Status status, String originalRequestJSON) {
381 InfraActiveRequests aq = new InfraActiveRequests ();
384 org.onap.so.apihandlerinfra.tasksbeans.RequestInfo requestInfo = taskRequest.getRequestDetails().getRequestInfo();
385 aq.setRequestId (requestId);
386 aq.setRequestAction(action.name());
387 aq.setAction(action.name());
389 Timestamp startTimeStamp = new Timestamp (System.currentTimeMillis());
391 aq.setStartTime (startTimeStamp);
392 if (requestInfo != null) {
394 if(requestInfo.getSource() != null){
395 aq.setSource(requestInfo.getSource());
398 if(requestInfo.getRequestorId() != null) {
399 aq.setRequestorId(requestInfo.getRequestorId());
403 aq.setRequestBody (originalRequestJSON);
404 aq.setRequestStatus (status.toString ());
405 aq.setLastModifiedBy (Constants.MODIFIED_BY_APIHANDLER);
407 } catch (Exception e) {
408 msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.DataError, "Exception when creation record request", e);
410 if (!status.equals (Status.FAILED)) {
417 public void createErrorRequestRecord (Status status, String requestId, String errorMessage, Actions action, String requestScope, String requestJSON) {
419 InfraActiveRequests request = new InfraActiveRequests(requestId);
420 Timestamp startTimeStamp = new Timestamp (System.currentTimeMillis());
421 request.setStartTime (startTimeStamp);
422 request.setRequestStatus(status.toString());
423 request.setStatusMessage(errorMessage);
424 request.setProgress((long) 100);
425 request.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
426 request.setRequestAction(action.toString());
427 request.setRequestScope(requestScope);
428 request.setRequestBody(requestJSON);
429 Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
430 request.setEndTime(endTimeStamp);
431 requestsDbClient.save(request);
432 } catch (Exception e) {
433 msoLogger.error(MessageEnum.APIH_DB_UPDATE_EXC, e.getMessage(), "", "", MsoLogger.ErrorCode.DataError, "Exception when updating record in DB");
434 msoLogger.debug ("Exception: ", e);
441 public Response buildResponse (int httpResponseCode, String errorCode, InfraActiveRequests inProgress) {
442 return buildResponseWithError (httpResponseCode, errorCode, inProgress, null);
445 public Response buildResponseWithError (int httpResponseCode,
447 InfraActiveRequests inProgress,
448 String errorString) {
452 // Log the failed request into the MSO Requests database
454 return Response.status (httpResponseCode).entity (null).build ();
458 public Response buildResponseFailedValidation (int httpResponseCode, String exceptionMessage) {
460 return Response.status (httpResponseCode).entity (null).build ();
465 public String getServiceType (VnfInputs vnfInputs) {
466 if (vnfInputs.getServiceType () != null)
467 return vnfInputs.getServiceType ();
468 if (vnfInputs.getServiceId () != null)
469 return vnfInputs.getServiceId ();
473 public long translateStatus (RequestStatusType status) {
477 return Constants.PROGRESS_REQUEST_COMPLETED;
479 return Constants.PROGRESS_REQUEST_IN_PROGRESS;
485 public static String domToStr (Document doc) {
491 StringWriter sw = new StringWriter ();
492 StreamResult sr = new StreamResult (sw);
493 TransformerFactory tf = TransformerFactory.newInstance ();
494 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
495 tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET,"");
496 Transformer t = tf.newTransformer ();
497 t.setOutputProperty (OutputKeys.STANDALONE, "yes");
498 NodeList nl = doc.getDocumentElement ().getChildNodes ();
499 DOMSource source = null;
500 for (int x = 0; x < nl.getLength (); x++) {
501 Node e = nl.item (x);
502 if (e instanceof Element) {
503 source = new DOMSource (e);
507 if (source != null) {
508 t.transform (source, sr);
510 String s = sw.toString ();
516 } catch (Exception e) {
517 msoLogger.error (MessageEnum.APIH_DOM2STR_ERROR, "", "", MsoLogger.ErrorCode.DataError, "Exception in domToStr", e);
522 public void addBPMNSpecificInputs(VnfRequest vnfReq, VnfInputs vnfInputs, String personaModelId, String personaModelVersion, Boolean isBaseVfModule,
523 String vnfPersonaModelId, String vnfPersonaModelVersion) {
524 vnfInputs.setPersonaModelId(personaModelId);
525 vnfInputs.setPersonaModelVersion(personaModelVersion);
526 vnfInputs.setIsBaseVfModule(isBaseVfModule);
527 vnfInputs.setVnfPersonaModelId(vnfPersonaModelId);
528 vnfInputs.setVnfPersonaModelVersion(vnfPersonaModelVersion);
530 vnfReq.setVnfInputs(vnfInputs);
534 private static boolean empty(String s) {
535 return (s == null || s.trim().isEmpty());
538 public String getRequestJSON(ServiceInstancesRequest sir) throws JsonGenerationException, JsonMappingException, IOException {
539 ObjectMapper mapper = new ObjectMapper();
540 mapper.setSerializationInclusion(Include.NON_NULL);
541 //mapper.configure(Feature.WRAP_ROOT_VALUE, true);
542 msoLogger.debug ("building sir from object " + sir);
543 String requestJSON = mapper.writeValueAsString(sir);
545 // Perform mapping from VID-style modelInfo fields to ASDC-style modelInfo fields
547 msoLogger.debug("REQUEST JSON before mapping: " + requestJSON);
548 // modelUuid = modelVersionId
549 requestJSON = requestJSON.replaceAll("\"modelVersionId\":","\"modelUuid\":");
550 // modelCustomizationUuid = modelCustomizationId
551 requestJSON = requestJSON.replaceAll("\"modelCustomizationId\":","\"modelCustomizationUuid\":");
552 // modelInstanceName = modelCustomizationName
553 requestJSON = requestJSON.replaceAll("\"modelCustomizationName\":","\"modelInstanceName\":");
554 // modelInvariantUuid = modelInvariantId
555 requestJSON = requestJSON.replaceAll("\"modelInvariantId\":","\"modelInvariantUuid\":");
556 msoLogger.debug("REQUEST JSON after mapping: " + requestJSON);
562 public boolean getAlacarteFlag(ServiceInstancesRequest sir) {
563 if(sir.getRequestDetails().getRequestParameters() != null &&
564 sir.getRequestDetails().getRequestParameters().getALaCarte() != null)
565 return sir.getRequestDetails().getRequestParameters().getALaCarte();
571 public String getNetworkType(ServiceInstancesRequest sir, String requestScope) {
572 if(requestScope.equalsIgnoreCase(ModelType.network.name()))
573 return sir.getRequestDetails().getModelInfo().getModelName();
578 public String getServiceInstanceType(ServiceInstancesRequest sir, String requestScope) {
579 if(requestScope.equalsIgnoreCase(ModelType.network.name()))
580 return sir.getRequestDetails().getModelInfo().getModelName();
585 public String getSDCServiceModelVersion(ServiceInstancesRequest sir) {
586 String sdcServiceModelVersion = null;
587 if(sir.getRequestDetails().getRelatedInstanceList() != null)
588 for(RelatedInstanceList relatedInstanceList : sir.getRequestDetails().getRelatedInstanceList()){
589 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
590 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo ();
591 if(relatedInstanceModelInfo.getModelType().equals(ModelType.service))
592 sdcServiceModelVersion = relatedInstanceModelInfo.getModelVersion ();
594 return sdcServiceModelVersion;
598 public String getVfModuleType(ServiceInstancesRequest sir, String requestScope, Actions action, int reqVersion) {
600 String serviceInstanceType = null;
601 String networkType = null;
602 String vnfType = null;
603 String vfModuleType = null;
604 String vfModuleModelName = null;
605 ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
606 RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
607 String serviceModelName = null;
608 String vnfModelName = null;
609 String asdcServiceModelVersion = null;
610 String volumeGroupId = null;
611 boolean isRelatedServiceInstancePresent = false;
612 boolean isRelatedVnfInstancePresent = false;
613 boolean isSourceVnfPresent = false;
614 boolean isDestinationVnfPresent = false;
615 boolean isConnectionPointPresent = false;
617 if (instanceList != null) {
618 for(RelatedInstanceList relatedInstanceList : instanceList){
619 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
620 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo ();
622 if (action != Action.deleteInstance) {
624 if(ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
625 if(InstanceDirection.source.equals(relatedInstance.getInstanceDirection()) && relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)) {
626 isSourceVnfPresent = true;
627 } else if(InstanceDirection.destination.equals(relatedInstance.getInstanceDirection()) &&
628 (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf) || (relatedInstanceModelInfo.getModelType().equals(ModelType.pnf) && reqVersion == 6))) {
629 isDestinationVnfPresent = true;
633 if(ModelType.connectionPoint.equals(relatedInstanceModelInfo.getModelType()) && ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
634 isConnectionPointPresent = true;
639 if(relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
640 isRelatedServiceInstancePresent = true;
641 serviceModelName = relatedInstanceModelInfo.getModelName ();
642 asdcServiceModelVersion = relatedInstanceModelInfo.getModelVersion ();
643 } else if(relatedInstanceModelInfo.getModelType().equals(ModelType.vnf) && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
644 isRelatedVnfInstancePresent = true;
645 vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
646 } else if(relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
647 volumeGroupId = relatedInstance.getInstanceId ();
651 if(requestScope.equalsIgnoreCase (ModelType.volumeGroup.name ())) {
652 serviceInstanceType = serviceModelName;
653 vnfType = serviceModelName + "/" + vnfModelName;
655 else if(requestScope.equalsIgnoreCase(ModelType.vfModule.name ())) {
656 vfModuleModelName = modelInfo.getModelName ();
657 serviceInstanceType = serviceModelName;
658 vnfType = serviceModelName + "/" + vnfModelName;
659 vfModuleType = vnfType + "::" + vfModuleModelName;
660 sir.setVolumeGroupInstanceId (volumeGroupId);
662 else if (requestScope.equalsIgnoreCase (ModelType.vnf.name ()))
663 vnfType = serviceModelName + "/" + sir.getRequestDetails().getModelInfo().getModelCustomizationName();
671 public String getVnfType(ServiceInstancesRequest sir, String requestScope, Actions action, int reqVersion) {
673 String serviceInstanceType = null;
674 String networkType = null;
675 String vnfType = null;
676 String vfModuleType = null;
677 String vfModuleModelName = null;
678 ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
679 MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.APIH, MsoRequest.class);
680 RelatedInstanceList[] instanceList = sir.getRequestDetails().getRelatedInstanceList();
681 String serviceModelName = null;
682 String vnfModelName = null;
683 String asdcServiceModelVersion = null;
684 String volumeGroupId = null;
685 boolean isRelatedServiceInstancePresent = false;
686 boolean isRelatedVnfInstancePresent = false;
687 boolean isSourceVnfPresent = false;
688 boolean isDestinationVnfPresent = false;
689 boolean isConnectionPointPresent = false;
691 if (instanceList != null) {
692 for(RelatedInstanceList relatedInstanceList : instanceList){
693 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
694 ModelInfo relatedInstanceModelInfo = relatedInstance.getModelInfo ();
696 if (action != Action.deleteInstance) {
698 if(ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
699 if(InstanceDirection.source.equals(relatedInstance.getInstanceDirection()) && relatedInstanceModelInfo.getModelType().equals(ModelType.vnf)) {
700 isSourceVnfPresent = true;
701 } else if(InstanceDirection.destination.equals(relatedInstance.getInstanceDirection()) &&
702 (relatedInstanceModelInfo.getModelType().equals(ModelType.vnf) || (relatedInstanceModelInfo.getModelType().equals(ModelType.pnf) && reqVersion == 6))) {
703 isDestinationVnfPresent = true;
707 if(ModelType.connectionPoint.equals(relatedInstanceModelInfo.getModelType()) && ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
708 isConnectionPointPresent = true;
713 if(relatedInstanceModelInfo.getModelType().equals(ModelType.service)) {
714 isRelatedServiceInstancePresent = true;
715 serviceModelName = relatedInstanceModelInfo.getModelName ();
716 asdcServiceModelVersion = relatedInstanceModelInfo.getModelVersion ();
717 } else if(relatedInstanceModelInfo.getModelType().equals(ModelType.vnf) && !(ModelType.configuration.name().equalsIgnoreCase(requestScope))) {
718 isRelatedVnfInstancePresent = true;
719 vnfModelName = relatedInstanceModelInfo.getModelCustomizationName();
720 } else if(relatedInstanceModelInfo.getModelType().equals(ModelType.volumeGroup)) {
721 volumeGroupId = relatedInstance.getInstanceId ();
725 if(requestScope.equalsIgnoreCase (ModelType.volumeGroup.name ())) {
726 serviceInstanceType = serviceModelName;
727 vnfType = serviceModelName + "/" + vnfModelName;
729 else if(requestScope.equalsIgnoreCase(ModelType.vfModule.name ())) {
730 vfModuleModelName = modelInfo.getModelName ();
731 serviceInstanceType = serviceModelName;
732 vnfType = serviceModelName + "/" + vnfModelName;
733 vfModuleType = vnfType + "::" + vfModuleModelName;
734 sir.setVolumeGroupInstanceId (volumeGroupId);
736 else if (requestScope.equalsIgnoreCase (ModelType.vnf.name ()))
737 vnfType = serviceModelName + "/" + sir.getRequestDetails().getModelInfo().getModelCustomizationName();