Add substitution_mapping attributes mapping 19/114219/4
authorvasraz <vasyl.razinkov@est.tech>
Tue, 20 Oct 2020 17:16:28 +0000 (18:16 +0100)
committerS�bastien Determe <sebastien.determe@intl.att.com>
Thu, 5 Nov 2020 11:22:14 +0000 (11:22 +0000)
Add support of mapping the outputs to attributes in substitution_mapping

Change-Id: Ifbe95a1fdfd476aa7aca17502ee9b30bea906874
Signed-off-by: Vasyl Razinkov <vasyl.razinkov@est.tech>
Issue-ID: SDC-3320

catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/main/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImpl.java
catalog-be/src/main/java/org/openecomp/sdc/be/tosca/ToscaExportHandler.java
catalog-be/src/main/java/org/openecomp/sdc/be/tosca/model/SubstitutionMapping.java
catalog-be/src/test/java/org/openecomp/sdc/be/tosca/model/SubstitutionMappingTest.java [deleted file]
catalog-model/src/main/java/org/openecomp/sdc/be/model/Component.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/OutputDefinition.java [new file with mode: 0644]
common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/datatypes/model/SubstitutionMappingTest.java [deleted file]
openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/DataModelUtil.java

index 0c8b86b..801f1ee 100644 (file)
@@ -223,11 +223,13 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator {
 
     private void handleSubstitutionMappings(final ToscaTemplate componentToscaTemplate, final String nsNodeTypeName) {
         final SubstitutionMapping substitutionMapping = new SubstitutionMapping();
-        substitutionMapping.setNode_type(nsNodeTypeName);        
+        substitutionMapping.setNode_type(nsNodeTypeName);
         final SubstitutionMapping onapSubstitutionMapping = componentToscaTemplate.getTopology_template().getSubstitution_mappings();
         if (onapSubstitutionMapping != null) {
-               substitutionMapping.setRequirements(onapSubstitutionMapping.getRequirements());
-               substitutionMapping.setCapabilities(onapSubstitutionMapping.getCapabilities());
+            substitutionMapping.setRequirements(onapSubstitutionMapping.getRequirements());
+            substitutionMapping.setCapabilities(onapSubstitutionMapping.getCapabilities());
+            substitutionMapping.setProperties(onapSubstitutionMapping.getProperties());
+            substitutionMapping.setAttributes(onapSubstitutionMapping.getAttributes());
         }
         componentToscaTemplate.getTopology_template().setSubstitution_mappings(substitutionMapping);
     }
index d0c14f7..08c3d18 100644 (file)
@@ -373,6 +373,11 @@ public class ToscaExportHandler {
             substitutionMapping.setProperties(propertyMappingMap);
         }
 
+        final Map<String, String[]> attributesMappingMap = buildSubstitutionMappingAttributesMapping(component);
+        if (!attributesMappingMap.isEmpty()) {
+            substitutionMapping.setAttributes(attributesMappingMap);
+        }
+
         topologyTemplate.setSubstitution_mappings(substitutionMapping);
 
         toscaNode.setTopology_template(topologyTemplate);
@@ -1751,6 +1756,20 @@ public class ToscaExportHandler {
             );
     }
 
