avpn bonding vnr vrf config fk incorrect 30/81830/1
authorBenjamin, Max (mb388a) <mb388a@us.att.com>
Fri, 8 Mar 2019 05:31:57 +0000 (00:31 -0500)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Fri, 8 Mar 2019 05:32:12 +0000 (00:32 -0500)
included additional unit tests for ToscaResourceInstaller class
Refactored Tosca installer to assign template of type

Change-Id: Iac960045e7fe4355081637cfee0dc3676524a012
Issue-ID: SO-1611
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java

index 56784ba..892a96e 100644 (file)
@@ -53,6 +53,7 @@ import org.onap.sdc.toscaparser.api.Property;
 import org.onap.sdc.toscaparser.api.RequirementAssignment;
 import org.onap.sdc.toscaparser.api.RequirementAssignments;
 import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.onap.sdc.toscaparser.api.elements.StatefulEntityType;
 import org.onap.sdc.toscaparser.api.functions.GetInput;
 import org.onap.sdc.toscaparser.api.parameters.Input;
 import org.onap.sdc.utils.DistributionStatusEnum;
@@ -138,6 +139,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 @Component
 public class ToscaResourceInstaller {
 
+       protected static final String NODES_VRF_ENTRY = "org.openecomp.nodes.VRFEntry";
+
+       protected static final String VLAN_NETWORK_RECEPTOR = "org.openecomp.nodes.VLANNetworkReceptor";
+
        protected static final String ALLOTTED_RESOURCE = "Allotted Resource";
 
        protected static final String MULTI_STAGE_DESIGN = "multi_stage_design";
@@ -295,8 +300,7 @@ public class ToscaResourceInstaller {
                List<ASDCElementInfo> artifactListForLogging = new ArrayList<>();
                try {
                        createToscaCsar(toscaResourceStruct);                   
-                       createService(toscaResourceStruct, vfResourceStruct);                   
-                       Service service = toscaResourceStruct.getCatalogService();                              
+                       Service service = createService(toscaResourceStruct, vfResourceStruct);
                        
                        processResourceSequence(toscaResourceStruct, service);
                        processVFResources(toscaResourceStruct, service, vfResourceStructure);
@@ -524,6 +528,62 @@ public class ToscaResourceInstaller {
                        }
                }
        }
+       
+       
+       protected ConfigurationResource getConfigurationResource(NodeTemplate nodeTemplate) {
+               Metadata metadata = nodeTemplate.getMetaData();
+               ConfigurationResource configResource = new ConfigurationResource();
+               configResource.setModelName(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
+               configResource.setModelInvariantUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
+               configResource.setModelUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
+               configResource.setModelVersion(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_VERSION));
+               configResource.setDescription(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION));
+               configResource.setToscaNodeType(nodeTemplate.getType());
+               return configResource;
+       }
+       
+       protected ConfigurationResourceCustomization getConfigurationResourceCustomization(NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure, 
+                       ServiceProxyResourceCustomization spResourceCustomization ) {
+               Metadata metadata = nodeTemplate.getMetaData();
+               
+               ConfigurationResource configResource = getConfigurationResource(nodeTemplate);
+               
+               ConfigurationResourceCustomization configCustomizationResource = new ConfigurationResourceCustomization();
+               
+               Set<ConfigurationResourceCustomization> configResourceCustomizationSet = new HashSet<>();
+               
+               configCustomizationResource.setModelCustomizationUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
+               configCustomizationResource.setModelInstanceName(nodeTemplate.getName());
+               
+               configCustomizationResource.setNfFunction(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION));
+               configCustomizationResource.setNfRole(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE));
+               configCustomizationResource.setNfType(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE));
+               configCustomizationResource.setServiceProxyResourceCustomizationUUID(spResourceCustomization.getModelCustomizationUUID());
+       
+               configCustomizationResource.setConfigurationResource(configResource);
+               configResourceCustomizationSet.add(configCustomizationResource);
+
+               configResource.setConfigurationResourceCustomization(configResourceCustomizationSet);   
+               return configCustomizationResource;
+       }
+       
+       
+       protected Optional<ConfigurationResourceCustomization> getVnrNodeTemplate(List<NodeTemplate> configurationNodeTemplatesList,  
+                       ToscaResourceStructure toscaResourceStructure, ServiceProxyResourceCustomization spResourceCustomization) {
+               Optional<ConfigurationResourceCustomization> configurationResourceCust = Optional.empty();
+               for (NodeTemplate nodeTemplate : configurationNodeTemplatesList) {
+                       StatefulEntityType entityType = nodeTemplate.getTypeDefinition();
+                       String type = entityType.getType();
+                       
+                       if(VLAN_NETWORK_RECEPTOR.equals(type)) {
+                               configurationResourceCust= Optional.of(getConfigurationResourceCustomization(nodeTemplate, 
+                                               toscaResourceStructure,spResourceCustomization));
+                               break;
+                       }
+               }
+               
+               return configurationResourceCust;
+       }
                
        protected void processServiceProxyAndConfiguration(ToscaResourceStructure toscaResourceStruct, Service service) {
                
@@ -538,16 +598,16 @@ public class ToscaResourceInstaller {
                
                if (serviceProxyResourceList != null) {
                        for (NodeTemplate spNode : serviceProxyResourceList) {
-                               serviceProxy = createServiceProxy(spNode, service, toscaResourceStruct);
-                                                               
+                               serviceProxy = createServiceProxy(spNode, service, toscaResourceStruct);                                                                
                                serviceProxyList.add(serviceProxy);
-
+                               Optional<ConfigurationResourceCustomization> vnrResourceCustomization = getVnrNodeTemplate(configurationNodeTemplatesList,toscaResourceStruct,serviceProxy);
+                               
                                for (NodeTemplate configNode : configurationNodeTemplatesList) {
                                                                                
                                                List<RequirementAssignment> requirementsList = toscaResourceStruct.getSdcCsarHelper().getRequirementsOf(configNode).getAll();
                                                for (RequirementAssignment requirement :  requirementsList) {
                                                        if (requirement.getNodeTemplateName().equals(spNode.getName())) {
-                                                               ConfigurationResourceCustomization configurationResource = createConfiguration(configNode, toscaResourceStruct, serviceProxy);
+                                                               ConfigurationResourceCustomization configurationResource = createConfiguration(configNode, toscaResourceStruct, serviceProxy, vnrResourceCustomization);
                                                                
                                                                Optional<ConfigurationResourceCustomization> matchingObject = configurationResourceList.stream()
                                                                            .filter(configurationResourceCustomization -> configNode.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).equals(configurationResource.getModelCustomizationUUID()))
@@ -881,8 +941,6 @@ public class ToscaResourceInstaller {
        protected Service createService(ToscaResourceStructure toscaResourceStructure,
                        VfResourceStructure vfResourceStructure) {
 
-               toscaResourceStructure.getServiceMetadata();
-
                Metadata serviceMetadata = toscaResourceStructure.getServiceMetadata();
 
                Service service = new Service();
@@ -945,32 +1003,26 @@ public class ToscaResourceInstaller {
                return spCustomizationResource;
        }
        
-       protected ConfigurationResourceCustomization createConfiguration(NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure, ServiceProxyResourceCustomization spResourceCustomization) {
+       protected ConfigurationResourceCustomization createConfiguration(NodeTemplate nodeTemplate, 
+                       ToscaResourceStructure toscaResourceStructure, ServiceProxyResourceCustomization spResourceCustomization,
+                       Optional<ConfigurationResourceCustomization> vnrResourceCustomization) {
 
-               Metadata metadata = nodeTemplate.getMetaData();
-               
-               ConfigurationResource configResource = new ConfigurationResource();
-               
-               configResource.setModelName(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
-               configResource.setModelInvariantUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
-               configResource.setModelUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
-               configResource.setModelVersion(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_VERSION));
-               configResource.setDescription(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION));
-               configResource.setToscaNodeType(nodeTemplate.getType());
+               ConfigurationResourceCustomization configCustomizationResource = getConfigurationResourceCustomization(nodeTemplate, 
+                               toscaResourceStructure,spResourceCustomization);
                
-               ConfigurationResourceCustomization configCustomizationResource = new ConfigurationResourceCustomization();
+               ConfigurationResource configResource = getConfigurationResource(nodeTemplate);
                
                Set<ConfigurationResourceCustomization> configResourceCustomizationSet = new HashSet<>();
                
-               configCustomizationResource.setModelCustomizationUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
-               configCustomizationResource.setModelInstanceName(nodeTemplate.getName());
-               
-               configCustomizationResource.setNfFunction(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION));
-               configCustomizationResource.setNfRole(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE));
-               configCustomizationResource.setNfType(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE));
-               configCustomizationResource.setServiceProxyResourceCustomizationUUID(spResourceCustomization.getModelCustomizationUUID());
-               configCustomizationResource.setConfigResourceCustomization(configCustomizationResource);
+               StatefulEntityType entityType = nodeTemplate.getTypeDefinition();
+               String type = entityType.getType();
+               
+               if(NODES_VRF_ENTRY.equals(type)) {
+                       configCustomizationResource.setConfigResourceCustomization(vnrResourceCustomization.orElse(null));
+               }
+                       
                configCustomizationResource.setConfigurationResource(configResource);
+               
                configResourceCustomizationSet.add(configCustomizationResource);
 
                configResource.setConfigurationResourceCustomization(configResourceCustomizationSet);   
index 9ab4c5e..e4eb097 100644 (file)
@@ -23,71 +23,48 @@ package org.onap.so.asdc.installer.heat;
 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
-
-import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doNothing;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
-import java.io.File;
-import java.io.FileInputStream;
 import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 
-import javax.transaction.Transactional;
-
-import org.apache.commons.io.IOUtils;
 import org.hibernate.exception.LockAcquisitionException;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.onap.sdc.api.notification.IResourceInstance;
-import org.onap.sdc.api.results.IDistributionClientDownloadResult;
+import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
 import org.onap.sdc.tosca.parser.impl.SdcCsarHelperImpl;
 import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
-import org.onap.sdc.toscaparser.api.CapabilityAssignment;
-import org.onap.sdc.toscaparser.api.CapabilityAssignments;
 import org.onap.sdc.toscaparser.api.Group;
 import org.onap.sdc.toscaparser.api.NodeTemplate;
 import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.onap.sdc.toscaparser.api.elements.StatefulEntityType;
 import org.onap.sdc.utils.DistributionStatusEnum;
 import org.onap.so.asdc.BaseTest;
-import org.onap.so.asdc.client.ASDCConfiguration;
 import org.onap.so.asdc.client.exceptions.ArtifactInstallerException;
 import org.onap.so.asdc.client.test.emulators.ArtifactInfoImpl;
 import org.onap.so.asdc.client.test.emulators.JsonStatusData;
 import org.onap.so.asdc.client.test.emulators.NotificationDataImpl;
-import org.onap.so.asdc.installer.VfModuleArtifact;
-import org.onap.so.asdc.installer.VfResourceStructure;
-import org.onap.so.db.catalog.beans.AllottedResource;
-import org.onap.so.db.catalog.beans.AllottedResourceCustomization;
-import org.onap.so.db.catalog.beans.ExternalServiceToInternalService;
-import org.onap.so.db.catalog.beans.HeatTemplate;
-import org.onap.so.db.catalog.beans.NetworkResource;
-import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
-import org.onap.so.db.catalog.beans.Service;
-import org.onap.so.db.catalog.beans.VnfResource;
-import org.onap.so.db.catalog.beans.VnfResourceCustomization;
+import org.onap.so.asdc.installer.ToscaResourceStructure;
+import org.onap.so.db.catalog.beans.ConfigurationResource;
+import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
+import org.onap.so.db.catalog.beans.ServiceProxyResourceCustomization;
 import org.onap.so.db.catalog.data.repository.AllottedResourceCustomizationRepository;
 import org.onap.so.db.catalog.data.repository.AllottedResourceRepository;
-import org.onap.so.db.catalog.data.repository.ExternalServiceToInternalServiceRepository;
 import org.onap.so.db.catalog.data.repository.ServiceRepository;
 import org.onap.so.db.request.beans.WatchdogComponentDistributionStatus;
-import org.onap.so.db.request.beans.WatchdogDistributionStatus;
-import org.onap.so.db.request.beans.WatchdogServiceModVerIdLookup;
 import org.onap.so.db.request.data.repository.WatchdogComponentDistributionStatusRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -114,6 +91,16 @@ public class ToscaResourceInstallerTest extends BaseTest {
        private IResourceInstance resourceInstance;
        @Rule
        public ExpectedException expectedException = ExpectedException.none();
+       @Mock
+       private NodeTemplate nodeTemplate;
+       @Mock
+       private ToscaResourceStructure toscaResourceStructure;
+       @Mock 
+       private ServiceProxyResourceCustomization spResourceCustomization;
+       @Mock
+       private ISdcCsarHelper csarHelper;
+       @Mock
+       private StatefulEntityType entityType;
 
        private NotificationDataImpl notificationData;
        private JsonStatusData statusData;
@@ -310,4 +297,82 @@ public class ToscaResourceInstallerTest extends BaseTest {
                }
                return actualWatchdogComponentDistributionStatus;
        }
+       
+       
+       
+       
+       private void prepareConfigurationResource() {
+               doReturn(metadata).when(nodeTemplate).getMetaData();
+               doReturn(MockConstants.TEMPLATE_TYPE).when(nodeTemplate).getType();
+               
+               doReturn(MockConstants.MODEL_NAME).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_NAME);                
+               doReturn(MockConstants.MODEL_INVARIANT_UUID).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID);             
+               doReturn(MockConstants.MODEL_UUID).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_UUID);                
+               doReturn(MockConstants.MODEL_VERSION).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_VERSION);
+               doReturn(MockConstants.MODEL_DESCRIPTION).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION);
+               doReturn(MockConstants.MODEL_NAME).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_NAME);
+               doReturn(MockConstants.MODEL_NAME).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_NAME);
+       }
+       
+       @Test
+       public void getConfigurationResourceTest() {
+               prepareConfigurationResource();
+               
+               ConfigurationResource configResource=toscaInstaller.getConfigurationResource(nodeTemplate);
+               
+               assertNotNull(configResource);
+               assertEquals(MockConstants.MODEL_NAME, configResource.getModelName());
+               assertEquals(MockConstants.MODEL_INVARIANT_UUID, configResource.getModelInvariantUUID());
+               assertEquals(MockConstants.MODEL_UUID, configResource.getModelUUID());
+               assertEquals(MockConstants.MODEL_VERSION, configResource.getModelVersion());
+               assertEquals(MockConstants.MODEL_DESCRIPTION, configResource.getDescription());
+               assertEquals(MockConstants.TEMPLATE_TYPE, nodeTemplate.getType());
+       }
+       
+       private void prepareConfigurationResourceCustomization() {
+               prepareConfigurationResource();
+               doReturn(MockConstants.MODEL_CUSTOMIZATIONUUID).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);
+               doReturn(csarHelper).when(toscaResourceStructure).getSdcCsarHelper();
+               doReturn(null).when(csarHelper).getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION);
+               doReturn(null).when(csarHelper).getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE);
+               doReturn(null).when(csarHelper).getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE);
+               doReturn(MockConstants.MODEL_CUSTOMIZATIONUUID).when(spResourceCustomization).getModelCustomizationUUID();
+       }
+       
+       
+       @Test
+       public void getConfigurationResourceCustomizationTest() {
+               prepareConfigurationResourceCustomization();            
+               
+               ConfigurationResourceCustomization configurationResourceCustomization = toscaInstaller.getConfigurationResourceCustomization(
+                               nodeTemplate, toscaResourceStructure, spResourceCustomization);
+               assertNotNull(configurationResourceCustomization);
+               assertNotNull(configurationResourceCustomization.getConfigurationResource());
+               assertEquals(MockConstants.MODEL_CUSTOMIZATIONUUID, configurationResourceCustomization.getServiceProxyResourceCustomizationUUID());
+       }
+       
+       @Test
+       public void getVnrNodeTemplateTest() {
+               prepareConfigurationResourceCustomization();
+               List<NodeTemplate> nodeTemplateList = new ArrayList<>();
+               doReturn(ToscaResourceInstaller.VLAN_NETWORK_RECEPTOR).when(entityType).getType();
+               doReturn(entityType).when(nodeTemplate).getTypeDefinition();
+               nodeTemplateList.add(nodeTemplate);
+               Optional<ConfigurationResourceCustomization> vnrResourceCustomization= 
+                               toscaInstaller.getVnrNodeTemplate(nodeTemplateList, toscaResourceStructure, spResourceCustomization);
+               assertTrue(vnrResourceCustomization.isPresent());
+               assertEquals(ToscaResourceInstaller.VLAN_NETWORK_RECEPTOR, entityType.getType());
+       }
+       
+       class MockConstants{
+               public final static String MODEL_NAME = "VLAN Network Receptor Configuration";
+               public final static String MODEL_INVARIANT_UUID = "1608eef4-de53-4334-a8d2-ba79cab4bde0";
+               public final static String MODEL_UUID = "212ca27b-554c-474c-96b9-ddc2f1b1ddba";
+               public final static String MODEL_VERSION = "30.0";
+               public final static String MODEL_DESCRIPTION = "VLAN network receptor configuration object";
+               public final static String MODEL_CUSTOMIZATIONUUID = "2db953e8-679d-437b-bff7-cb262638a8cd";
+               public final static String TEMPLATE_TYPE = "org.openecomp.nodes.VLANNetworkReceptor";
+               public final static String TEMPLATE_NAME = "VLAN Network Receptor Configuration 0";
+               
+       }
 }