diff options
author | shiria <shiri.amichai@amdocs.com> | 2018-07-02 11:10:56 +0300 |
---|---|---|
committer | Avi Gaffa <avi.gaffa@amdocs.com> | 2018-07-02 09:10:51 +0000 |
commit | 6d7284b5bcbbf6f57b843c5f30a50e9387b5ece8 (patch) | |
tree | a3e1b2e8af332d1472e81392f421e59f4d0ef37d /openecomp-be/lib/openecomp-tosca-lib | |
parent | 82fa3004cc68ef367e4f210900619743eb9abc95 (diff) |
Fix getFlat for datatype
Fix getFlat when we driven from primitive type like string
Adding support for service filter as tosca extension
Issue-ID: SDC-1455
Change-Id: I57f05af13b394239ca55b71a946d69f56675bf19
Signed-off-by: shiria <shiri.amichai@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-tosca-lib')
6 files changed, 404 insertions, 138 deletions
diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/DataModelUtil.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/DataModelUtil.java index fc411bf009..ac2f5da44a 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/DataModelUtil.java +++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/DataModelUtil.java @@ -18,49 +18,9 @@ package org.openecomp.sdc.tosca.services; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.NotSerializableException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.ListIterator; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; - import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; -import org.onap.sdc.tosca.datatypes.model.AttributeDefinition; -import org.onap.sdc.tosca.datatypes.model.CapabilityAssignment; -import org.onap.sdc.tosca.datatypes.model.CapabilityDefinition; -import org.onap.sdc.tosca.datatypes.model.Constraint; -import org.onap.sdc.tosca.datatypes.model.EntrySchema; -import org.onap.sdc.tosca.datatypes.model.GroupDefinition; -import org.onap.sdc.tosca.datatypes.model.Import; -import org.onap.sdc.tosca.datatypes.model.InterfaceDefinition; -import org.onap.sdc.tosca.datatypes.model.InterfaceDefinitionType; -import org.onap.sdc.tosca.datatypes.model.InterfaceType; -import org.onap.sdc.tosca.datatypes.model.NodeTemplate; -import org.onap.sdc.tosca.datatypes.model.NodeType; -import org.onap.sdc.tosca.datatypes.model.OperationDefinition; -import org.onap.sdc.tosca.datatypes.model.OperationDefinitionTemplate; -import org.onap.sdc.tosca.datatypes.model.OperationDefinitionType; -import org.onap.sdc.tosca.datatypes.model.ParameterDefinition; -import org.onap.sdc.tosca.datatypes.model.PolicyDefinition; -import org.onap.sdc.tosca.datatypes.model.PropertyDefinition; -import org.onap.sdc.tosca.datatypes.model.RelationshipTemplate; -import org.onap.sdc.tosca.datatypes.model.RequirementAssignment; -import org.onap.sdc.tosca.datatypes.model.RequirementDefinition; -import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; -import org.onap.sdc.tosca.datatypes.model.SubstitutionMapping; -import org.onap.sdc.tosca.datatypes.model.TopologyTemplate; +import org.onap.sdc.tosca.datatypes.model.*; import org.onap.sdc.tosca.datatypes.model.heatextend.ParameterDefinitionExt; import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; import org.onap.sdc.tosca.services.YamlUtil; @@ -72,13 +32,12 @@ import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.tosca.datatypes.ToscaCapabilityType; import org.openecomp.sdc.tosca.datatypes.ToscaFunctions; import org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType; -import org.openecomp.sdc.tosca.errors.CreateInterfaceObjectErrorBuilder; -import org.openecomp.sdc.tosca.errors.CreateInterfaceOperationObjectErrorBuilder; -import org.openecomp.sdc.tosca.errors.InvalidAddActionNullEntityErrorBuilder; -import org.openecomp.sdc.tosca.errors.InvalidRequirementAssignmentErrorBuilder; -import org.openecomp.sdc.tosca.errors.ToscaInvalidInterfaceValueErrorBuilder; +import org.openecomp.sdc.tosca.errors.*; import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl; +import java.io.*; +import java.util.*; + /** * The type Data model util. */ @@ -723,11 +682,11 @@ public class DataModelUtil { if (CollectionUtils.isEmpty(templateRequirements)) { return nodeTemplateRequirementsAssignment; } - YamlUtil yamlUtil = new YamlUtil(); + ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); for (Map<String, RequirementAssignment> requirementAssignmentMap : templateRequirements) { for (Map.Entry<String, RequirementAssignment> requirementEntry : requirementAssignmentMap.entrySet()) { RequirementAssignment requirementAssignment = - (yamlUtil.yamlToObject(yamlUtil.objectToYaml(requirementEntry.getValue()), + (toscaExtensionYamlUtil.yamlToObject(toscaExtensionYamlUtil.objectToYaml(requirementEntry.getValue()), RequirementAssignment.class)); nodeTemplateRequirementsAssignment.put(requirementEntry.getKey(), requirementAssignment); } @@ -782,10 +741,10 @@ public class DataModelUtil { List<RequirementAssignment> matchRequirementAssignmentList = new ArrayList<>(); for (Map<String, RequirementAssignment> requirementMap : requirementsAssignmentList) { if (requirementMap.containsKey(requirementKey)) { - YamlUtil yamlUtil = new YamlUtil(); - RequirementAssignment requirementAssignment = - (yamlUtil.yamlToObject(yamlUtil.objectToYaml(requirementMap.get(requirementKey)), - RequirementAssignment.class)); + ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); + RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil.yamlToObject( + toscaExtensionYamlUtil.objectToYaml(requirementMap.get(requirementKey)), + RequirementAssignment.class)); matchRequirementAssignmentList.add(requirementAssignment); } } @@ -1311,17 +1270,17 @@ public class DataModelUtil { private static <T extends OperationDefinition> void updateInterfaceDefinitionOperations(Map<String, Object> interfaceAsMap, InterfaceDefinition interfaceDefinition) { - { - Set<String> fieldNames = CommonUtil.getClassFieldNames(InterfaceDefinitionType.class); - Optional<? extends OperationDefinition> operationDefinition; - - for (Map.Entry<String, Object> entry : interfaceAsMap.entrySet()) { - operationDefinition = createOperation(entry.getKey(), entry.getValue(), fieldNames, - interfaceDefinition instanceof InterfaceDefinitionType ? OperationDefinitionType.class : - OperationDefinitionTemplate.class); - operationDefinition.ifPresent(operation -> interfaceDefinition.addOperation(entry.getKey(), operation)); - } + + Set<String> fieldNames = CommonUtil.getClassFieldNames(InterfaceDefinitionType.class); + Optional<? extends OperationDefinition> operationDefinition; + + for (Map.Entry<String, Object> entry : interfaceAsMap.entrySet()) { + operationDefinition = createOperation(entry.getKey(), entry.getValue(), fieldNames, + interfaceDefinition instanceof InterfaceDefinitionType ? OperationDefinitionType.class : + OperationDefinitionTemplate.class); + operationDefinition.ifPresent(operation -> interfaceDefinition.addOperation(entry.getKey(), operation)); } + } diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImpl.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImpl.java index 46e58bdc81..5e0f2f2e41 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImpl.java +++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImpl.java @@ -19,50 +19,22 @@ package org.openecomp.sdc.tosca.services.impl; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; +import org.onap.sdc.tosca.datatypes.model.*; +import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; import org.openecomp.core.utilities.CommonMethods; import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.common.errors.SdcRuntimeException; import org.openecomp.sdc.tosca.datatypes.ToscaElementTypes; import org.openecomp.sdc.tosca.datatypes.ToscaFlatData; -import org.onap.sdc.tosca.datatypes.model.AttributeDefinition; -import org.onap.sdc.tosca.datatypes.model.CapabilityDefinition; -import org.onap.sdc.tosca.datatypes.model.CapabilityType; -import org.onap.sdc.tosca.datatypes.model.DefinitionOfDataType; -import org.onap.sdc.tosca.datatypes.model.DataType; -import org.onap.sdc.tosca.datatypes.model.Import; -import org.onap.sdc.tosca.datatypes.model.InterfaceDefinitionType; -import org.onap.sdc.tosca.datatypes.model.NodeTemplate; -import org.onap.sdc.tosca.datatypes.model.NodeType; -import org.onap.sdc.tosca.datatypes.model.ParameterDefinition; -import org.onap.sdc.tosca.datatypes.model.PropertyDefinition; -import org.onap.sdc.tosca.datatypes.model.PropertyType; -import org.onap.sdc.tosca.datatypes.model.RequirementAssignment; -import org.onap.sdc.tosca.datatypes.model.RequirementDefinition; -import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; -import org.openecomp.sdc.tosca.errors.CreateInterfaceObjectErrorBuilder; -import org.openecomp.sdc.tosca.errors.ToscaElementTypeNotFoundErrorBuilder; -import org.openecomp.sdc.tosca.errors.ToscaFileNotFoundErrorBuilder; -import org.openecomp.sdc.tosca.errors.ToscaInvalidEntryNotFoundErrorBuilder; -import org.openecomp.sdc.tosca.errors.ToscaInvalidSubstituteNodeTemplatePropertiesErrorBuilder; -import org.openecomp.sdc.tosca.errors.ToscaInvalidSubstitutionServiceTemplateErrorBuilder; +import org.openecomp.sdc.tosca.errors.*; import org.openecomp.sdc.tosca.services.DataModelUtil; -import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; import org.openecomp.sdc.tosca.services.ToscaAnalyzerService; import org.openecomp.sdc.tosca.services.ToscaConstants; +import org.openecomp.sdc.tosca.services.ToscaUtil; -import java.util.ArrayList; -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.Objects; -import java.util.Optional; -import java.util.Set; import java.lang.reflect.InvocationTargetException; - -import org.openecomp.sdc.tosca.services.ToscaUtil; +import java.util.*; public class ToscaAnalyzerServiceImpl implements ToscaAnalyzerService { @@ -272,7 +244,7 @@ public class ToscaAnalyzerServiceImpl implements ToscaAnalyzerService { != null) { Object serviceTemplateFilter = substitutableNodeTemplate.getProperties().get(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME); - if (serviceTemplateFilter != null && serviceTemplateFilter instanceof Map) { + if (serviceTemplateFilter instanceof Map) { Object substituteServiceTemplate = ((Map) serviceTemplateFilter).get(ToscaConstants.SUBSTITUTE_SERVICE_TEMPLATE_PROPERTY_NAME); handleNoSubstituteServiceTemplate(substituteNodeTemplateId, substituteServiceTemplate); @@ -660,7 +632,7 @@ public class ToscaAnalyzerServiceImpl implements ToscaAnalyzerService { DataType targetDataType = (DataType) flatData.getFlatEntity(); DataType sourceDataType = serviceTemplate.getData_types().get(typeId); derivedFrom = sourceDataType.getDerived_from(); - if (derivedFrom != null) { + if (derivedFrom != null && !isPrimitiveType(derivedFrom)) { boolean isEntityFound = scanAnFlatEntity(elementType, derivedFrom, flatData, serviceTemplate, toscaModel, filesScanned, rootScanStartInx); @@ -675,6 +647,12 @@ public class ToscaAnalyzerServiceImpl implements ToscaAnalyzerService { return false; } + private static boolean isPrimitiveType(String toscaType) { + return (toscaType.equals(PropertyType.STRING.getDisplayName()) || toscaType.equals(PropertyType.INTEGER + .getDisplayName()) + || toscaType.equals(PropertyType.FLOAT.getDisplayName())); + } + private boolean enrichCapabilityType(ToscaElementTypes elementType, String typeId, ToscaFlatData flatData, ServiceTemplate serviceTemplate, ToscaServiceModel toscaModel, List<String> filesScanned, int rootScanStartInx) { @@ -789,7 +767,11 @@ public class ToscaAnalyzerServiceImpl implements ToscaAnalyzerService { combineInterface.setOperations( CommonMethods.mergeMaps(targetInterface.getOperations(), sourceInterface.getOperations())); - return DataModelUtil.convertInterfaceDefinitionTypeToObj(combineInterface).get(); + Optional<Object> interfaceDefObject = DataModelUtil.convertInterfaceDefinitionTypeToObj(combineInterface); + if( !interfaceDefObject.isPresent()){ + throw new SdcRuntimeException("Illegal Statement"); + } + return interfaceDefObject.get(); } private void combineDataTypeInfo(DataType sourceDataType, DataType targetDataType) { diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java index 6fb10ac1e0..3938d8f427 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java @@ -60,7 +60,11 @@ import org.openecomp.sdc.tosca.services.ToscaConstants; public class ToscaModelTest { + public static final String FIRST_NODE_TEMPLATE = "firstNodeTemplate"; + public static final String REQ1 = "req1"; + public static final String REQ2 = "req2"; private YamlUtil yamlUtil = new YamlUtil(); + private ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); private static final String INTERFACE_ID = "inter_1"; private static final String NODE_TEMPLATE_ID = "firstNodeTemplate"; private static final String NODE_TYPE_ID = "compute_node_type"; @@ -77,6 +81,7 @@ public class ToscaModelTest { private static final String PRIMARY_IMPL = "myImpl.yaml"; private static final String DEPENDENCY_NAME = "script1.sh"; private static final String STRING_TYPE = "string"; + private static final String ST_WITH_SERVICE_FILTER = "/serviceTemplateWithServiceFilter.yaml"; @Test public void testServiceTemplateJavaToYaml() { @@ -254,8 +259,8 @@ public class ToscaModelTest { reqAssignment2.setRelationship("relationB"); Map<String, RequirementAssignment> nodeTemplateRequirement1 = new HashMap<>(); Map<String, RequirementAssignment> nodeTemplateRequirement2 = new HashMap<>(); - nodeTemplateRequirement1.put("req1", reqAssignment1); - nodeTemplateRequirement2.put("req2", reqAssignment2); + nodeTemplateRequirement1.put(REQ1, reqAssignment1); + nodeTemplateRequirement2.put(REQ2, reqAssignment2); nodeTemplate.setRequirements(new ArrayList<>()); nodeTemplate.getRequirements().add(nodeTemplateRequirement1); nodeTemplate.getRequirements().add(nodeTemplateRequirement2); @@ -419,12 +424,40 @@ public class ToscaModelTest { } } + @Test + public void testServiceFilter() throws IOException { + ServiceTemplate serviceTemplateWithServiceFilter = getServiceTemplateExt(BASE_DIR + ST_WITH_SERVICE_FILTER); + + NodeTemplate firstNodeTemplate = + DataModelUtil.getNodeTemplate(serviceTemplateWithServiceFilter, FIRST_NODE_TEMPLATE); + Map<String, RequirementAssignment> nodeTemplateRequirements = + DataModelUtil.getNodeTemplateRequirements(firstNodeTemplate); + + Object req1 = nodeTemplateRequirements.get(REQ1); + Assert.assertEquals(true, req1 instanceof org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment); + Assert.assertNotNull(((org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment)req1).getService_filter()); + + Object req2 = nodeTemplateRequirements.get(REQ2); + Assert.assertEquals(true, req2 instanceof org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment); + Assert.assertNotNull(((org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment)req2).getService_filter()); + + String serviceTemplateYaml = toscaExtensionYamlUtil.objectToYaml(serviceTemplateWithServiceFilter); + Assert.assertNotNull(serviceTemplateYaml); + + } + private ServiceTemplate getServiceTemplate(String inputPath) throws IOException { try (InputStream yamlFile = yamlUtil.loadYamlFileIs(inputPath)) { return yamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); } } + private ServiceTemplate getServiceTemplateExt(String inputPath) throws IOException { + try (InputStream yamlFile = toscaExtensionYamlUtil.loadYamlFileIs(inputPath)) { + return toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + } + } + private InterfaceType createInterfaceType() { OperationDefinition operationDefinition = createOperationDefinition(); InterfaceType interfaceType = new InterfaceType(); diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImplTest.java b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImplTest.java index 71647a68a2..d9e77e1f84 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImplTest.java +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImplTest.java @@ -16,57 +16,30 @@ package org.openecomp.sdc.tosca.services.impl; -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; +import org.junit.*; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.runners.MockitoJUnitRunner; -import org.onap.sdc.tosca.datatypes.model.OperationDefinitionType; +import org.onap.sdc.tosca.datatypes.model.*; +import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.tosca.TestUtil; import org.openecomp.sdc.tosca.datatypes.ToscaElementTypes; import org.openecomp.sdc.tosca.datatypes.ToscaFlatData; import org.openecomp.sdc.tosca.datatypes.ToscaNodeType; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; -import org.onap.sdc.tosca.datatypes.model.NodeTemplate; -import org.onap.sdc.tosca.datatypes.model.NodeType; -import org.onap.sdc.tosca.datatypes.model.ParameterDefinition; -import org.onap.sdc.tosca.datatypes.model.PropertyDefinition; -import org.onap.sdc.tosca.datatypes.model.RequirementAssignment; -import org.onap.sdc.tosca.datatypes.model.RequirementDefinition; -import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; -import org.onap.sdc.tosca.datatypes.model.SubstitutionMapping; -import org.onap.sdc.tosca.datatypes.model.TopologyTemplate; -import org.onap.sdc.tosca.datatypes.model.CapabilityDefinition; -import org.onap.sdc.tosca.datatypes.model.Import; import org.openecomp.sdc.tosca.services.DataModelUtil; -import org.onap.sdc.tosca.datatypes.model.InterfaceType; -import org.onap.sdc.tosca.datatypes.model.InterfaceDefinitionType; -import org.onap.sdc.tosca.datatypes.model.DataType; import org.openecomp.sdc.tosca.services.ToscaAnalyzerService; import org.openecomp.sdc.tosca.services.ToscaConstants; -import org.onap.sdc.tosca.datatypes.model.DefinitionOfDataType; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; import java.io.IOException; +import java.io.InputStream; +import java.util.*; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import static org.mockito.Mockito.when; -import static org.junit.Assert.assertEquals; - -import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; @RunWith(MockitoJUnitRunner.class) @@ -249,6 +222,32 @@ public class ToscaAnalyzerServiceImplTest { } @Test + public void testGetFlatEntityDataTypeDerivedFromPrimitive() throws Exception { + ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); + try (InputStream yamlFile = toscaExtensionYamlUtil.loadYamlFileIs( + "/mock/analyzerService/ServiceTemplateDatatypeFlatTest.yaml")) { + + ServiceTemplate serviceTemplateFromYaml = + toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + + ToscaFlatData flatData = toscaAnalyzerService.getFlatEntity(ToscaElementTypes.DATA_TYPE, + "org.openecomp.datatypes.heat.network.MyNewString", serviceTemplateFromYaml, toscaServiceModel); + + Assert.assertNotNull(flatData); + Assert.assertNotNull(flatData.getFlatEntity()); + DataType flatEntity = (DataType) flatData.getFlatEntity(); + Assert.assertEquals("org.openecomp.datatypes.heat.network.MyString", flatEntity.getDerived_from()); + Assert.assertEquals(2, flatEntity.getConstraints().size()); + Assert.assertNotNull(flatEntity.getConstraints().get(0).getValid_values()); + Assert.assertNotNull(flatEntity.getConstraints().get(1).getMax_length()); + + List<String> inheritanceHierarchyType = flatData.getInheritanceHierarchyType(); + Assert.assertNotNull(inheritanceHierarchyType); + Assert.assertEquals(2, inheritanceHierarchyType.size()); + } + } + + @Test public void testCalculateExposedRequirements() throws Exception { RequirementDefinition rd = new RequirementDefinition(); rd.setCapability("tosca.capabilities.Node"); @@ -360,8 +359,7 @@ public class ToscaAnalyzerServiceImplTest { ra.setNode("server_cmaui"); ra.setRelationship("tosca.relationships.network.BindsTo"); - NodeTemplate port0 = - serviceTemplateFromYaml.getTopology_template().getNode_templates().get("cmaui_port_0"); + NodeTemplate port0 = serviceTemplateFromYaml.getTopology_template().getNode_templates().get("cmaui_port_0"); //Test With Empty requirementId Assert.assertEquals(false, toscaAnalyzerService.isRequirementExistInNodeTemplate(port0, "", ra)); @@ -386,8 +384,7 @@ public class ToscaAnalyzerServiceImplTest { ServiceTemplate serviceTemplateFromYaml = toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); - NodeTemplate port0 = - serviceTemplateFromYaml.getTopology_template().getNode_templates().get("cmaui_port_0"); + NodeTemplate port0 = serviceTemplateFromYaml.getTopology_template().getNode_templates().get("cmaui_port_0"); List<RequirementAssignment> reqList = toscaAnalyzerService.getRequirements(port0, ToscaConstants.BINDING_REQUIREMENT_ID); assertEquals(1, reqList.size()); diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/mock/analyzerService/ServiceTemplateDatatypeFlatTest.yaml b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/mock/analyzerService/ServiceTemplateDatatypeFlatTest.yaml new file mode 100644 index 0000000000..d7dcdca111 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/mock/analyzerService/ServiceTemplateDatatypeFlatTest.yaml @@ -0,0 +1,200 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +metadata: + template_name: nested +imports: +- NeutronPortGlobalTypes: + file: NeutronPortGlobalTypesServiceTemplate.yaml +- NeutronNetGlobalTypes: + file: NeutronNetGlobalTypesServiceTemplate.yaml +- CommonGlobalTypes: + file: CommonGlobalTypesServiceTemplate.yaml +- CinderVolumeGlobalTypes: + file: CinderVolumeGlobalTypesServiceTemplate.yaml +- ContrailNetworkRuleGlobalType: + file: ContrailNetworkRuleGlobalTypeServiceTemplate.yaml +- NeutronSecurityRulesGlobalTypes: + file: NeutronSecurityRulesGlobalTypesServiceTemplate.yaml +- NovaServerGlobalTypes: + file: NovaServerGlobalTypesServiceTemplate.yaml +- ContrailVirtualNetworkGlobalType: + file: ContrailVirtualNetworkGlobalTypeServiceTemplate.yaml +- AbstractSubstituteGlobalTypes: + file: AbstractSubstituteGlobalTypesServiceTemplate.yaml +- nested: + file: GlobalSubstitutionTypesServiceTemplate.yaml +node_types: + org.openecomp.resource.vfc.nodes.heat.cmaui_image: + derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server + properties: + admin_pass: + description: The administrator password for the server + type: string + status: SUPPORTED + default: overridden default value + required: false + new_property: + description: new property + type: string + status: SUPPORTED + required: false +data_types: + org.openecomp.datatypes.heat.network.MyString: + derived_from: string + constraints: + - max_length: 50 + org.openecomp.datatypes.heat.network.MyNewString: + derived_from: org.openecomp.datatypes.heat.network.MyString + description: My new MAC/IP address pairs + constraints: + - valid_values: + - A + - B +topology_template: + inputs: + cmaui_names: + hidden: false + immutable: false + type: list + description: CMAUI1, CMAUI2 server names + entry_schema: + type: String + p1: + hidden: false + immutable: false + type: string + description: UID of OAM network + cmaui_image: + hidden: false + immutable: false + type: string + description: Image for CMAUI server + cmaui_flavor: + hidden: false + immutable: false + type: string + description: Flavor for CMAUI server + security_group_name: + hidden: false + immutable: false + description: not impotrtant + availability_zone_0: + label: availabilityzone name + hidden: false + immutable: false + type: string + description: availabilityzone name + node_templates: + server_cmaui: + type: org.openecomp.resource.vfc.nodes.heat.cmaui_image + properties: + flavor: + get_input: cmaui_flavor + availability_zone: + get_input: availability_zone_0 + image: + get_input: cmaui_image + name: + get_input: + - cmaui_names + - 0 + cmaui_port_0: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + replacement_policy: AUTO + security_groups: + - get_input: security_group_name + fixed_ips: + - ip_address: + get_input: + - cmaui_oam_ips + - 0 + network: + get_input: p1 + requirements: + - binding: + capability: tosca.capabilities.network.Bindable + node: server_cmaui + relationship: tosca.relationships.network.BindsTo + cmaui1_port_1: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + properties: + replacement_policy: AUTO + security_groups: + - get_input: security_group_name + fixed_ips: + - subnet: subnetNameVal + ip_address: + get_input: + - cmaui_oam_ips + - 1 + - subnet: subnetNameVal2 + ip_address: + get_input: + - cmaui_oam_ips + - 1 + network: jsa_net + requirements: + - link: + capability: tosca.capabilities.network.Linkable + node: jsa_net1 + relationship: tosca.relationships.network.LinksTo + - link: + capability: tosca.capabilities.network.Linkable + node: jsa_net2 + relationship: tosca.relationships.network.LinksTo + - binding: + capability: tosca.capabilities.network.Bindable + node: server_cmaui + relationship: tosca.relationships.network.BindsTo + jsa_net1: + type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net + properties: + shared: true + network_name: + get_input: jsa_net_name + jsa_net2: + type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net + properties: + shared: true + network_name: + get_input: jsa_net_name + groups: + nested: + type: org.openecomp.groups.heat.HeatStack + properties: + heat_file: ../Artifacts/nested.yml + description: cmaui server template for vMMSC + members: + - server_cmaui + - cmaui_port_0 + substitution_mappings: + node_type: org.openecomp.resource.abstract.nodes.heat.nested + capabilities: + host_server_cmaui: + - server_cmaui + - host + os_server_cmaui: + - server_cmaui + - os + endpoint_server_cmaui: + - server_cmaui + - endpoint + binding_server_cmaui: + - server_cmaui + - binding + scalable_server_cmaui: + - server_cmaui + - scalable + attachment_cmaui_port_0: + - cmaui_port_0 + - attachment + requirements: + local_storage_server_cmaui: + - server_cmaui + - local_storage + link_cmaui_port_0: + - cmaui_port_0 + - link + link_cmaui_port_invalid: + - cmaui_port_9 + - link diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/mock/model/serviceTemplateWithServiceFilter.yaml b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/mock/model/serviceTemplateWithServiceFilter.yaml new file mode 100644 index 0000000000..e1a49a46c0 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/mock/model/serviceTemplateWithServiceFilter.yaml @@ -0,0 +1,95 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +metadata: + template_name: Test + template_author: OPENECOMP + template_version: 1.0.0 +description: testing desc tosca service template +imports: +- myfile1: + file: path1/path2/file1.yaml +- myfile2: + file: path1/path2/file2.yaml +artifact_types: + one_artifact: + mime_type: application/java-archive + file_ext: + - yaml + - xml +node_types: + compute_node_type: + derived_from: tosca.nodes.Root + version: 1.0.0 + description: tosca compute test + properties: + cpu_num: + type: integer + description: Number of CPUs requested for a software node instance + required: true + default: 1 + status: SUPPORTED + constraints: + - greater_or_equal: 5.0 + - equal: 5 + - greater_than: 6.02 + - in_range: + - 0 + - UNBOUNDED + attributes: + attDef1: + type: string + default: hi + status: SUPPORTED + requirements: + - re1: + capability: tosca.cap1 + occurrences: + - 5 + - 1 + capabilities: + cap1: + type: tosca.cap + valid_source_types: + - node1 + - node2 + occurrences: + - 1 + - UNBOUNDED +topology_template: + description: topologi template descroption + inputs: + inParam1: + type: string + description: desc + required: false + default: my default val + constraints: + - greater_than: 6 + - greater_or_equal: 9 + entry_schema: + type: tosca.myType + node_templates: + firstNodeTemplate: + type: nodeTypeRef + directives: + - selectable + - substitutable + properties: + prop2: '{ get_input: my_mysql_rootpw }' + prop1: abcd + attributes: + att2: '{ get_input: my_mysql_rootpw }' + att1: att1Val + requirements: + - req1: + service_filter: + properties: + - name : [{get_input : inParam1}] + - req2: + service_filter: + tosca_id: {get_input : inParam1} + substitution_mappings: + node_type: myNodeType.node + capabilities: + database_endpoint: + - database + - database_endpoint |