Removed deprecated Matcher imports
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / client / adapter / vnf / mapper / VnfAdapterVfModuleObjectMapper.java
index 11a6941..352d4ec 100644 (file)
@@ -23,19 +23,25 @@ package org.onap.so.client.adapter.vnf.mapper;
 import static java.util.Arrays.asList;
 
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
 import javax.annotation.PostConstruct;
 
+import org.apache.commons.lang3.StringUtils;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiParam;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiParamParam;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiSubInterfaceNetworkData;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiSubinterfacenetworkdataSubInterfaceNetworkData;
+import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleTopology;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfmoduleassignmentsVfModuleAssignments;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfmoduleassignmentsVfmoduleassignmentsVms;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfmoduletopologyVfModuleTopology;
@@ -52,6 +58,7 @@ import org.onap.sdnc.northbound.client.model.GenericResourceApiVmtopologydataVmN
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVmtopologydataVmNetworks;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVmtopologydataVmnamesVnfcNames;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfNetworkData;
+import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfTopology;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfcNetworkData;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfcnetworkdataVnfcNetworkData;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcPorts;
@@ -79,8 +86,8 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Joiner;
 
-import jersey.repackaged.com.google.common.base.Joiner;
 
 @Component
 public class VnfAdapterVfModuleObjectMapper {
@@ -134,7 +141,7 @@ public class VnfAdapterVfModuleObjectMapper {
                createVfModuleRequest.setVfModuleParams(buildVfModuleParamsMap(requestContext, serviceInstance, genericVnf, vfModule, sdncVnfQueryResponse, sdncVfModuleQueryResponse));
                
                createVfModuleRequest.setSkipAAI(true);         
-               createVfModuleRequest.setBackout(orchestrationContext.getIsRollbackEnabled());
+               createVfModuleRequest.setBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
                createVfModuleRequest.setFailIfExists(true);
                
                MsoRequest msoRequest = buildMsoRequest(requestContext, serviceInstance);               
@@ -157,11 +164,14 @@ public class VnfAdapterVfModuleObjectMapper {
        private Map<String,String> buildVfModuleParamsMap(RequestContext requestContext, ServiceInstance serviceInstance, GenericVnf genericVnf, 
                                VfModule vfModule, String sdncVnfQueryResponse, String sdncVfModuleQueryResponse) throws JsonParseException, JsonMappingException, IOException {
                
-               GenericResourceApiVnftopologyVnfTopology vnfTopology = mapper.readValue(sdncVnfQueryResponse, GenericResourceApiVnftopologyVnfTopology.class);
-               GenericResourceApiVfmoduletopologyVfModuleTopology vfModuleTopology = mapper.readValue(sdncVfModuleQueryResponse, GenericResourceApiVfmoduletopologyVfModuleTopology.class);
+               
+               GenericResourceApiVnfTopology vnfTop= mapper.readValue(sdncVnfQueryResponse, GenericResourceApiVnfTopology.class);
+               GenericResourceApiVfModuleTopology vfModuleTop = mapper.readValue(sdncVfModuleQueryResponse, GenericResourceApiVfModuleTopology.class);
+               GenericResourceApiVnftopologyVnfTopology vnfTopology = vnfTop.getVnfTopology();
+               GenericResourceApiVfmoduletopologyVfModuleTopology vfModuleTopology = vfModuleTop.getVfModuleTopology();
                Map<String,String> paramsMap = new HashMap<>();
 
-               if(vnfTopology.getSdncGeneratedCloudResources() && vfModuleTopology.getSdncGeneratedCloudResources()) {
+               if( vfModuleTopology.getSdncGeneratedCloudResources()) {
                        buildParamsMapFromVfModuleSdncResponse(paramsMap, vfModuleTopology, true);
                        buildParamsMapFromVnfSdncResponse(paramsMap, vnfTopology, null, true);
                }
@@ -297,6 +307,9 @@ public class VnfAdapterVfModuleObjectMapper {
                                                                                buildVfModuleSriovParameters(paramsMap, network, networkKey);                                                                   
                                                                                // IPV4 and IPV6 Addresses
                                                                                buildVfModuleNetworkInformation(paramsMap, network, key, networkKey);
+                                                                               
+                                                                               buildVlanInformation(paramsMap, network, key, networkKey);
+                                                                               
                                                                        }
                                                                }
                                                        }
@@ -309,6 +322,36 @@ public class VnfAdapterVfModuleObjectMapper {
                }
        }
        
+       protected void buildVlanInformation(Map<String, String> paramsMap,
+                       GenericResourceApiVmNetworkData network, String key, String networkKey) {
+               
+               String networkString = convertToString(network);
+               String vlanFilterKey = key + UNDERSCORE + networkKey + UNDERSCORE + "vlan_filter";
+               String privateVlansKey = key + UNDERSCORE + networkKey + UNDERSCORE + "private_vlans";
+               String publicVlansKey = key + UNDERSCORE + networkKey + UNDERSCORE + "public_vlans";
+               String guestVlansKey = key + UNDERSCORE + networkKey + UNDERSCORE + "guest_vlans";
+               
+               if (network.getSegmentationId() != null) {
+                       paramsMap.put(vlanFilterKey, network.getSegmentationId());
+               }
+               
+               List<String> privateVlans = jsonPath.locateResultList(networkString, "$.related-networks.related-network[?(@.vlan-tags.is-private == true)].vlan-tags.upper-tag-id");
+               List<String> publicVlans = jsonPath.locateResultList(networkString, "$.related-networks.related-network[?(@.vlan-tags.is-private == false)].vlan-tags.upper-tag-id");
+               List<String> concat = new ArrayList<>(privateVlans);
+               concat.addAll(publicVlans);
+               Collection<String> guestVlans = new HashSet<>(concat);
+               
+               if (!privateVlans.isEmpty()) {
+                       paramsMap.put(privateVlansKey, Joiner.on(",").join(privateVlans));
+               }
+               if (!publicVlans.isEmpty()) {
+                       paramsMap.put(publicVlansKey, Joiner.on(",").join(publicVlans));
+               }
+               if (!guestVlans.isEmpty()) {
+                       paramsMap.put(guestVlansKey, Joiner.on(",").join(guestVlans));
+               }
+       }
+
        private void buildVfModuleVmNames(Map<String,String> paramsMap, GenericResourceApiVmTopologyData vm, String key) {
                String values = "";
                GenericResourceApiVmtopologydataVmNames vmNames = vm.getVmNames();
@@ -402,7 +445,6 @@ public class VnfAdapterVfModuleObjectMapper {
                                }
                        }
                }
-               
        }
        
        private void buildVfModuleNetworkInformation(Map<String,String> paramsMap, GenericResourceApiVmNetworkData network, String key, String networkKey) {
@@ -739,16 +781,26 @@ public class VnfAdapterVfModuleObjectMapper {
                deleteVfModuleRequest.setTenantId(cloudRegion.getTenantId());
                deleteVfModuleRequest.setVnfId(genericVnf.getVnfId());
                deleteVfModuleRequest.setVfModuleId(vfModule.getVfModuleId());
-               deleteVfModuleRequest.setVfModuleStackId(vfModule.getHeatStackId());//DoDVfMod_heatStackId
-               deleteVfModuleRequest.setSkipAAI(true);                 
-               String messageId = vnfAdapterObjectMapperUtils.getRandomUuid();
-               deleteVfModuleRequest.setMessageId(messageId);          
-               deleteVfModuleRequest.setNotificationUrl(vnfAdapterObjectMapperUtils.createCallbackUrl("VNFAResponse", messageId));
+               if (!StringUtils.isEmpty(vfModule.getHeatStackId())){
+                       deleteVfModuleRequest.setVfModuleStackId(vfModule.getHeatStackId());//DoDVfMod_heatStackId
+               } else
+               {
+                       deleteVfModuleRequest.setVfModuleStackId(vfModule.getVfModuleName());
+               }
+               
+               deleteVfModuleRequest.setSkipAAI(true);
+               setIdAndUrl(deleteVfModuleRequest);
                MsoRequest msoRequest = buildMsoRequest(requestContext, serviceInstance);       
                deleteVfModuleRequest.setMsoRequest(msoRequest);
                return deleteVfModuleRequest;
        }
        
+       protected void setIdAndUrl(DeleteVfModuleRequest deleteVfModuleRequest) throws UnsupportedEncodingException{
+               String messageId = vnfAdapterObjectMapperUtils.getRandomUuid();
+               deleteVfModuleRequest.setMessageId(messageId);          
+               deleteVfModuleRequest.setNotificationUrl(vnfAdapterObjectMapperUtils.createCallbackUrl("VNFAResponse", messageId));
+       }
+       
        private String convertToString(Object obj) {
                String json;
                try {
@@ -773,4 +825,4 @@ public class VnfAdapterVfModuleObjectMapper {
                }
                return baseVfModule;
        }
-}
+}
\ No newline at end of file