+    private Map<String, String[]> buildSubstitutionMappingAttributesMapping(final Component component) {
+        if (component == null || CollectionUtils.isEmpty(component.getOutputs())) {
+            return Collections.emptyMap();
+        }
+        return component.getOutputs().stream()
+            .map(PropertyDataDefinition::getName)
+            .collect(
+                Collectors.toMap(
+                    outputName -> outputName,
+                    outputName -> new String[]{outputName},
+                    (outputName1, outputName2) -> outputName1)
+            );
+    }
+
     Optional<Map<String, ToscaProperty>> getProxyNodeTypeProperties(Component proxyComponent,
                                                                     Map<String, DataTypeDefinition>
                                                                         dataTypes) {
index 1a2a138..7b70a0b 100644 (file)
@@ -39,4 +39,5 @@ public class SubstitutionMapping {
     private Map<String, String[]> requirements;
     private NodeFilter substitution_filter;
     private Map<String, String[]> properties;
+    private Map<String, String[]> attributes;
 }
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/model/SubstitutionMappingTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/model/SubstitutionMappingTest.java
deleted file mode 100644 (file)
index 8898259..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.tosca.model;
-
-import org.junit.Test;
-
-import java.util.Map;
-
-
-public class SubstitutionMappingTest {
-
-       private SubstitutionMapping createTestSubject() {
-               return new SubstitutionMapping();
-       }
-
-       
-       @Test
-       public void testGetNode_type() throws Exception {
-               SubstitutionMapping testSubject;
-               String result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getNode_type();
-       }
-
-       
-       @Test
-       public void testSetNode_type() throws Exception {
-               SubstitutionMapping testSubject;
-               String node_type = "";
-
-               // default test
-               testSubject = createTestSubject();
-               testSubject.setNode_type(node_type);
-       }
-
-       
-       @Test
-       public void testGetCapabilities() throws Exception {
-               SubstitutionMapping testSubject;
-               Map<String, String[]> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getCapabilities();
-       }
-
-       
-       @Test
-       public void testSetCapabilities() throws Exception {
-               SubstitutionMapping testSubject;
-               Map<String, String[]> capabilities = null;
-
-               // default test
-               testSubject = createTestSubject();
-               testSubject.setCapabilities(capabilities);
-       }
-
-       
-       @Test
-       public void testGetRequirements() throws Exception {
-               SubstitutionMapping testSubject;
-               Map<String, String[]> result;
-
-               // default test
-               testSubject = createTestSubject();
-               result = testSubject.getRequirements();
-       }
-
-       
-       @Test
-       public void testSetRequirements() throws Exception {
-               SubstitutionMapping testSubject;
-               Map<String, String[]> requirements = null;
-
-               // default test
-               testSubject = createTestSubject();
-               testSubject.setRequirements(requirements);
-       }
-}
index 8f58a3c..bf9c327 100644 (file)
@@ -78,6 +78,7 @@ public abstract class Component implements PropertiesOwner {
     private Map<String, List<RequirementDefinition>> requirements;
     private Map<String, List<ComponentInstanceInterface>> componentInstancesInterfaces;
     private List<InputDefinition> inputs;
+    private List<OutputDefinition> outputs;
     private List<GroupDefinition> groups;
     private Map<String, PolicyDefinition> policies;
     private String derivedFromGenericType;
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/OutputDefinition.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/OutputDefinition.java
new file mode 100644 (file)
index 0000000..fc8cd0f
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2020 Nordix Foundation
+ *  ================================================================================
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdc.be.model;
+
+import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
+
+public class OutputDefinition extends PropertyDefinition {
+
+    public OutputDefinition(final PropertyDataDefinition propertyDataDefinition) {
+        super(propertyDataDefinition);
+    }
+
+    public OutputDefinition(PropertyDefinition propertyDefinition) {
+        super(propertyDefinition);
+    }
+
+    public OutputDefinition(final OutputDefinition outputDefinition) {
+        super(outputDefinition);
+    }
+
+}
diff --git a/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/datatypes/model/SubstitutionMappingTest.java b/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/datatypes/model/SubstitutionMappingTest.java
deleted file mode 100644 (file)
index 888a51c..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2019 Nokia. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.sdc.tosca.datatypes.model;
-
-import org.junit.Test;
-
-import static com.google.code.beanmatchers.BeanMatchers.hasValidGettersAndSetters;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-public class SubstitutionMappingTest {
-    @Test
-    public void shouldHaveValidGettersAndSetters() {
-        assertThat(SubstitutionMapping.class, hasValidGettersAndSetters());
-    }
-}
\ No newline at end of file
index f718837..22b6eb8 100644 (file)
@@ -1146,7 +1146,7 @@ public class DataModelUtil {
         substitutionMapping.setCapabilities(manageCapabilityMapping(substitutionNodeType.getCapabilities(),
                 mapping.get(ToscaConstants.CAPABILITY)));
         substitutionMapping.setRequirements(
-                manageRequirementMapping(substitutionNodeType.getRequirements(), mapping.get("requirement")));
+                manageRequirementMapping(substitutionNodeType.getRequirements(), mapping.get(ToscaConstants.REQUIREMENT)));
         return substitutionMapping;
     }