From ba6a9e6fc163854c96c5178a9b9cd306248a41e0 Mon Sep 17 00:00:00 2001 From: Mojahidul Islam Date: Tue, 9 Jul 2019 11:16:35 +0530 Subject: Incrrct intrfc type populated in tosca for S proxy Incorrect interface type is populated in tosca for Service proxy for Local interface operations Change-Id: If7933d6537a14567297e716f154c2a48f7f34797 Issue-ID: SDC-2423 Signed-off-by: Mojahidul Islam --- .../validation/InterfaceOperationValidation.java | 7 -- .../tosca/utils/InterfacesOperationsToscaUtil.java | 21 +++++- .../InterfaceOperationValidationTest.java | 12 ---- .../utils/InterfacesOperationsToscaUtilTest.java | 77 ++++++++++++---------- 4 files changed, 62 insertions(+), 55 deletions(-) (limited to 'catalog-be') diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/InterfaceOperationValidation.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/InterfaceOperationValidation.java index 2e94139b2b..22757d0944 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/InterfaceOperationValidation.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/InterfaceOperationValidation.java @@ -66,13 +66,6 @@ public class InterfaceOperationValidation { InterfaceDefinition storedInterfaceDefinition, Map globalInterfaceTypes, boolean isUpdate) { - Either validateAllowedOperationCountOnLocalInterfaceType = - validateAllowedOperationCountOnLocalInterfaceType(inputInterfaceDefinition, storedInterfaceDefinition, - globalInterfaceTypes, isUpdate); - if (validateAllowedOperationCountOnLocalInterfaceType.isRight()) { - return validateAllowedOperationCountOnLocalInterfaceType; - } - Either validateAllowedOperationsOnGlobalInterfaceType = validateAllowedOperationsOnGlobalInterfaceType(inputInterfaceDefinition, globalInterfaceTypes); if (validateAllowedOperationsOnGlobalInterfaceType.isRight()) { diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/InterfacesOperationsToscaUtil.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/InterfacesOperationsToscaUtil.java index 87c4bfa2a6..0360386158 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/InterfacesOperationsToscaUtil.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/utils/InterfacesOperationsToscaUtil.java @@ -45,6 +45,7 @@ import org.openecomp.sdc.be.tosca.model.ToscaProperty; public class InterfacesOperationsToscaUtil { private static final String DERIVED_FROM_STANDARD_INTERFACE = "tosca.interfaces.node.lifecycle.Standard"; + private static final String DERIVED_FROM_BASE_DEFAULT = "org.openecomp.interfaces.node.lifecycle."; private static final String OPERATIONS_KEY = "operations"; private static final String DEFAULT = "default"; @@ -53,6 +54,7 @@ public class InterfacesOperationsToscaUtil { private static final String DEFAULTP = "defaultp"; public static final String SELF = "SELF"; + private static final String LOCAL_INTERFACE_TYPE = "Local"; private InterfacesOperationsToscaUtil() { } @@ -91,7 +93,7 @@ public class InterfacesOperationsToscaUtil { Map operationsMap = (Map) interfacesAsMap.remove(OPERATIONS_KEY); interfacesAsMap.putAll(operationsMap); - toscaInterfaceTypes.put(interfaceDefinition.getType(), interfacesAsMap); + toscaInterfaceTypes.put(getInterfaceType(component, LOCAL_INTERFACE_TYPE), interfacesAsMap); } } return MapUtils.isNotEmpty(toscaInterfaceTypes) ? toscaInterfaceTypes : null; @@ -139,7 +141,12 @@ public class InterfacesOperationsToscaUtil { Map toscaInterfaceDefinitions = new HashMap<>(); for (InterfaceDefinition interfaceDefinition : interfaces.values()) { ToscaInterfaceDefinition toscaInterfaceDefinition = new ToscaInterfaceDefinition(); - final String interfaceType = interfaceDefinition.getType(); + String interfaceType; + if(componentInstance != null && LOCAL_INTERFACE_TYPE.equals(interfaceDefinition.getType())) { + interfaceType = DERIVED_FROM_BASE_DEFAULT + componentInstance.getSourceModelName(); + } else { + interfaceType = getInterfaceType(component, interfaceDefinition.getType()); + } toscaInterfaceDefinition.setType(interfaceType); final Map operations = interfaceDefinition.getOperations(); Map toscaOperations = new HashMap<>(); @@ -282,6 +289,16 @@ public class InterfacesOperationsToscaUtil { return toscaInputValue; } + private static String getInterfaceType(Component component, String interfaceType) { + if (LOCAL_INTERFACE_TYPE.equals(interfaceType)) { + return DERIVED_FROM_BASE_DEFAULT + + component.getComponentMetadataDefinition() + .getMetadataDataDefinition().getSystemName(); + } + + return interfaceType; + } + private static Map getObjectAsMap(Object obj) { ObjectMapper objectMapper = new ObjectMapper(); if (obj instanceof ToscaInterfaceDefinition) { diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/validation/InterfaceOperationValidationTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/validation/InterfaceOperationValidationTest.java index 29bc8ec43f..826405ca87 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/validation/InterfaceOperationValidationTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/validation/InterfaceOperationValidationTest.java @@ -291,18 +291,6 @@ public class InterfaceOperationValidationTest { component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isRight()); } - @Test - public void shouldFailValidateAllowedOperationCountOnLocalInterfaceType() { - InterfaceDefinition inputInterfaceDefinition = - InterfaceOperationTestUtils.createMockInterface(interfaceType1 - , operationId, operationType1); - Assert.assertTrue(interfaceOperationValidationUtilTest - .validateInterfaceOperations(inputInterfaceDefinition, component, - component.getInterfaces().get(interfaceType1), - InterfaceOperationTestUtils.createMockInterfaceTypeMap( - interfaceType2, operationType1), false).isRight()); - } - @Test public void shouldFailValidateAllowedOperationsOnGlobalInterfaceType() { InterfaceDefinition inputInterfaceDefinition = diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/utils/InterfacesOperationsToscaUtilTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/utils/InterfacesOperationsToscaUtilTest.java index 7ddf71a04a..5235b12219 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/utils/InterfacesOperationsToscaUtilTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/utils/InterfacesOperationsToscaUtilTest.java @@ -25,11 +25,13 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import org.apache.commons.collections4.MapUtils; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -46,6 +48,7 @@ import org.openecomp.sdc.be.model.InputDefinition; import org.openecomp.sdc.be.model.InterfaceDefinition; import org.openecomp.sdc.be.model.Resource; import org.openecomp.sdc.be.model.Service; +import org.openecomp.sdc.be.model.ServiceMetadataDefinition; import org.openecomp.sdc.be.model.tosca.ToscaFunctions; import org.openecomp.sdc.be.tosca.ToscaExportHandler; import org.openecomp.sdc.be.tosca.ToscaRepresentation; @@ -77,8 +80,11 @@ public class InterfacesOperationsToscaUtilTest { public void addInterfaceTypeElementToResource() { Component component = new Resource(); component.setNormalizedName("normalizedComponentName"); + component.setMetadataDefinition(new ServiceMetadataDefinition()); + component.getComponentMetadataDefinition().getMetadataDataDefinition().setName("NodeTypeName"); + component.getComponentMetadataDefinition().getMetadataDataDefinition().setSystemName("NodeTypeName"); InterfaceDefinition addedInterface = new InterfaceDefinition(); - addedInterface.setType("interface.types.test_resource_name"); + addedInterface.setType("Local"); addOperationsToInterface(component, addedInterface, 5, 3, true, false); final String interfaceType = "normalizedComponentName-interface"; component.setInterfaces(new HashMap<>()); @@ -92,15 +98,18 @@ public class InterfacesOperationsToscaUtilTest { final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template); Assert.assertFalse(toscaRepresentation.getMainYaml().contains("operations")); - Assert.assertTrue(toscaRepresentation.getMainYaml().contains("interface.types.test_resource_name")); + Assert.assertTrue(toscaRepresentation.getMainYaml().contains("NodeTypeName")); } @Test public void addInterfaceTypeElementToService() { Component component = new Service(); component.setNormalizedName("normalizedServiceComponentName"); + component.setMetadataDefinition(new ServiceMetadataDefinition()); + component.getComponentMetadataDefinition().getMetadataDataDefinition().setName("NodeTypeName"); + component.getComponentMetadataDefinition().getMetadataDataDefinition().setSystemName("NodeTypeName"); InterfaceDefinition addedInterface = new InterfaceDefinition(); - addedInterface.setType("interface.types.test_service_name"); + addedInterface.setType("Local"); addOperationsToInterface(component, addedInterface, 5, 3, true, false); final String interfaceType = "normalizedServiceComponentName-interface"; component.setInterfaces(new HashMap<>()); @@ -114,7 +123,7 @@ public class InterfacesOperationsToscaUtilTest { final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template); Assert.assertFalse(toscaRepresentation.getMainYaml().contains("operations")); - Assert.assertTrue(toscaRepresentation.getMainYaml().contains("interface.types.test_service_name")); + Assert.assertTrue(toscaRepresentation.getMainYaml().contains("NodeTypeName")); } @Test @@ -213,36 +222,6 @@ public class InterfacesOperationsToscaUtilTest { Assert.assertTrue(mainYaml.contains("com.some.resource.or.other.resourceName")); } -// @Test -// public void addInterfaceDefinitionElementToService() { -// Component component = new Service(); -// component.setNormalizedName("normalizedServiceComponentName"); -// InterfaceDefinition addedInterface = new InterfaceDefinition(); -// addedInterface.setToscaResourceName("com.some.service.or.other.serviceName"); -// -// addOperationsToInterface(addedInterface, 3, 2, true); -// final String interfaceType = "normalizedServiceComponentName-interface"; -// component.setInterfaces(new HashMap<>()); -// component.getInterfaces().put(interfaceType, addedInterface); -// ToscaNodeType nodeType = new ToscaNodeType(); -// InterfacesOperationsToscaUtil.addInterfaceDefinitionElement(component, nodeType); -// -// ToscaExportHandler handler = new ToscaExportHandler(); -// ToscaTemplate template = new ToscaTemplate("testService"); -// Map nodeTypes = new HashMap<>(); -// nodeTypes.put("test", nodeType); -// template.setNode_types(nodeTypes); -// final ToscaRepresentation toscaRepresentation = handler.createToscaRepresentation(template); -// -// Assert.assertFalse(toscaRepresentation.getMainYaml().contains("operations")); -// Assert.assertTrue(toscaRepresentation.getMainYaml().contains("serviceName:")); -// Assert.assertTrue(toscaRepresentation.getMainYaml().contains("inputs:")); -// Assert.assertFalse(toscaRepresentation.getMainYaml().contains("defaultp")); -// Assert.assertTrue(toscaRepresentation.getMainYaml().contains("has description")); -// Assert.assertTrue(toscaRepresentation.getMainYaml().contains("naming_function_")); -// Assert.assertTrue(toscaRepresentation.getMainYaml().contains("com.some.service.or.other.serviceName")); -// } - @Test public void addInterfaceDefinitionElement_noInputs() { Component component = new Resource(); @@ -521,4 +500,34 @@ public class InterfacesOperationsToscaUtilTest { } } } + + @Test + public void testAddInterfaceTypeElementGetCorrectLocalInterfaceName() { + Service service = new Service(); + service.setMetadataDefinition(new ServiceMetadataDefinition()); + service.getComponentMetadataDefinition().getMetadataDataDefinition().setName("LocalInterface"); + service.getComponentMetadataDefinition().getMetadataDataDefinition().setSystemName("LocalInterface"); + service.setInterfaces(Collections.singletonMap("Local", new InterfaceDefinition("Local", null, new HashMap<>()))); + + Map resultMap = InterfacesOperationsToscaUtil.addInterfaceTypeElement(service, + Collections.singletonList("org.openecomp.interfaces.node.lifecycle.Standard")); + + Assert.assertTrue(MapUtils.isNotEmpty(resultMap) + && resultMap.containsKey("org.openecomp.interfaces.node.lifecycle.LocalInterface")); + } + + @Test + public void testAddInterfaceTypeElementNoTypeChangeIfNotLocal() { + Service service = new Service(); + service.setMetadataDefinition(new ServiceMetadataDefinition()); + service.getComponentMetadataDefinition().getMetadataDataDefinition().setName("LocalInterface"); + service.setInterfaces(Collections.singletonMap("NotLocal", new InterfaceDefinition("NotLocal", null, + new HashMap<>()))); + + Map resultMap = InterfacesOperationsToscaUtil.getInterfacesMap(service, null, + service.getInterfaces(), null, false, false); + + Assert.assertTrue(MapUtils.isNotEmpty(resultMap) + && resultMap.containsKey("NotLocal")); + } } -- cgit 1.2.3-korg