aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib
diff options
context:
space:
mode:
authortalio <tali.orenbach@amdocs.com>2017-11-14 16:07:58 +0200
committertalio <tali.orenbach@amdocs.com>2017-11-14 16:17:02 +0200
commitedf44a7fcc351eb304bc2f84e8d71414014cb0c0 (patch)
tree59eaf70cbb1e063c6bfddc0e60690ce4b79e68ab /openecomp-be/lib
parent316bb2532b2d012b126402ceead0365192cf1008 (diff)
forwarder test
add unit tests for forwarder healer Issue-Id : SDC-653 Change-Id: I06954e855aac09d16422929203926aa983269b92 Signed-off-by: talio <tali.orenbach@amdocs.com>
Diffstat (limited to 'openecomp-be/lib')
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ForwarderCapabilityHealer.java15
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/ForwarderCapabilityHealerTest.java148
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/util/TestUtil.java108
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/capabilities.yml157
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/nodes.yml1362
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/relationships.yml68
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/capabilities.yml160
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/nodes.yml1364
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/relationships.yml72
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testNoPorts/in/Nested_pd_serverServiceTemplate.yaml116
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testNoPorts/out/Nested_pd_serverServiceTemplate.yaml116
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingContrailPort/in/Nested_pd_serverServiceTemplate.yaml120
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingContrailPort/out/Nested_pd_serverServiceTemplate.yaml123
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtContrailPort/in/Nested_pd_serverServiceTemplate.yaml120
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtContrailPort/out/Nested_pd_serverServiceTemplate.yaml123
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtNeutronPort/in/Nested_pd_serverServiceTemplate.yaml120
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtNeutronPort/out/Nested_pd_serverServiceTemplate.yaml123
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingNeutronPort/in/Nested_pd_serverServiceTemplate.yaml120
-rw-r--r--openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingNeutronPort/out/Nested_pd_serverServiceTemplate.yaml123
19 files changed, 4656 insertions, 2 deletions
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ForwarderCapabilityHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ForwarderCapabilityHealer.java
index 038a0d889a..c2d7c2c5e4 100644
--- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ForwarderCapabilityHealer.java
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ForwarderCapabilityHealer.java
@@ -28,12 +28,23 @@ public class ForwarderCapabilityHealer implements Healer {
private MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
- private final ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao =
- ServiceModelDaoFactory.getInstance().createInterface();
+ private final ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao;
private static ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
private static final String FORWARDER_CAPABILITY_ID = "Forwarder";
private static final String UNDERSCORE = "_";
+ public ForwarderCapabilityHealer() {
+ this.serviceModelDao =
+ ServiceModelDaoFactory.getInstance().createInterface();
+ }
+
+ public ForwarderCapabilityHealer(ServiceModelDao<ToscaServiceModel, ServiceElement>
+ serviceModelDao,
+ ToscaAnalyzerService toscaAnalyzerService){
+ this.serviceModelDao = serviceModelDao;
+ this.toscaAnalyzerService = toscaAnalyzerService;
+ }
+
@Override
public Object heal(Map<String, Object> healingParams) throws Exception {
String vspId = (String) healingParams.get(SdcCommon.VSP_ID);
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/ForwarderCapabilityHealerTest.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/ForwarderCapabilityHealerTest.java
new file mode 100644
index 0000000000..e1d6a9ded8
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/ForwarderCapabilityHealerTest.java
@@ -0,0 +1,148 @@
+package org.openecomp.sdc.healing.healers;
+
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.openecomp.core.model.dao.ServiceModelDao;
+import org.openecomp.core.model.types.ServiceElement;
+import org.openecomp.sdc.common.togglz.ToggleableFeature;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.healing.healers.util.TestUtil;
+import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
+import org.openecomp.sdc.tosca.services.ToscaAnalyzerService;
+import org.openecomp.sdc.versioning.dao.types.Version;
+import org.togglz.testing.TestFeatureManager;
+import org.togglz.testing.TestFeatureManagerProvider;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.eq;
+
+public class ForwarderCapabilityHealerTest {
+ private static final String IN_SUFFIX = "/in";
+ private static final String OUT_SUFFIX = "/out";
+ private static final String BASE_DIRECTORY = "/mock/healers/forwarder";
+ private static final String ENTRY_DEFINITION_SERVICE_TEMPLATE = "MainServiceTemplate.yaml";
+ private static TestFeatureManager manager;
+
+ private Map<String,Object> params = new HashMap<>();
+
+ @Mock
+ private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao;
+ @Mock
+ private ToscaAnalyzerService toscaAnalyzerService;
+ @InjectMocks
+ private ForwarderCapabilityHealer forwarderCapabilityHealer;
+
+ @BeforeClass
+ public static void enableForwarderFeature(){
+ manager = new TestFeatureManager(ToggleableFeature.class);
+ if (!ToggleableFeature.FORWARDER_CAPABILITY.isActive()) {
+ manager.enable(ToggleableFeature.FORWARDER_CAPABILITY);
+ }
+ }
+
+ @AfterClass
+ public static void disableForwarderFeature() {
+ manager.disable(ToggleableFeature.FORWARDER_CAPABILITY);
+ manager = null;
+ TestFeatureManagerProvider.setFeatureManager(null);
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(ForwarderCapabilityHealerTest.this);
+ params.put(SdcCommon.VSP_ID,"1");
+ params.put(SdcCommon.VERSION, new Version(1,1));
+ }
+
+
+ @Test
+ public void testHealingSubstitutionMappingsNeutronPort() throws Exception {
+ testForwarderHealer(
+ "/testSubMappingNeutronPort", "org.openecomp.resource.cp.nodes.heat.network.neutron.Port", true);
+ }
+
+ @Test
+ public void testHealingSubstitutionMappingsContrailPort() throws Exception {
+ testForwarderHealer(
+ "/testSubMappingContrailPort", "org.openecomp.resource.cp.nodes.heat.network.contrail.Port", true);
+ }
+
+ @Test
+ public void testHealingSubstitutionMappingsExtNeutronPort() throws Exception {
+ testForwarderHealer(
+ "/testSubMappingExtNeutronPort", "org.openecomp.resource.cp.v2.extNeutronCP", true);
+ }
+
+ @Test
+ public void testHealingSubstitutionMappingsExtContrailPort() throws Exception {
+ testForwarderHealer(
+ "/testSubMappingExtContrailPort", "org.openecomp.resource.cp.v2.extContrailCP", true);
+ }
+
+ @Test
+ public void testHealingGlobalServiceTemplates () throws Exception {
+ testForwarderHealer("/testGlobalServiceTemplates", null, false);
+ }
+
+ @Test
+ public void testHealingNoPorts() throws Exception {
+ testForwarderHealer("/testNoPorts", null, false);
+ }
+
+ private void testForwarderHealer(String testDirectory,
+ String portType,
+ boolean needToTestSubMapping) throws Exception {
+
+ ToscaServiceModel toscaServiceModel = TestUtil.loadToscaServiceModel(
+ BASE_DIRECTORY + testDirectory + IN_SUFFIX, null, ENTRY_DEFINITION_SERVICE_TEMPLATE);
+
+ Mockito.doReturn(toscaServiceModel)
+ .when(serviceModelDao).getServiceModel(any(), any());
+
+ if(needToTestSubMapping) {
+ Mockito.doReturn(true)
+ .when(toscaAnalyzerService).isTypeOf(
+ eq(getMockPortNodeTemplate(portType)),
+ eq(ToscaNodeType.NATIVE_NETWORK_PORT),
+ anyObject(), anyObject());
+ }
+
+ validateServiceModelAfterHealing(testDirectory);
+ }
+
+ private void validateServiceModelAfterHealing(String testDirectory) throws Exception {
+ Optional<ToscaServiceModel> serviceModelObject =
+ (Optional<ToscaServiceModel>) forwarderCapabilityHealer.heal(params);
+
+ Assert.assertTrue(serviceModelObject.isPresent());
+ TestUtil
+ .compareToscaServiceModels(
+ BASE_DIRECTORY + testDirectory + OUT_SUFFIX, serviceModelObject.get());
+ }
+
+ private NodeTemplate getMockPortNodeTemplate(String portType) {
+ NodeTemplate nodeTemplate = new NodeTemplate();
+ nodeTemplate.setType(portType);
+
+ Map<String, Object> properties = new HashMap<>();
+ properties.put("exCP_naming", "port_pd01_port_exCP_naming");
+ nodeTemplate.setProperties(properties);
+
+ return nodeTemplate;
+ }
+
+}
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/util/TestUtil.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/util/TestUtil.java
new file mode 100644
index 0000000000..20ba5ebf19
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/java/org/openecomp/sdc/healing/healers/util/TestUtil.java
@@ -0,0 +1,108 @@
+package org.openecomp.sdc.healing.healers.util;
+
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil;
+import org.openecomp.sdc.tosca.services.ToscaUtil;
+import org.springframework.util.Assert;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.nio.file.NotDirectoryException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+public class TestUtil {
+ private final static Logger log = (Logger) LoggerFactory.getLogger
+ (TestUtil.class.getName());
+
+ public static ToscaServiceModel loadToscaServiceModel(String serviceTemplatesPath,
+ String globalServiceTemplatesPath,
+ String entryDefinitionServiceTemplate)
+ throws IOException {
+ ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
+ Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
+ if (entryDefinitionServiceTemplate == null) {
+ entryDefinitionServiceTemplate = "MainServiceTemplate.yaml";
+ }
+
+ loadServiceTemplates(serviceTemplatesPath, toscaExtensionYamlUtil, serviceTemplates);
+ if (globalServiceTemplatesPath != null) {
+ loadServiceTemplates(globalServiceTemplatesPath, toscaExtensionYamlUtil, serviceTemplates);
+ }
+
+ return new ToscaServiceModel(null, serviceTemplates, entryDefinitionServiceTemplate);
+ }
+
+ private static void loadServiceTemplates(String serviceTemplatesPath,
+ ToscaExtensionYamlUtil toscaExtensionYamlUtil,
+ Map<String, ServiceTemplate> serviceTemplates)
+ throws IOException {
+ URL urlFile = TestUtil.class.getResource(serviceTemplatesPath);
+ if (urlFile != null) {
+ File pathFile = new File(urlFile.getFile());
+ Collection<File> files = org.apache.commons.io.FileUtils.listFiles(pathFile, null, true);
+ if (files != null) {
+ addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil);
+ } else {
+ throw new NotDirectoryException(serviceTemplatesPath);
+ }
+ } else {
+ throw new NotDirectoryException(serviceTemplatesPath);
+ }
+ }
+
+ private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates,
+ Collection<File> files,
+ ToscaExtensionYamlUtil toscaExtensionYamlUtil)
+ throws IOException {
+ for (File file : files) {
+ try (InputStream yamlFile = new FileInputStream(file)) {
+ ServiceTemplate serviceTemplateFromYaml =
+ toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
+ serviceTemplates.put(ToscaUtil.getServiceTemplateFileName(serviceTemplateFromYaml), serviceTemplateFromYaml);
+ try {
+ yamlFile.close();
+ } catch (IOException ignore) {
+ log.debug("",ignore);
+ }
+ } catch (FileNotFoundException exception) {
+ throw exception;
+ } catch (IOException exception) {
+ throw exception;
+ }
+ }
+ }
+
+ public static void compareToscaServiceModels(String expectedServiceModelPath,
+ ToscaServiceModel actualServiceModel)
+ throws IOException {
+ ToscaServiceModel expectedServiceModel =
+ loadToscaServiceModel(expectedServiceModelPath, null, null);
+
+ Map<String, ServiceTemplate> expectedServiceTemplates =
+ new HashMap<>(expectedServiceModel.getServiceTemplates());
+ Map<String, ServiceTemplate> actualServiceTemplates =
+ new HashMap<>(actualServiceModel.getServiceTemplates());
+
+ for (Map.Entry<String, ServiceTemplate> expectedServiceTemplateEntry : expectedServiceTemplates.entrySet()) {
+ String serviceTemplateName = expectedServiceTemplateEntry.getKey();
+ ServiceTemplate actualServiceTemplate =
+ actualServiceTemplates.get(serviceTemplateName);
+
+ Assert.notNull(actualServiceTemplate,
+ "Missing service template in service model : " + serviceTemplateName);
+ org.junit.Assert.assertEquals("Difference in file " + serviceTemplateName,
+ JsonUtil.object2Json(expectedServiceTemplateEntry.getValue()),
+ JsonUtil.object2Json(actualServiceTemplate));
+ }
+ }
+}
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/capabilities.yml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/capabilities.yml
new file mode 100644
index 0000000000..285d6b28f3
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/capabilities.yml
@@ -0,0 +1,157 @@
+#
+# 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.
+#
+
+tosca_definitions_version: tosca_simple_openecomp_1_0
+
+metadata:
+ filename: openecomp/capabilities.yml
+ version: '1.0'
+
+imports:
+- openecomp_index:
+ file: _index.yml
+
+capability_types:
+
+ org.openecomp.capabilities.attachment.DeploymentFlavor:
+ derived_from: tosca.capabilities.Attachment
+ description: The Node capability indicates the base capabilities of a TOSCA Node Type.
+ properties:
+ DeploymentFlavor:
+ type: map
+ description: Deployment flavors instance
+ required: true
+ status: SUPPORTED
+ entry_schema:
+ type: org.openecomp.datatypes.DeploymentFlavor
+
+ org.openecomp.capabilities.metric.SnmpTrap:
+ derived_from: org.openecomp.capabilities.Metric
+ description: A node type that includes the Metric capability indicates that it can be monitored using snmp trap.
+ properties:
+ oid:
+ description: Object Id of the metric
+ type: string
+ status: SUPPORTED
+ required: true
+
+ org.openecomp.capabilities.AllottedResource:
+ derived_from: tosca.capabilities.Root
+
+ org.openecomp.capabilities.metric.SnmpPolling:
+ derived_from: org.openecomp.capabilities.Metric
+ description: A node type that includes the Metric capability indicates that it can be monitored using snmp polling.
+ properties:
+ oid:
+ description: Object Id of the metric
+ type: string
+ status: SUPPORTED
+ required: true
+
+ org.openecomp.capabilities.metric.Ceilometer:
+ derived_from: org.openecomp.capabilities.Metric
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ properties:
+ name:
+ description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+ type: string
+ status: SUPPORTED
+ required: true
+
+ org.openecomp.capabilities.Metric:
+ derived_from: tosca.capabilities.Endpoint
+ description: A node type that includes the Metric capability indicates that it can be monitored.
+ properties:
+ unit:
+ description: Unit of the metric value
+ type: string
+ status: SUPPORTED
+ required: true
+ description:
+ description: Description of the metric
+ type: string
+ status: SUPPORTED
+ required: false
+ type:
+ description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc.
+ type: string
+ status: SUPPORTED
+ required: true
+ category:
+ description: Category of the metric, for an example, compute, disk, network, storage and etc.
+ type: string
+ status: SUPPORTED
+ required: false
+ attributes:
+ value:
+ description: Runtime monitored value
+ type: string
+ status: SUPPORTED
+
+ tosca.capabilities.nfv.VirtualLinkable:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.Metric:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.VirtualBindable:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.VirtualCompute:
+ derived_from: tosca.capabilities.Root
+ properties:
+ virtual_memory:
+ type: tosca.datatypes.nfv.VirtualMemory
+ requested_additional_capabilities:
+ entry_schema:
+ type: tosca.datatypes.nfv.RequestedAdditionalCapability
+ required: false
+ type: map
+ virtual_cpu:
+ type: tosca.datatypes.nfv.VirtualCpu
+
+
+ tosca.capabilities.nfv.VirtualStorage:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.Forwarder:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.ext.Compute.Container.Architecture:
+ derived_from: tosca.capabilities.Root
+ properties:
+ num_cpus:
+ required: false
+ type: string
+ flavor_extra_specs:
+ entry_schema:
+ type: string
+ required: false
+ type: map
+ mem_size:
+ required: false
+ type: string
+
+ tosca.capabilities.nfv.ext.ImageFile:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.ext.LocalAttachment:
+ derived_from: tosca.capabilities.Root
+ # New capability types for Port Mirroring
+ org.openecomp.capabilities.PortMirroring:
+ derived_from: tosca.capabilities.Root
+ properties:
+ connection_point:
+ type: org.openecomp.datatypes.PortMirroringConnectionPointDescription
+ required: true \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/nodes.yml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/nodes.yml
new file mode 100644
index 0000000000..900bef2226
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/nodes.yml
@@ -0,0 +1,1362 @@
+#
+# 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.
+#
+
+tosca_definitions_version: tosca_simple_openecomp_1_0
+
+metadata:
+ filename: openecomp/nodes.yml
+ version: '1.0'
+
+imports:
+- openecomp_index:
+ file: _index.yml
+
+node_types:
+
+ org.openecomp.resource.vl.nodes.network.Network:
+ derived_from: tosca.nodes.network.Network
+ properties:
+ vendor:
+ type: string
+ required: false
+ vl_name:
+ type: string
+ required: false
+ capabilities:
+ end_point:
+ type: tosca.capabilities.Endpoint
+
+ org.openecomp.resource.abstract.nodes.AbstractSubstitute:
+ derived_from: tosca.nodes.Root
+ properties:
+ service_template_filter:
+ description: Substitution Filter
+ type: org.openecomp.datatypes.substitution.SubstitutionFiltering
+ status: SUPPORTED
+ required: true
+
+ org.openecomp.resource.vl.extVL:
+ derived_from: org.openecomp.resource.vl.nodes.network.Network
+ description: VF Tenant oam protected network
+ properties:
+ network_type:
+ description: OPENECOMP supported network types.
+ type: string
+ required: true
+ network_role:
+ description: |
+ Unique label that defines the role that this network performs. example: vce oam network, vnat sr-iov1 network
+ type: string
+ required: true
+ network_scope:
+ description: |
+ Uniquely identifies the network scope. Valid values for the network scope includes: VF - VF-level network. Intra-VF network which connects the VFCs (VMs) inside the VF. SERVICE - Service-level network. Intra-Service network which connects the VFs within the service GLOBAL - Global network which can be shared by multiple services
+ type: string
+ constraints:
+ - valid_values:
+ - VF
+ - SERVICE
+ - GLOBAL
+ network_technology:
+ description: OPENECOMP supported network technology
+ type: string
+ required: true
+ network_ecomp_naming:
+ type: org.openecomp.datatypes.EcompNaming
+ required: true
+ network_homing:
+ type: org.openecomp.datatypes.EcompHoming
+ required: true
+ network_assignments:
+ type: org.openecomp.datatypes.network.NetworkAssignments
+ required: true
+ provider_network:
+ type: org.openecomp.datatypes.network.ProviderNetwork
+ required: true
+ network_flows:
+ type: org.openecomp.datatypes.network.NetworkFlows
+ required: false
+
+
+ org.openecomp.resource.vfc.nodes.Compute:
+ derived_from: tosca.nodes.Compute
+ capabilities:
+ disk.ephemeral.size:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ instance:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ memory:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.iops:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.read.requests:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ cpu.delta:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.capacity:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.read.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.write.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.latency:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.read.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.usage:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ cpu_util:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.allocation:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.write.requests.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.write.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.latency:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ cpu:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.write.requests:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.write.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.read.requests:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.root.size:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.write.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ vcpus:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.iops:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.usage:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.read.requests.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.write.requests.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.allocation:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.read.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.read.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ memory.usage:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.capacity:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ memory.resident:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.write.requests:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+
+ org.openecomp.resource.abstract.nodes.DFAbstractSubstitute:
+ derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+ properties:
+ license_feature_group_ref:
+ description: refrence to license feature group
+ type: string
+ status: SUPPORTED
+ required: true
+ requirements:
+ - deployment_flavor:
+ capability: org.openecomp.capabilities.attachment.DeploymentFlavor
+ node: org.openecomp.resource.nodes.DeploymentFlavor
+ relationship: org.openecomp.relationships.AttachesTo
+ occurrences:
+ - 1
+ - UNBOUNDED
+
+ org.openecomp.resource.abstract.nodes.ComplexVFC:
+ derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+
+ org.openecomp.resource.abstract.nodes.VFC:
+ derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+ properties:
+ high_availablity:
+ description: high_availablity
+ type: string
+ status: SUPPORTED
+ required: false
+ vm_image_name:
+ description: Master image_name volume id
+ type: string
+ status: SUPPORTED
+ required: true
+ vm_flavor_name:
+ description: Master image_name volume id
+ type: string
+ status: SUPPORTED
+ required: true
+ nfc_naming_code:
+ description: nfc code for instance naming
+ type: string
+ status: SUPPORTED
+ required: false
+ nfc_code:
+ type: string
+ description: nfc code
+ status: SUPPORTED
+ required: false
+ nfc_function:
+ type: string
+ description: nfc function
+ status: SUPPORTED
+ required: false
+ vm_type_tag:
+ description: vm type based on naming Convention
+ type: string
+ status: SUPPORTED
+ required: false
+ vfc_naming:
+ description: vfc naming
+ type: org.openecomp.datatypes.Naming
+ status: SUPPORTED
+ default: false
+ required: false
+ min_instances:
+ description: Minimum number of VFC Instances
+ type: integer
+ status: SUPPORTED
+ default: 0
+ required: false
+ constraints:
+ - greater_or_equal: 0
+ max_instances:
+ description: Maximum number of VFC Instances
+ type: integer
+ status: SUPPORTED
+ required: false
+ constraints:
+ - greater_or_equal: 1
+
+ org.openecomp.resource.vl.ELine:
+ derived_from: org.openecomp.resource.vl.nodes.network.Network
+ capabilities:
+ linkable:
+ type: tosca.capabilities.network.Linkable
+ occurrences:
+ - 0
+ - 2
+
+ org.openecomp.resource.cp.nodes.network.SubInterface:
+ derived_from: tosca.nodes.network.Port
+
+ org.openecomp.resource.vl.internalVL:
+ derived_from: org.openecomp.resource.vl.nodes.network.Network
+ description: The AT&T internal (VF-level) Virtual Link
+
+ org.openecomp.resource.cp.nodes.network.Port:
+ derived_from: tosca.nodes.network.Port
+ properties:
+ network_role_tag:
+ description: Must correlate to the set of defined “network-role�? tag identifiers from the associated HEAT template
+ type: string
+ required: true
+ mac_requirements:
+ description: identifies MAC address assignments to the CP
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: false
+ vlan_requirements:
+ description: identifies vlan address assignments to the CP
+ type: list
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ required: false
+ ip_requirements:
+ description: identifies IP requirements to the CP
+ type: list
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ required: true
+ network_role:
+ description: identical to VL network_role
+ type: string
+ required: false
+ order:
+ description: The order of the CP on the compute instance (e.g. eth2).
+ type: integer
+ required: false
+ exCP_naming:
+ description: CP Name
+ type: org.openecomp.datatypes.Naming
+ required: false
+ subnetpoolid:
+ description: subnet pool id
+ type: string
+ required: false
+ capabilities:
+ network.incoming.packets.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.outgoing.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.outgoing.packets.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.outpoing.packets:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.incoming.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.incoming.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.outgoing.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.incoming.packets:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+
+ org.openecomp.resource.nodes.DeploymentFlavor:
+ derived_from: tosca.nodes.Root
+ capabilities:
+ deployment_flavor:
+ description: Allowed deployment flavors of an abstract node
+ type: org.openecomp.capabilities.attachment.DeploymentFlavor
+ occurrences:
+ - 1
+ - UNBOUNDED
+
+ org.openecomp.resource.cp.extCP:
+ derived_from: tosca.nodes.Root
+ description: The AT&T Connection Point base type all other CP derive from
+ properties:
+ network_role:
+ description: identical to VL network_role
+ type: string
+ required: true
+ order:
+ description: The order of the CP on the compute instance (e.g. eth2).
+ type: integer
+ required: true
+ network_role_tag:
+ description: Must correlate to the set of defined “network-role�? tag identifiers from the associated HEAT template
+ type: string
+ required: true
+ mac_requirements:
+ description: identifies MAC address assignments to the CP
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: false
+ vlan_requirements:
+ description: identifies vlan address assignments to the CP
+ type: list
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ required: false
+ ip_requirements:
+ description: identifies IP requirements to the CP
+ type: list
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ required: true
+ capabilities:
+ internal_connectionPoint:
+ type: tosca.capabilities.Node
+ valid_source_types:
+ - tosca.nodes.network.Port
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.network.Linkable
+ relationship: tosca.relationships.network.LinksTo
+ - virtualBinding:
+ capability: tosca.capabilities.network.Bindable
+ relationship: tosca.relationships.network.BindsTo
+ - external_virtualLink:
+ capability: tosca.capabilities.network.Linkable
+ node: org.openecomp.resource.vl.nodes.network.Network
+ relationship: tosca.relationships.network.LinksTo
+
+ org.openecomp.resource.vfc.nodes.volume:
+ derived_from: tosca.nodes.BlockStorage
+
+ ### Node types related to Deployment Flavors
+ org.openecomp.resource.abstract.nodes.VnfConfiguration:
+ derived_from: tosca.nodes.Root
+ description: a container for the available flavors
+ properties:
+ allowed_flavors:
+ description: a collection of all available flavor valuesets
+ type: map
+ entry_schema:
+ type: org.openecomp.datatypes.flavors.DeploymentFlavor
+
+ org.openecomp.resource.abstract.nodes.MultiFlavorVFC:
+ derived_from: org.openecomp.resource.abstract.nodes.VFC
+ description: Multi flavored VFC node
+ properties:
+ images:
+ type: map
+ entry_schema:
+ type: org.openecomp.datatypes.ImageInfo
+ required: false
+
+ ## New node types for Port Mirroring
+ org.openecomp.nodes.ServiceProxy:
+ derived_from: tosca.nodes.Root
+
+ org.openecomp.nodes.PortMirroringConfiguration:
+ derived_from: tosca.nodes.Root
+ requirements:
+ - source:
+ capability: org.openecomp.capabilities.PortMirroring
+ occurrences:
+ - 1
+ - UNBOUNDED
+ - collector:
+ capability: org.openecomp.capabilities.PortMirroring
+ occurrences:
+ - 1
+ - 1
+
+ org.openecomp.resource.cp.v2.extCP:
+ derived_from: org.openecomp.resource.cp.nodes.network.Port
+ description: The SDC External Connection Point base type
+ capabilities:
+ port_mirroring:
+ type: org.openecomp.capabilities.PortMirroring
+
+ org.openecomp.resource.cp.v2.extNeutronCP:
+ derived_from: org.openecomp.resource.cp.v2.extCP
+ properties:
+ port_security_enabled:
+ type: boolean
+ description: Flag to enable/disable port security on the network
+ required: false
+ status: SUPPORTED
+ device_id:
+ type: string
+ description: Device ID of this port
+ required: false
+ status: SUPPORTED
+ qos_policy:
+ type: string
+ description: The name or ID of QoS policy to attach to this network
+ required: false
+ status: SUPPORTED
+ allowed_address_pairs:
+ type: list
+ description: Additional MAC/IP address pairs allowed to pass through the port
+ required: false
+ status: SUPPORTED
+ entry_schema:
+ type: org.openecomp.datatypes.heat.network.AddressPair
+ binding:vnic_type:
+ type: string
+ description: The vnic type to be bound on the neutron port
+ required: false
+ status: SUPPORTED
+ constraints:
+ - valid_values:
+ - macvtap
+ - direct
+ - normal
+ value_specs:
+ type: map
+ description: Extra parameters to include in the request
+ required: false
+ default: {
+ }
+ status: SUPPORTED
+ entry_schema:
+ type: string
+ device_owner:
+ type: string
+ description: Name of the network owning the port
+ required: false
+ status: SUPPORTED
+ network:
+ type: string
+ description: Network this port belongs to
+ required: false
+ status: SUPPORTED
+ replacement_policy:
+ type: string
+ description: Policy on how to respond to a stack-update for this resource
+ required: false
+ default: AUTO
+ status: SUPPORTED
+ constraints:
+ - valid_values:
+ - REPLACE_ALWAYS
+ - AUTO
+ security_groups:
+ type: list
+ description: List of security group names or IDs
+ required: false
+ status: SUPPORTED
+ entry_schema:
+ type: string
+ fixed_ips:
+ type: list
+ description: Desired IPs for this port
+ required: false
+ status: SUPPORTED
+ entry_schema:
+ type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+ mac_address:
+ type: string
+ description: MAC address to give to this port
+ required: false
+ status: SUPPORTED
+ admin_state_up:
+ type: boolean
+ description: A boolean value specifying the administrative status of the network
+ required: false
+ default: true
+ status: SUPPORTED
+ name:
+ type: string
+ description: A symbolic name for this port
+ required: false
+ status: SUPPORTED
+ attributes:
+ tenant_id:
+ type: string
+ description: Tenant owning the port
+ status: SUPPORTED
+ network_id:
+ type: string
+ description: Unique identifier for the network owning the port
+ status: SUPPORTED
+ qos_policy_id:
+ type: string
+ description: The QoS policy ID attached to this network
+ status: SUPPORTED
+ show:
+ type: string
+ description: Detailed information about resource
+ status: SUPPORTED
+ subnets:
+ type: list
+ description: Subnets of this network
+ status: SUPPORTED
+ entry_schema:
+ type: string
+ status:
+ type: string
+ description: The status of the network
+ status: SUPPORTED
+ capabilities:
+ attachment:
+ type: tosca.capabilities.Attachment
+ occurrences:
+ - 1
+ - UNBOUNDED
+ binding:
+ type: tosca.capabilities.network.Bindable
+ valid_source_types:
+ - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ org.openecomp.resource.cp.v2.extContrailCP:
+ derived_from: org.openecomp.resource.cp.v2.extCP
+ properties:
+ static_routes:
+ type: list
+ description: An ordered list of static routes to be added to this interface
+ required: false
+ status: SUPPORTED
+ entry_schema:
+ type: org.openecomp.datatypes.heat.network.contrail.port.StaticRoute
+ virtual_network:
+ type: string
+ description: Virtual Network for this interface
+ required: true
+ status: SUPPORTED
+ static_route:
+ type: boolean
+ description: Static route enabled
+ required: false
+ default: false
+ status: SUPPORTED
+ allowed_address_pairs:
+ type: list
+ description: List of allowed address pair for this interface
+ required: false
+ status: SUPPORTED
+ entry_schema:
+ type: org.openecomp.datatypes.heat.network.contrail.AddressPair
+ shared_ip:
+ type: boolean
+ description: Shared ip enabled
+ required: false
+ default: false
+ status: SUPPORTED
+ ip_address:
+ type: string
+ description: IP for this interface
+ required: false
+ status: SUPPORTED
+ interface_type:
+ type: string
+ description: Interface type
+ required: true
+ status: SUPPORTED
+ constraints:
+ - valid_values:
+ - management
+ - left
+ - right
+ - other
+ attributes:
+ fq_name:
+ type: string
+ description: fq_name
+ status: SUPPORTED
+ tosca.nodes.nfv.NS.vEPC_NS:
+ derived_from: tosca.nodes.nfv.NS
+ properties:
+ vendor:
+ default: ChinaMobile
+ required: false
+ type: string
+ csarVersion:
+ default: v1.0
+ required: false
+ type: string
+ name:
+ default: vEPC_NS
+ required: false
+ type: string
+ csarProvider:
+ default: ChinaMobile
+ required: false
+ type: string
+ id:
+ default: vEPC_NS
+ required: false
+ type: string
+ version:
+ default: v1.0
+ required: false
+ type: string
+ csarType:
+ default: NSAR
+ required: false
+ type: string
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.NS.vIMS_NS:
+ derived_from: tosca.nodes.nfv.NS
+ properties:
+ vendor:
+ default: ChinaMobile
+ required: false
+ type: string
+ csarVersion:
+ default: v1.0
+ required: false
+ type: string
+ name:
+ default: vIMS_NS
+ required: false
+ type: string
+ csarProvider:
+ default: ChinaMobile
+ required: false
+ type: string
+ id:
+ default: vIMS_NS
+ required: false
+ type: string
+ version:
+ default: v1.0
+ required: false
+ type: string
+ csarType:
+ default: NSAR
+ required: false
+ type: string
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.NS:
+ derived_from: tosca.nodes.Root
+ properties:
+ vendor:
+ required: false
+ type: string
+ name:
+ required: false
+ type: string
+ id:
+ required: false
+ type: string
+ version:
+ required: false
+ type: string
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.VDU.Compute:
+ attributes:
+ private_address:
+ type: string
+ public_address:
+ type: string
+ networks:
+ type: string
+ ports:
+ type: string
+ capabilities:
+ scalable:
+ type: tosca.capabilities.Scalable
+ virtual_compute:
+ type: tosca.capabilities.nfv.VirtualCompute
+ endpoint:
+ type: tosca.capabilities.Endpoint.Admin
+ os:
+ type: tosca.capabilities.OperatingSystem
+ virtual_binding:
+ type: tosca.capabilities.nfv.VirtualBindable
+ host:
+ type: tosca.capabilities.Container
+ binding:
+ type: tosca.capabilities.network.Bindable
+ monitoring_parameter:
+ type: tosca.capabilities.nfv.Metric
+ derived_from: tosca.nodes.Root
+ properties:
+ configurable_properties:
+ entry_schema:
+ type: tosca.datatypes.nfv.VnfcConfigurableProperties
+ type: map
+ name:
+ type: string
+ nfvi_constraints:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ descrption:
+ type: string
+ boot_order:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ requirements:
+ - local_storage:
+ capability: tosca.capabilities.Attachment
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtual_storage:
+ capability: tosca.capabilities.nfv.VirtualStorage
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.VDU.VirtualStorage:
+ capabilities:
+ virtual_storage:
+ type: tosca.capabilities.nfv.VirtualStorage
+ derived_from: tosca.nodes.Root
+ properties:
+ id:
+ type: string
+ size_of_storage:
+ type: string
+ rdma_enabled:
+ required: false
+ type: boolean
+ type_of_storage:
+ type: string
+
+ tosca.nodes.nfv.VduCpd:
+ derived_from: tosca.nodes.Root
+ properties:
+ virtual_network_interface_requirements:
+ entry_schema:
+ type: tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements
+ required: false
+ type: list
+ role:
+ constraints:
+ - valid_values:
+ - root
+ - leaf
+ required: false
+ type: string
+ bitrate_requirement:
+ required: false
+ type: integer
+ description:
+ required: false
+ type: string
+ layer_protocol:
+ constraints:
+ - valid_values:
+ - ethernet
+ - mpls
+ - odu2
+ - ipv4
+ - ipv6
+ - pseudo_wire
+ type: string
+ address_data:
+ entry_schema:
+ type: tosca.datatype.nfv.AddressData
+ required: false
+ type: list
+ requirements:
+ - virtual_binding:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtual_link:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ tosca.nodes.nfv.ext.ImageFile:
+ capabilities:
+ guest_os:
+ type: tosca.capabilities.nfv.ext.GuestOs
+ image_fle:
+ type: tosca.capabilities.nfv.ext.ImageFile
+ derived_from: tosca.nodes.Root
+ properties:
+ file_url:
+ required: false
+ type: string
+ container_type:
+ required: false
+ type: string
+ name:
+ required: false
+ type: string
+ disk_format:
+ required: false
+ type: string
+ version:
+ required: false
+ type: string
+ tosca.nodes.nfv.ext.LocalStorage:
+ capabilities:
+ local_attachment:
+ type: tosca.capabilities.nfv.ext.LocalAttachment
+ derived_from: tosca.nodes.Root
+ properties:
+ size:
+ required: false
+ type: string
+ disk_type:
+ required: false
+ type: string
+ tosca.nodes.nfv.ext.zte.CP:
+ capabilities:
+ forwarder:
+ type: tosca.capabilities.nfv.Forwarder
+ derived_from: tosca.nodes.Root
+ properties:
+ guest_os_mtu:
+ required: false
+ type: integer
+ bandwidth:
+ required: false
+ type: integer
+ interface_name:
+ required: false
+ type: string
+ allowed_address_pairs:
+ entry_schema:
+ type: tosca.datatypes.nfv.ext.AddressPairs
+ required: false
+ type: list
+ ip_address:
+ required: false
+ type: string
+ bond:
+ required: false
+ type: string
+ proxiedVNFs:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ sfc_encapsulation:
+ required: false
+ type: string
+ floating_ip_address:
+ required: false
+ type: tosca.datatypes.nfv.ext.FloatingIP
+ service_ip_address:
+ required: false
+ type: string
+ mac_address:
+ required: false
+ type: string
+ proxiedVNFtype:
+ required: false
+ type: string
+ macbond:
+ required: false
+ type: string
+ vnic_type:
+ required: false
+ type: string
+ direction:
+ required: false
+ type: string
+ order:
+ required: false
+ type: integer
+ requirements:
+ - forwarder:
+ capability: tosca.capabilities.nfv.Forwarder
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtualbinding:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ tosca.nodes.nfv.ext.zte.VDU:
+ capabilities:
+ scalable:
+ type: tosca.capabilities.Scalable
+ monitoring_parameter:
+ type: tosca.capabilities.nfv.Metric
+ nfv_compute:
+ type: tosca.capabilities.nfv.ext.Compute.Container.Architecture
+ virtualbinding:
+ type: tosca.capabilities.nfv.VirtualBindable
+ derived_from: tosca.nodes.Root
+ properties:
+ manual_scale_select_vim:
+ required: false
+ type: boolean
+ vdu_type:
+ required: false
+ type: string
+ watchdog:
+ required: false
+ type: tosca.datatypes.nfv.ext.zte.WatchDog
+ name:
+ required: false
+ type: string
+ local_affinity_antiaffinity_rule:
+ required: false
+ type: tosca.datatypes.nfv.ext.LocalAffinityOrAntiAffinityRule
+ support_scaling:
+ required: false
+ type: boolean
+ storage_policy:
+ required: false
+ type: string
+ key_vdu:
+ required: false
+ type: boolean
+ location_info:
+ required: false
+ type: tosca.datatypes.nfv.ext.LocationInfo
+ inject_data_list:
+ entry_schema:
+ type: tosca.datatypes.nfv.ext.InjectData
+ required: false
+ type: list
+ requirements:
+ - guest_os:
+ capability: tosca.capabilities.nfv.ext.GuestOs
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - local_storage:
+ capability: tosca.capabilities.nfv.ext.LocalAttachment
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - volume_storage:
+ capability: tosca.capabilities.Attachment
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - dependency:
+ capability: tosca.capabilities.Node
+ occurrences:
+ - 0
+ - UNBOUNDED
+ tosca.nodes.nfv.ext.zte.VL:
+ capabilities:
+ virtual_linkable:
+ type: tosca.capabilities.nfv.VirtualLinkable
+ derived_from: tosca.nodes.Root
+ properties:
+ segmentation_id:
+ required: false
+ type: string
+ network_name:
+ required: false
+ type: string
+ is_predefined:
+ required: false
+ type: boolean
+ mtu:
+ required: false
+ type: integer
+ dns_nameservers:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ physical_network:
+ required: false
+ type: string
+ dhcp_enabled:
+ required: false
+ type: boolean
+ network_id:
+ required: false
+ type: string
+ host_routes:
+ entry_schema:
+ type: tosca.datatypes.nfv.ext.HostRouteInfo
+ required: false
+ type: list
+ ip_version:
+ required: false
+ type: integer
+ vendor:
+ required: false
+ type: string
+ name:
+ required: false
+ type: string
+ start_ip:
+ required: false
+ type: string
+ vlan_transparent:
+ required: false
+ type: boolean
+ cidr:
+ required: false
+ type: string
+ gateway_ip:
+ required: false
+ type: string
+ network_type:
+ required: false
+ type: string
+ end_ip:
+ required: false
+ type: string
+ location_info:
+ required: false
+ type: tosca.datatypes.nfv.ext.LocationInfo
+ tosca.nodes.nfv.ext.zte.VNF:
+ capabilities:
+ forwarder:
+ type: tosca.capabilities.nfv.Forwarder
+ derived_from: tosca.nodes.Root
+ properties:
+ request_reclassification:
+ required: false
+ type: boolean
+ domain_type:
+ required: false
+ type: string
+ nsh_aware:
+ required: false
+ type: boolean
+ plugin_info:
+ required: false
+ type: string
+ adjust_vnf_capacity:
+ required: false
+ type: boolean
+ vnfd_version:
+ required: false
+ type: string
+ vmnumber_overquota_alarm:
+ required: false
+ type: boolean
+ custom_properties:
+ entry_schema:
+ type: string
+ required: false
+ type: map
+ version:
+ required: false
+ type: string
+ cross_dc:
+ required: false
+ type: boolean
+ script_info:
+ required: false
+ type: string
+ vendor:
+ required: false
+ type: string
+ is_shared:
+ required: false
+ type: boolean
+ name:
+ required: false
+ type: string
+ vnf_extend_type:
+ required: false
+ type: string
+ id:
+ required: false
+ type: string
+ vnf_type:
+ required: false
+ type: string
+ is_sfc_proxy:
+ required: false
+ type: boolean
+ requirements:
+ - forwarder:
+ capability: tosca.capabilities.nfv.Forwarder
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.VnfVirtualLinkDesc:
+ capabilities:
+ monitoring_parameters:
+ type: tosca.capabilities.nfv.Metric
+ virtual_linkable:
+ type: tosca.capabilities.nfv.VirtualLinkable
+ derived_from: tosca.nodes.Root
+ properties:
+ vl_flavours:
+ entry_schema:
+ type: string
+ type: map
+ description:
+ required: false
+ type: string
+ test_access:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ connectivity_type:
+ type: tosca.datatypes.nfv.ConnectivityType
+
+ org.openecomp.nodes.ForwardingPath:
+ derived_from: tosca.nodes.Root
+ properties:
+ target_range:
+ type: list
+ entry_schema:
+ description: Identifier of the reciever port of the VNF or the service
+ type: integer
+ protocol:
+ type: string
+ description: protocol type that runs on the link
+ requirements:
+ - forwarder:
+ capability: tosca.capabilities.nfv.Forwarder
+ relationship: org.openecomp.relationships.ForwardsTo
+ occurrences: [ 0, UNBOUNDED ] \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/relationships.yml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/relationships.yml
new file mode 100644
index 0000000000..220658a8bf
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/in/openecomp/relationships.yml
@@ -0,0 +1,68 @@
+#
+# 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.
+#
+
+tosca_definitions_version: tosca_simple_openecomp_1_0
+
+metadata:
+ filename: openecomp/relationships.yml
+ version: '1.0'
+
+imports:
+- openecomp_index:
+ file: _index.yml
+
+relationship_types:
+
+ org.openecomp.relationships.VolumeAttachesTo:
+ derived_from: org.openecomp.relationships.AttachesTo
+ description: This type represents an attachment relationship for associating volume
+ properties:
+ volume_id:
+ description: The ID of the volume to be attached
+ type: string
+ status: SUPPORTED
+ required: true
+ instance_uuid:
+ description: The ID of the server to which the volume attaches
+ type: string
+ status: SUPPORTED
+ required: true
+ attributes:
+ show:
+ description: Detailed information about resource
+ type: string
+ status: SUPPORTED
+
+ org.openecomp.relationships.AttachesTo:
+ derived_from: tosca.relationships.AttachesTo
+ description: This type represents an attachment relationship
+ properties:
+ location:
+ description: The relative location (e.g., path on the file system), which provides the root location to address an attached node.
+ type: string
+ status: SUPPORTED
+ required: false
+
+ tosca.relationships.nfv.VDU.AttachedTo:
+ derived_from: tosca.relationships.Root
+ properties:
+ location:
+ required: false
+ type: string
+
+ tosca.relationships.nfv.VirtualBindsTo:
+ derived_from: tosca.relationships.Root
+
+ tosca.relationships.nfv.VirtualLinksTo:
+ derived_from: tosca.relationships.Root \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/capabilities.yml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/capabilities.yml
new file mode 100644
index 0000000000..9f0977868e
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/capabilities.yml
@@ -0,0 +1,160 @@
+#
+# 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.
+#
+
+tosca_definitions_version: tosca_simple_openecomp_1_0
+
+metadata:
+ filename: openecomp/capabilities.yml
+ version: '1.0'
+
+imports:
+- openecomp_index:
+ file: _index.yml
+
+capability_types:
+
+ org.openecomp.capabilities.attachment.DeploymentFlavor:
+ derived_from: tosca.capabilities.Attachment
+ description: The Node capability indicates the base capabilities of a TOSCA Node Type.
+ properties:
+ DeploymentFlavor:
+ type: map
+ description: Deployment flavors instance
+ required: true
+ status: SUPPORTED
+ entry_schema:
+ type: org.openecomp.datatypes.DeploymentFlavor
+
+ org.openecomp.capabilities.metric.SnmpTrap:
+ derived_from: org.openecomp.capabilities.Metric
+ description: A node type that includes the Metric capability indicates that it can be monitored using snmp trap.
+ properties:
+ oid:
+ description: Object Id of the metric
+ type: string
+ status: SUPPORTED
+ required: true
+
+ org.openecomp.capabilities.AllottedResource:
+ derived_from: tosca.capabilities.Root
+
+ org.openecomp.capabilities.metric.SnmpPolling:
+ derived_from: org.openecomp.capabilities.Metric
+ description: A node type that includes the Metric capability indicates that it can be monitored using snmp polling.
+ properties:
+ oid:
+ description: Object Id of the metric
+ type: string
+ status: SUPPORTED
+ required: true
+
+ org.openecomp.capabilities.metric.Ceilometer:
+ derived_from: org.openecomp.capabilities.Metric
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ properties:
+ name:
+ description: Ceilometer metric type name to monitor. (The name ceilometer is using)
+ type: string
+ status: SUPPORTED
+ required: true
+
+ org.openecomp.capabilities.Metric:
+ derived_from: tosca.capabilities.Endpoint
+ description: A node type that includes the Metric capability indicates that it can be monitored.
+ properties:
+ unit:
+ description: Unit of the metric value
+ type: string
+ status: SUPPORTED
+ required: true
+ description:
+ description: Description of the metric
+ type: string
+ status: SUPPORTED
+ required: false
+ type:
+ description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc.
+ type: string
+ status: SUPPORTED
+ required: true
+ category:
+ description: Category of the metric, for an example, compute, disk, network, storage and etc.
+ type: string
+ status: SUPPORTED
+ required: false
+ attributes:
+ value:
+ description: Runtime monitored value
+ type: string
+ status: SUPPORTED
+
+ tosca.capabilities.nfv.VirtualLinkable:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.Metric:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.VirtualBindable:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.VirtualCompute:
+ derived_from: tosca.capabilities.Root
+ properties:
+ virtual_memory:
+ type: tosca.datatypes.nfv.VirtualMemory
+ requested_additional_capabilities:
+ entry_schema:
+ type: tosca.datatypes.nfv.RequestedAdditionalCapability
+ required: false
+ type: map
+ virtual_cpu:
+ type: tosca.datatypes.nfv.VirtualCpu
+
+
+ tosca.capabilities.nfv.VirtualStorage:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.Forwarder:
+ derived_from: tosca.capabilities.Root
+
+ org.openecomp.capabilities.Forwarder:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.ext.Compute.Container.Architecture:
+ derived_from: tosca.capabilities.Root
+ properties:
+ num_cpus:
+ required: false
+ type: string
+ flavor_extra_specs:
+ entry_schema:
+ type: string
+ required: false
+ type: map
+ mem_size:
+ required: false
+ type: string
+
+ tosca.capabilities.nfv.ext.ImageFile:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.ext.LocalAttachment:
+ derived_from: tosca.capabilities.Root
+ # New capability types for Port Mirroring
+ org.openecomp.capabilities.PortMirroring:
+ derived_from: tosca.capabilities.Root
+ properties:
+ connection_point:
+ type: org.openecomp.datatypes.PortMirroringConnectionPointDescription
+ required: true \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/nodes.yml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/nodes.yml
new file mode 100644
index 0000000000..6b9d735554
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/nodes.yml
@@ -0,0 +1,1364 @@
+#
+# 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.
+#
+
+tosca_definitions_version: tosca_simple_openecomp_1_0
+
+metadata:
+ filename: openecomp/nodes.yml
+ version: '1.0'
+
+imports:
+- openecomp_index:
+ file: _index.yml
+
+node_types:
+
+ org.openecomp.resource.vl.nodes.network.Network:
+ derived_from: tosca.nodes.network.Network
+ properties:
+ vendor:
+ type: string
+ required: false
+ vl_name:
+ type: string
+ required: false
+ capabilities:
+ end_point:
+ type: tosca.capabilities.Endpoint
+
+ org.openecomp.resource.abstract.nodes.AbstractSubstitute:
+ derived_from: tosca.nodes.Root
+ properties:
+ service_template_filter:
+ description: Substitution Filter
+ type: org.openecomp.datatypes.substitution.SubstitutionFiltering
+ status: SUPPORTED
+ required: true
+
+ org.openecomp.resource.vl.extVL:
+ derived_from: org.openecomp.resource.vl.nodes.network.Network
+ description: VF Tenant oam protected network
+ properties:
+ network_type:
+ description: OPENECOMP supported network types.
+ type: string
+ required: true
+ network_role:
+ description: |
+ Unique label that defines the role that this network performs. example: vce oam network, vnat sr-iov1 network
+ type: string
+ required: true
+ network_scope:
+ description: |
+ Uniquely identifies the network scope. Valid values for the network scope includes: VF - VF-level network. Intra-VF network which connects the VFCs (VMs) inside the VF. SERVICE - Service-level network. Intra-Service network which connects the VFs within the service GLOBAL - Global network which can be shared by multiple services
+ type: string
+ constraints:
+ - valid_values:
+ - VF
+ - SERVICE
+ - GLOBAL
+ network_technology:
+ description: OPENECOMP supported network technology
+ type: string
+ required: true
+ network_ecomp_naming:
+ type: org.openecomp.datatypes.EcompNaming
+ required: true
+ network_homing:
+ type: org.openecomp.datatypes.EcompHoming
+ required: true
+ network_assignments:
+ type: org.openecomp.datatypes.network.NetworkAssignments
+ required: true
+ provider_network:
+ type: org.openecomp.datatypes.network.ProviderNetwork
+ required: true
+ network_flows:
+ type: org.openecomp.datatypes.network.NetworkFlows
+ required: false
+
+
+ org.openecomp.resource.vfc.nodes.Compute:
+ derived_from: tosca.nodes.Compute
+ capabilities:
+ disk.ephemeral.size:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ instance:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ memory:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.iops:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.read.requests:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ cpu.delta:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.capacity:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.read.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.write.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.latency:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.read.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.usage:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ cpu_util:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.allocation:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.write.requests.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.write.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.latency:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ cpu:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.write.requests:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.write.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.read.requests:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.root.size:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.write.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ vcpus:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.iops:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.usage:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.read.requests.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.write.requests.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.allocation:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.read.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.read.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ memory.usage:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.device.capacity:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ memory.resident:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ disk.write.requests:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+
+ org.openecomp.resource.abstract.nodes.DFAbstractSubstitute:
+ derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+ properties:
+ license_feature_group_ref:
+ description: refrence to license feature group
+ type: string
+ status: SUPPORTED
+ required: true
+ requirements:
+ - deployment_flavor:
+ capability: org.openecomp.capabilities.attachment.DeploymentFlavor
+ node: org.openecomp.resource.nodes.DeploymentFlavor
+ relationship: org.openecomp.relationships.AttachesTo
+ occurrences:
+ - 1
+ - UNBOUNDED
+
+ org.openecomp.resource.abstract.nodes.ComplexVFC:
+ derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+
+ org.openecomp.resource.abstract.nodes.VFC:
+ derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+ properties:
+ high_availablity:
+ description: high_availablity
+ type: string
+ status: SUPPORTED
+ required: false
+ vm_image_name:
+ description: Master image_name volume id
+ type: string
+ status: SUPPORTED
+ required: true
+ vm_flavor_name:
+ description: Master image_name volume id
+ type: string
+ status: SUPPORTED
+ required: true
+ nfc_naming_code:
+ description: nfc code for instance naming
+ type: string
+ status: SUPPORTED
+ required: false
+ nfc_code:
+ type: string
+ description: nfc code
+ status: SUPPORTED
+ required: false
+ nfc_function:
+ type: string
+ description: nfc function
+ status: SUPPORTED
+ required: false
+ vm_type_tag:
+ description: vm type based on naming Convention
+ type: string
+ status: SUPPORTED
+ required: false
+ vfc_naming:
+ description: vfc naming
+ type: org.openecomp.datatypes.Naming
+ status: SUPPORTED
+ default: false
+ required: false
+ min_instances:
+ description: Minimum number of VFC Instances
+ type: integer
+ status: SUPPORTED
+ default: 0
+ required: false
+ constraints:
+ - greater_or_equal: 0
+ max_instances:
+ description: Maximum number of VFC Instances
+ type: integer
+ status: SUPPORTED
+ required: false
+ constraints:
+ - greater_or_equal: 1
+
+ org.openecomp.resource.vl.ELine:
+ derived_from: org.openecomp.resource.vl.nodes.network.Network
+ capabilities:
+ linkable:
+ type: tosca.capabilities.network.Linkable
+ occurrences:
+ - 0
+ - 2
+
+ org.openecomp.resource.cp.nodes.network.SubInterface:
+ derived_from: tosca.nodes.network.Port
+
+ org.openecomp.resource.vl.internalVL:
+ derived_from: org.openecomp.resource.vl.nodes.network.Network
+ description: The AT&T internal (VF-level) Virtual Link
+
+ org.openecomp.resource.cp.nodes.network.Port:
+ derived_from: tosca.nodes.network.Port
+ properties:
+ network_role_tag:
+ description: Must correlate to the set of defined “network-role�? tag identifiers from the associated HEAT template
+ type: string
+ required: true
+ mac_requirements:
+ description: identifies MAC address assignments to the CP
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: false
+ vlan_requirements:
+ description: identifies vlan address assignments to the CP
+ type: list
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ required: false
+ ip_requirements:
+ description: identifies IP requirements to the CP
+ type: list
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ required: true
+ network_role:
+ description: identical to VL network_role
+ type: string
+ required: false
+ order:
+ description: The order of the CP on the compute instance (e.g. eth2).
+ type: integer
+ required: false
+ exCP_naming:
+ description: CP Name
+ type: org.openecomp.datatypes.Naming
+ required: false
+ subnetpoolid:
+ description: subnet pool id
+ type: string
+ required: false
+ capabilities:
+ network.incoming.packets.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.outgoing.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.outgoing.packets.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.outpoing.packets:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.incoming.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.incoming.bytes:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.outgoing.bytes.rate:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ network.incoming.packets:
+ description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+ type: org.openecomp.capabilities.metric.Ceilometer
+ occurrences:
+ - 1
+ - UNBOUNDED
+ forwarder:
+ type: org.openecomp.capabilities.Forwarder
+
+ org.openecomp.resource.nodes.DeploymentFlavor:
+ derived_from: tosca.nodes.Root
+ capabilities:
+ deployment_flavor:
+ description: Allowed deployment flavors of an abstract node
+ type: org.openecomp.capabilities.attachment.DeploymentFlavor
+ occurrences:
+ - 1
+ - UNBOUNDED
+
+ org.openecomp.resource.cp.extCP:
+ derived_from: tosca.nodes.Root
+ description: The AT&T Connection Point base type all other CP derive from
+ properties:
+ network_role:
+ description: identical to VL network_role
+ type: string
+ required: true
+ order:
+ description: The order of the CP on the compute instance (e.g. eth2).
+ type: integer
+ required: true
+ network_role_tag:
+ description: Must correlate to the set of defined “network-role�? tag identifiers from the associated HEAT template
+ type: string
+ required: true
+ mac_requirements:
+ description: identifies MAC address assignments to the CP
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: false
+ vlan_requirements:
+ description: identifies vlan address assignments to the CP
+ type: list
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ required: false
+ ip_requirements:
+ description: identifies IP requirements to the CP
+ type: list
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ required: true
+ capabilities:
+ internal_connectionPoint:
+ type: tosca.capabilities.Node
+ valid_source_types:
+ - tosca.nodes.network.Port
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.network.Linkable
+ relationship: tosca.relationships.network.LinksTo
+ - virtualBinding:
+ capability: tosca.capabilities.network.Bindable
+ relationship: tosca.relationships.network.BindsTo
+ - external_virtualLink:
+ capability: tosca.capabilities.network.Linkable
+ node: org.openecomp.resource.vl.nodes.network.Network
+ relationship: tosca.relationships.network.LinksTo
+
+ org.openecomp.resource.vfc.nodes.volume:
+ derived_from: tosca.nodes.BlockStorage
+
+ ### Node types related to Deployment Flavors
+ org.openecomp.resource.abstract.nodes.VnfConfiguration:
+ derived_from: tosca.nodes.Root
+ description: a container for the available flavors
+ properties:
+ allowed_flavors:
+ description: a collection of all available flavor valuesets
+ type: map
+ entry_schema:
+ type: org.openecomp.datatypes.flavors.DeploymentFlavor
+
+ org.openecomp.resource.abstract.nodes.MultiFlavorVFC:
+ derived_from: org.openecomp.resource.abstract.nodes.VFC
+ description: Multi flavored VFC node
+ properties:
+ images:
+ type: map
+ entry_schema:
+ type: org.openecomp.datatypes.ImageInfo
+ required: false
+
+ ## New node types for Port Mirroring
+ org.openecomp.nodes.ServiceProxy:
+ derived_from: tosca.nodes.Root
+
+ org.openecomp.nodes.PortMirroringConfiguration:
+ derived_from: tosca.nodes.Root
+ requirements:
+ - source:
+ capability: org.openecomp.capabilities.PortMirroring
+ occurrences:
+ - 1
+ - UNBOUNDED
+ - collector:
+ capability: org.openecomp.capabilities.PortMirroring
+ occurrences:
+ - 1
+ - 1
+
+ org.openecomp.resource.cp.v2.extCP:
+ derived_from: org.openecomp.resource.cp.nodes.network.Port
+ description: The SDC External Connection Point base type
+ capabilities:
+ port_mirroring:
+ type: org.openecomp.capabilities.PortMirroring
+
+ org.openecomp.resource.cp.v2.extNeutronCP:
+ derived_from: org.openecomp.resource.cp.v2.extCP
+ properties:
+ port_security_enabled:
+ type: boolean
+ description: Flag to enable/disable port security on the network
+ required: false
+ status: SUPPORTED
+ device_id:
+ type: string
+ description: Device ID of this port
+ required: false
+ status: SUPPORTED
+ qos_policy:
+ type: string
+ description: The name or ID of QoS policy to attach to this network
+ required: false
+ status: SUPPORTED
+ allowed_address_pairs:
+ type: list
+ description: Additional MAC/IP address pairs allowed to pass through the port
+ required: false
+ status: SUPPORTED
+ entry_schema:
+ type: org.openecomp.datatypes.heat.network.AddressPair
+ binding:vnic_type:
+ type: string
+ description: The vnic type to be bound on the neutron port
+ required: false
+ status: SUPPORTED
+ constraints:
+ - valid_values:
+ - macvtap
+ - direct
+ - normal
+ value_specs:
+ type: map
+ description: Extra parameters to include in the request
+ required: false
+ default: {
+ }
+ status: SUPPORTED
+ entry_schema:
+ type: string
+ device_owner:
+ type: string
+ description: Name of the network owning the port
+ required: false
+ status: SUPPORTED
+ network:
+ type: string
+ description: Network this port belongs to
+ required: false
+ status: SUPPORTED
+ replacement_policy:
+ type: string
+ description: Policy on how to respond to a stack-update for this resource
+ required: false
+ default: AUTO
+ status: SUPPORTED
+ constraints:
+ - valid_values:
+ - REPLACE_ALWAYS
+ - AUTO
+ security_groups:
+ type: list
+ description: List of security group names or IDs
+ required: false
+ status: SUPPORTED
+ entry_schema:
+ type: string
+ fixed_ips:
+ type: list
+ description: Desired IPs for this port
+ required: false
+ status: SUPPORTED
+ entry_schema:
+ type: org.openecomp.datatypes.heat.neutron.port.FixedIps
+ mac_address:
+ type: string
+ description: MAC address to give to this port
+ required: false
+ status: SUPPORTED
+ admin_state_up:
+ type: boolean
+ description: A boolean value specifying the administrative status of the network
+ required: false
+ default: true
+ status: SUPPORTED
+ name:
+ type: string
+ description: A symbolic name for this port
+ required: false
+ status: SUPPORTED
+ attributes:
+ tenant_id:
+ type: string
+ description: Tenant owning the port
+ status: SUPPORTED
+ network_id:
+ type: string
+ description: Unique identifier for the network owning the port
+ status: SUPPORTED
+ qos_policy_id:
+ type: string
+ description: The QoS policy ID attached to this network
+ status: SUPPORTED
+ show:
+ type: string
+ description: Detailed information about resource
+ status: SUPPORTED
+ subnets:
+ type: list
+ description: Subnets of this network
+ status: SUPPORTED
+ entry_schema:
+ type: string
+ status:
+ type: string
+ description: The status of the network
+ status: SUPPORTED
+ capabilities:
+ attachment:
+ type: tosca.capabilities.Attachment
+ occurrences:
+ - 1
+ - UNBOUNDED
+ binding:
+ type: tosca.capabilities.network.Bindable
+ valid_source_types:
+ - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ org.openecomp.resource.cp.v2.extContrailCP:
+ derived_from: org.openecomp.resource.cp.v2.extCP
+ properties:
+ static_routes:
+ type: list
+ description: An ordered list of static routes to be added to this interface
+ required: false
+ status: SUPPORTED
+ entry_schema:
+ type: org.openecomp.datatypes.heat.network.contrail.port.StaticRoute
+ virtual_network:
+ type: string
+ description: Virtual Network for this interface
+ required: true
+ status: SUPPORTED
+ static_route:
+ type: boolean
+ description: Static route enabled
+ required: false
+ default: false
+ status: SUPPORTED
+ allowed_address_pairs:
+ type: list
+ description: List of allowed address pair for this interface
+ required: false
+ status: SUPPORTED
+ entry_schema:
+ type: org.openecomp.datatypes.heat.network.contrail.AddressPair
+ shared_ip:
+ type: boolean
+ description: Shared ip enabled
+ required: false
+ default: false
+ status: SUPPORTED
+ ip_address:
+ type: string
+ description: IP for this interface
+ required: false
+ status: SUPPORTED
+ interface_type:
+ type: string
+ description: Interface type
+ required: true
+ status: SUPPORTED
+ constraints:
+ - valid_values:
+ - management
+ - left
+ - right
+ - other
+ attributes:
+ fq_name:
+ type: string
+ description: fq_name
+ status: SUPPORTED
+ tosca.nodes.nfv.NS.vEPC_NS:
+ derived_from: tosca.nodes.nfv.NS
+ properties:
+ vendor:
+ default: ChinaMobile
+ required: false
+ type: string
+ csarVersion:
+ default: v1.0
+ required: false
+ type: string
+ name:
+ default: vEPC_NS
+ required: false
+ type: string
+ csarProvider:
+ default: ChinaMobile
+ required: false
+ type: string
+ id:
+ default: vEPC_NS
+ required: false
+ type: string
+ version:
+ default: v1.0
+ required: false
+ type: string
+ csarType:
+ default: NSAR
+ required: false
+ type: string
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.NS.vIMS_NS:
+ derived_from: tosca.nodes.nfv.NS
+ properties:
+ vendor:
+ default: ChinaMobile
+ required: false
+ type: string
+ csarVersion:
+ default: v1.0
+ required: false
+ type: string
+ name:
+ default: vIMS_NS
+ required: false
+ type: string
+ csarProvider:
+ default: ChinaMobile
+ required: false
+ type: string
+ id:
+ default: vIMS_NS
+ required: false
+ type: string
+ version:
+ default: v1.0
+ required: false
+ type: string
+ csarType:
+ default: NSAR
+ required: false
+ type: string
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.NS:
+ derived_from: tosca.nodes.Root
+ properties:
+ vendor:
+ required: false
+ type: string
+ name:
+ required: false
+ type: string
+ id:
+ required: false
+ type: string
+ version:
+ required: false
+ type: string
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.VDU.Compute:
+ attributes:
+ private_address:
+ type: string
+ public_address:
+ type: string
+ networks:
+ type: string
+ ports:
+ type: string
+ capabilities:
+ scalable:
+ type: tosca.capabilities.Scalable
+ virtual_compute:
+ type: tosca.capabilities.nfv.VirtualCompute
+ endpoint:
+ type: tosca.capabilities.Endpoint.Admin
+ os:
+ type: tosca.capabilities.OperatingSystem
+ virtual_binding:
+ type: tosca.capabilities.nfv.VirtualBindable
+ host:
+ type: tosca.capabilities.Container
+ binding:
+ type: tosca.capabilities.network.Bindable
+ monitoring_parameter:
+ type: tosca.capabilities.nfv.Metric
+ derived_from: tosca.nodes.Root
+ properties:
+ configurable_properties:
+ entry_schema:
+ type: tosca.datatypes.nfv.VnfcConfigurableProperties
+ type: map
+ name:
+ type: string
+ nfvi_constraints:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ descrption:
+ type: string
+ boot_order:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ requirements:
+ - local_storage:
+ capability: tosca.capabilities.Attachment
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtual_storage:
+ capability: tosca.capabilities.nfv.VirtualStorage
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.VDU.VirtualStorage:
+ capabilities:
+ virtual_storage:
+ type: tosca.capabilities.nfv.VirtualStorage
+ derived_from: tosca.nodes.Root
+ properties:
+ id:
+ type: string
+ size_of_storage:
+ type: string
+ rdma_enabled:
+ required: false
+ type: boolean
+ type_of_storage:
+ type: string
+
+ tosca.nodes.nfv.VduCpd:
+ derived_from: tosca.nodes.Root
+ properties:
+ virtual_network_interface_requirements:
+ entry_schema:
+ type: tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements
+ required: false
+ type: list
+ role:
+ constraints:
+ - valid_values:
+ - root
+ - leaf
+ required: false
+ type: string
+ bitrate_requirement:
+ required: false
+ type: integer
+ description:
+ required: false
+ type: string
+ layer_protocol:
+ constraints:
+ - valid_values:
+ - ethernet
+ - mpls
+ - odu2
+ - ipv4
+ - ipv6
+ - pseudo_wire
+ type: string
+ address_data:
+ entry_schema:
+ type: tosca.datatype.nfv.AddressData
+ required: false
+ type: list
+ requirements:
+ - virtual_binding:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtual_link:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ tosca.nodes.nfv.ext.ImageFile:
+ capabilities:
+ guest_os:
+ type: tosca.capabilities.nfv.ext.GuestOs
+ image_fle:
+ type: tosca.capabilities.nfv.ext.ImageFile
+ derived_from: tosca.nodes.Root
+ properties:
+ file_url:
+ required: false
+ type: string
+ container_type:
+ required: false
+ type: string
+ name:
+ required: false
+ type: string
+ disk_format:
+ required: false
+ type: string
+ version:
+ required: false
+ type: string
+ tosca.nodes.nfv.ext.LocalStorage:
+ capabilities:
+ local_attachment:
+ type: tosca.capabilities.nfv.ext.LocalAttachment
+ derived_from: tosca.nodes.Root
+ properties:
+ size:
+ required: false
+ type: string
+ disk_type:
+ required: false
+ type: string
+ tosca.nodes.nfv.ext.zte.CP:
+ capabilities:
+ forwarder:
+ type: tosca.capabilities.nfv.Forwarder
+ derived_from: tosca.nodes.Root
+ properties:
+ guest_os_mtu:
+ required: false
+ type: integer
+ bandwidth:
+ required: false
+ type: integer
+ interface_name:
+ required: false
+ type: string
+ allowed_address_pairs:
+ entry_schema:
+ type: tosca.datatypes.nfv.ext.AddressPairs
+ required: false
+ type: list
+ ip_address:
+ required: false
+ type: string
+ bond:
+ required: false
+ type: string
+ proxiedVNFs:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ sfc_encapsulation:
+ required: false
+ type: string
+ floating_ip_address:
+ required: false
+ type: tosca.datatypes.nfv.ext.FloatingIP
+ service_ip_address:
+ required: false
+ type: string
+ mac_address:
+ required: false
+ type: string
+ proxiedVNFtype:
+ required: false
+ type: string
+ macbond:
+ required: false
+ type: string
+ vnic_type:
+ required: false
+ type: string
+ direction:
+ required: false
+ type: string
+ order:
+ required: false
+ type: integer
+ requirements:
+ - forwarder:
+ capability: tosca.capabilities.nfv.Forwarder
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtualbinding:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ tosca.nodes.nfv.ext.zte.VDU:
+ capabilities:
+ scalable:
+ type: tosca.capabilities.Scalable
+ monitoring_parameter:
+ type: tosca.capabilities.nfv.Metric
+ nfv_compute:
+ type: tosca.capabilities.nfv.ext.Compute.Container.Architecture
+ virtualbinding:
+ type: tosca.capabilities.nfv.VirtualBindable
+ derived_from: tosca.nodes.Root
+ properties:
+ manual_scale_select_vim:
+ required: false
+ type: boolean
+ vdu_type:
+ required: false
+ type: string
+ watchdog:
+ required: false
+ type: tosca.datatypes.nfv.ext.zte.WatchDog
+ name:
+ required: false
+ type: string
+ local_affinity_antiaffinity_rule:
+ required: false
+ type: tosca.datatypes.nfv.ext.LocalAffinityOrAntiAffinityRule
+ support_scaling:
+ required: false
+ type: boolean
+ storage_policy:
+ required: false
+ type: string
+ key_vdu:
+ required: false
+ type: boolean
+ location_info:
+ required: false
+ type: tosca.datatypes.nfv.ext.LocationInfo
+ inject_data_list:
+ entry_schema:
+ type: tosca.datatypes.nfv.ext.InjectData
+ required: false
+ type: list
+ requirements:
+ - guest_os:
+ capability: tosca.capabilities.nfv.ext.GuestOs
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - local_storage:
+ capability: tosca.capabilities.nfv.ext.LocalAttachment
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - volume_storage:
+ capability: tosca.capabilities.Attachment
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - dependency:
+ capability: tosca.capabilities.Node
+ occurrences:
+ - 0
+ - UNBOUNDED
+ tosca.nodes.nfv.ext.zte.VL:
+ capabilities:
+ virtual_linkable:
+ type: tosca.capabilities.nfv.VirtualLinkable
+ derived_from: tosca.nodes.Root
+ properties:
+ segmentation_id:
+ required: false
+ type: string
+ network_name:
+ required: false
+ type: string
+ is_predefined:
+ required: false
+ type: boolean
+ mtu:
+ required: false
+ type: integer
+ dns_nameservers:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ physical_network:
+ required: false
+ type: string
+ dhcp_enabled:
+ required: false
+ type: boolean
+ network_id:
+ required: false
+ type: string
+ host_routes:
+ entry_schema:
+ type: tosca.datatypes.nfv.ext.HostRouteInfo
+ required: false
+ type: list
+ ip_version:
+ required: false
+ type: integer
+ vendor:
+ required: false
+ type: string
+ name:
+ required: false
+ type: string
+ start_ip:
+ required: false
+ type: string
+ vlan_transparent:
+ required: false
+ type: boolean
+ cidr:
+ required: false
+ type: string
+ gateway_ip:
+ required: false
+ type: string
+ network_type:
+ required: false
+ type: string
+ end_ip:
+ required: false
+ type: string
+ location_info:
+ required: false
+ type: tosca.datatypes.nfv.ext.LocationInfo
+ tosca.nodes.nfv.ext.zte.VNF:
+ capabilities:
+ forwarder:
+ type: tosca.capabilities.nfv.Forwarder
+ derived_from: tosca.nodes.Root
+ properties:
+ request_reclassification:
+ required: false
+ type: boolean
+ domain_type:
+ required: false
+ type: string
+ nsh_aware:
+ required: false
+ type: boolean
+ plugin_info:
+ required: false
+ type: string
+ adjust_vnf_capacity:
+ required: false
+ type: boolean
+ vnfd_version:
+ required: false
+ type: string
+ vmnumber_overquota_alarm:
+ required: false
+ type: boolean
+ custom_properties:
+ entry_schema:
+ type: string
+ required: false
+ type: map
+ version:
+ required: false
+ type: string
+ cross_dc:
+ required: false
+ type: boolean
+ script_info:
+ required: false
+ type: string
+ vendor:
+ required: false
+ type: string
+ is_shared:
+ required: false
+ type: boolean
+ name:
+ required: false
+ type: string
+ vnf_extend_type:
+ required: false
+ type: string
+ id:
+ required: false
+ type: string
+ vnf_type:
+ required: false
+ type: string
+ is_sfc_proxy:
+ required: false
+ type: boolean
+ requirements:
+ - forwarder:
+ capability: tosca.capabilities.nfv.Forwarder
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.VnfVirtualLinkDesc:
+ capabilities:
+ monitoring_parameters:
+ type: tosca.capabilities.nfv.Metric
+ virtual_linkable:
+ type: tosca.capabilities.nfv.VirtualLinkable
+ derived_from: tosca.nodes.Root
+ properties:
+ vl_flavours:
+ entry_schema:
+ type: string
+ type: map
+ description:
+ required: false
+ type: string
+ test_access:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ connectivity_type:
+ type: tosca.datatypes.nfv.ConnectivityType
+
+ org.openecomp.nodes.ForwardingPath:
+ derived_from: tosca.nodes.Root
+ properties:
+ target_range:
+ type: list
+ entry_schema:
+ description: Identifier of the reciever port of the VNF or the service
+ type: integer
+ protocol:
+ type: string
+ description: protocol type that runs on the link
+ requirements:
+ - forwarder:
+ capability: tosca.capabilities.nfv.Forwarder
+ relationship: org.openecomp.relationships.ForwardsTo
+ occurrences: [ 0, UNBOUNDED ] \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/relationships.yml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/relationships.yml
new file mode 100644
index 0000000000..5a43b79350
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testGlobalServiceTemplates/out/openecomp/relationships.yml
@@ -0,0 +1,72 @@
+#
+# 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.
+#
+
+tosca_definitions_version: tosca_simple_openecomp_1_0
+
+metadata:
+ filename: openecomp/relationships.yml
+ version: '1.0'
+
+imports:
+- openecomp_index:
+ file: _index.yml
+
+relationship_types:
+
+ org.openecomp.relationships.VolumeAttachesTo:
+ derived_from: org.openecomp.relationships.AttachesTo
+ description: This type represents an attachment relationship for associating volume
+ properties:
+ volume_id:
+ description: The ID of the volume to be attached
+ type: string
+ status: SUPPORTED
+ required: true
+ instance_uuid:
+ description: The ID of the server to which the volume attaches
+ type: string
+ status: SUPPORTED
+ required: true
+ attributes:
+ show:
+ description: Detailed information about resource
+ type: string
+ status: SUPPORTED
+
+ org.openecomp.relationships.AttachesTo:
+ derived_from: tosca.relationships.AttachesTo
+ description: This type represents an attachment relationship
+ properties:
+ location:
+ description: The relative location (e.g., path on the file system), which provides the root location to address an attached node.
+ type: string
+ status: SUPPORTED
+ required: false
+
+ tosca.relationships.nfv.VDU.AttachedTo:
+ derived_from: tosca.relationships.Root
+ properties:
+ location:
+ required: false
+ type: string
+
+ tosca.relationships.nfv.VirtualBindsTo:
+ derived_from: tosca.relationships.Root
+
+ tosca.relationships.nfv.VirtualLinksTo:
+ derived_from: tosca.relationships.Root
+
+ org.openecomp.relationships.ForwardsTo:
+ derived_from: tosca.relationships.Root
+ valid_target_types: [org.openecomp.capabilities.Forwarder] \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testNoPorts/in/Nested_pd_serverServiceTemplate.yaml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testNoPorts/in/Nested_pd_serverServiceTemplate.yaml
new file mode 100644
index 0000000000..559b4a4db2
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testNoPorts/in/Nested_pd_serverServiceTemplate.yaml
@@ -0,0 +1,116 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Nested_pd_server
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+ file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.pd_server:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ index_value:
+ type: integer
+ description: Index value of this substitution service template runtime instance
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ compute_pd_server_availability_zone:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ compute_pd_server_name:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_exCP_naming:
+ type: org.openecomp.datatypes.Naming
+ required: true
+ vm_flavor_name:
+ type: string
+ required: true
+ port_pd01_port_mac_requirements:
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: true
+ vm_image_name:
+ type: string
+ required: true
+ port_pd01_port_ip_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ port_pd01_port_network:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_order:
+ type: integer
+ required: true
+ port_pd01_port_subnetpoolid:
+ type: string
+ required: true
+ port_pd01_port_network_role:
+ type: string
+ required: true
+ port_pd01_port_network_role_tag:
+ type: string
+ required: true
+ port_pd01_port_vlan_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ compute_pd_server_user_data_format:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ node_templates:
+ pd_server:
+ type: org.openecomp.resource.vfc.nodes.heat.pd_server
+ properties:
+ availability_zone:
+ get_input:
+ - compute_pd_server_availability_zone
+ - index_value
+ flavor:
+ get_input: vm_flavor_name
+ image:
+ get_input: vm_image_name
+ name:
+ get_input:
+ - compute_pd_server_name
+ - index_value
+ user_data_format:
+ get_input:
+ - compute_pd_server_user_data_format
+ - index_value
+ substitution_mappings:
+ node_type: org.openecomp.resource.abstract.nodes.pd_server
+ capabilities:
+ scalable_pd_server:
+ - pd_server
+ - scalable
+ disk.read.bytes.rate_pd_server:
+ - pd_server
+ - disk.read.bytes.rate
+ requirements:
+ local_storage_pd_server:
+ - pd_server
+ - local_storage
+ link_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - link
+ dependency_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - dependency
+ dependency_pd_server:
+ - pd_server
+ - dependency
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testNoPorts/out/Nested_pd_serverServiceTemplate.yaml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testNoPorts/out/Nested_pd_serverServiceTemplate.yaml
new file mode 100644
index 0000000000..559b4a4db2
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testNoPorts/out/Nested_pd_serverServiceTemplate.yaml
@@ -0,0 +1,116 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Nested_pd_server
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+ file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.pd_server:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ index_value:
+ type: integer
+ description: Index value of this substitution service template runtime instance
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ compute_pd_server_availability_zone:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ compute_pd_server_name:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_exCP_naming:
+ type: org.openecomp.datatypes.Naming
+ required: true
+ vm_flavor_name:
+ type: string
+ required: true
+ port_pd01_port_mac_requirements:
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: true
+ vm_image_name:
+ type: string
+ required: true
+ port_pd01_port_ip_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ port_pd01_port_network:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_order:
+ type: integer
+ required: true
+ port_pd01_port_subnetpoolid:
+ type: string
+ required: true
+ port_pd01_port_network_role:
+ type: string
+ required: true
+ port_pd01_port_network_role_tag:
+ type: string
+ required: true
+ port_pd01_port_vlan_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ compute_pd_server_user_data_format:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ node_templates:
+ pd_server:
+ type: org.openecomp.resource.vfc.nodes.heat.pd_server
+ properties:
+ availability_zone:
+ get_input:
+ - compute_pd_server_availability_zone
+ - index_value
+ flavor:
+ get_input: vm_flavor_name
+ image:
+ get_input: vm_image_name
+ name:
+ get_input:
+ - compute_pd_server_name
+ - index_value
+ user_data_format:
+ get_input:
+ - compute_pd_server_user_data_format
+ - index_value
+ substitution_mappings:
+ node_type: org.openecomp.resource.abstract.nodes.pd_server
+ capabilities:
+ scalable_pd_server:
+ - pd_server
+ - scalable
+ disk.read.bytes.rate_pd_server:
+ - pd_server
+ - disk.read.bytes.rate
+ requirements:
+ local_storage_pd_server:
+ - pd_server
+ - local_storage
+ link_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - link
+ dependency_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - dependency
+ dependency_pd_server:
+ - pd_server
+ - dependency
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingContrailPort/in/Nested_pd_serverServiceTemplate.yaml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingContrailPort/in/Nested_pd_serverServiceTemplate.yaml
new file mode 100644
index 0000000000..e4db9743d6
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingContrailPort/in/Nested_pd_serverServiceTemplate.yaml
@@ -0,0 +1,120 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Nested_pd_server
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+ file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.pd_server:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ index_value:
+ type: integer
+ description: Index value of this substitution service template runtime instance
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ compute_pd_server_availability_zone:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ compute_pd_server_name:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_exCP_naming:
+ type: org.openecomp.datatypes.Naming
+ required: true
+ vm_flavor_name:
+ type: string
+ required: true
+ port_pd01_port_mac_requirements:
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: true
+ vm_image_name:
+ type: string
+ required: true
+ port_pd01_port_ip_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ port_pd01_port_network:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_order:
+ type: integer
+ required: true
+ port_pd01_port_subnetpoolid:
+ type: string
+ required: true
+ port_pd01_port_network_role:
+ type: string
+ required: true
+ port_pd01_port_network_role_tag:
+ type: string
+ required: true
+ port_pd01_port_vlan_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ compute_pd_server_user_data_format:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ node_templates:
+ pd_server:
+ type: org.openecomp.resource.vfc.nodes.heat.pd_server
+ properties:
+ availability_zone:
+ get_input:
+ - compute_pd_server_availability_zone
+ - index_value
+ flavor:
+ get_input: vm_flavor_name
+ image:
+ get_input: vm_image_name
+ name:
+ get_input:
+ - compute_pd_server_name
+ - index_value
+ user_data_format:
+ get_input:
+ - compute_pd_server_user_data_format
+ - index_value
+ pd_server_pd01_port:
+ type: org.openecomp.resource.cp.nodes.heat.network.contrail.Port
+ properties:
+ exCP_naming: port_pd01_port_exCP_naming
+ substitution_mappings:
+ node_type: org.openecomp.resource.abstract.nodes.pd_server
+ capabilities:
+ scalable_pd_server:
+ - pd_server
+ - scalable
+ disk.read.bytes.rate_pd_server:
+ - pd_server
+ - disk.read.bytes.rate
+ requirements:
+ local_storage_pd_server:
+ - pd_server
+ - local_storage
+ link_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - link
+ dependency_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - dependency
+ dependency_pd_server:
+ - pd_server
+ - dependency
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingContrailPort/out/Nested_pd_serverServiceTemplate.yaml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingContrailPort/out/Nested_pd_serverServiceTemplate.yaml
new file mode 100644
index 0000000000..c813f89ea4
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingContrailPort/out/Nested_pd_serverServiceTemplate.yaml
@@ -0,0 +1,123 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Nested_pd_server
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+ file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.pd_server:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ index_value:
+ type: integer
+ description: Index value of this substitution service template runtime instance
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ compute_pd_server_availability_zone:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ compute_pd_server_name:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_exCP_naming:
+ type: org.openecomp.datatypes.Naming
+ required: true
+ vm_flavor_name:
+ type: string
+ required: true
+ port_pd01_port_mac_requirements:
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: true
+ vm_image_name:
+ type: string
+ required: true
+ port_pd01_port_ip_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ port_pd01_port_network:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_order:
+ type: integer
+ required: true
+ port_pd01_port_subnetpoolid:
+ type: string
+ required: true
+ port_pd01_port_network_role:
+ type: string
+ required: true
+ port_pd01_port_network_role_tag:
+ type: string
+ required: true
+ port_pd01_port_vlan_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ compute_pd_server_user_data_format:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ node_templates:
+ pd_server:
+ type: org.openecomp.resource.vfc.nodes.heat.pd_server
+ properties:
+ availability_zone:
+ get_input:
+ - compute_pd_server_availability_zone
+ - index_value
+ flavor:
+ get_input: vm_flavor_name
+ image:
+ get_input: vm_image_name
+ name:
+ get_input:
+ - compute_pd_server_name
+ - index_value
+ user_data_format:
+ get_input:
+ - compute_pd_server_user_data_format
+ - index_value
+ pd_server_pd01_port:
+ type: org.openecomp.resource.cp.nodes.heat.network.contrail.Port
+ properties:
+ exCP_naming: port_pd01_port_exCP_naming
+ substitution_mappings:
+ node_type: org.openecomp.resource.abstract.nodes.pd_server
+ capabilities:
+ scalable_pd_server:
+ - pd_server
+ - scalable
+ disk.read.bytes.rate_pd_server:
+ - pd_server
+ - disk.read.bytes.rate
+ Forwarder_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - Forwarder
+ requirements:
+ local_storage_pd_server:
+ - pd_server
+ - local_storage
+ link_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - link
+ dependency_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - dependency
+ dependency_pd_server:
+ - pd_server
+ - dependency
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtContrailPort/in/Nested_pd_serverServiceTemplate.yaml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtContrailPort/in/Nested_pd_serverServiceTemplate.yaml
new file mode 100644
index 0000000000..0f53985749
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtContrailPort/in/Nested_pd_serverServiceTemplate.yaml
@@ -0,0 +1,120 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Nested_pd_server
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+ file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.pd_server:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ index_value:
+ type: integer
+ description: Index value of this substitution service template runtime instance
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ compute_pd_server_availability_zone:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ compute_pd_server_name:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_exCP_naming:
+ type: org.openecomp.datatypes.Naming
+ required: true
+ vm_flavor_name:
+ type: string
+ required: true
+ port_pd01_port_mac_requirements:
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: true
+ vm_image_name:
+ type: string
+ required: true
+ port_pd01_port_ip_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ port_pd01_port_network:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_order:
+ type: integer
+ required: true
+ port_pd01_port_subnetpoolid:
+ type: string
+ required: true
+ port_pd01_port_network_role:
+ type: string
+ required: true
+ port_pd01_port_network_role_tag:
+ type: string
+ required: true
+ port_pd01_port_vlan_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ compute_pd_server_user_data_format:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ node_templates:
+ pd_server:
+ type: org.openecomp.resource.vfc.nodes.heat.pd_server
+ properties:
+ availability_zone:
+ get_input:
+ - compute_pd_server_availability_zone
+ - index_value
+ flavor:
+ get_input: vm_flavor_name
+ image:
+ get_input: vm_image_name
+ name:
+ get_input:
+ - compute_pd_server_name
+ - index_value
+ user_data_format:
+ get_input:
+ - compute_pd_server_user_data_format
+ - index_value
+ pd_server_pd01_port:
+ type: org.openecomp.resource.cp.v2.extContrailCP
+ properties:
+ exCP_naming: port_pd01_port_exCP_naming
+ substitution_mappings:
+ node_type: org.openecomp.resource.abstract.nodes.pd_server
+ capabilities:
+ scalable_pd_server:
+ - pd_server
+ - scalable
+ disk.read.bytes.rate_pd_server:
+ - pd_server
+ - disk.read.bytes.rate
+ requirements:
+ local_storage_pd_server:
+ - pd_server
+ - local_storage
+ link_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - link
+ dependency_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - dependency
+ dependency_pd_server:
+ - pd_server
+ - dependency
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtContrailPort/out/Nested_pd_serverServiceTemplate.yaml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtContrailPort/out/Nested_pd_serverServiceTemplate.yaml
new file mode 100644
index 0000000000..3d7bbcfc4b
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtContrailPort/out/Nested_pd_serverServiceTemplate.yaml
@@ -0,0 +1,123 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Nested_pd_server
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+ file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.pd_server:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ index_value:
+ type: integer
+ description: Index value of this substitution service template runtime instance
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ compute_pd_server_availability_zone:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ compute_pd_server_name:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_exCP_naming:
+ type: org.openecomp.datatypes.Naming
+ required: true
+ vm_flavor_name:
+ type: string
+ required: true
+ port_pd01_port_mac_requirements:
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: true
+ vm_image_name:
+ type: string
+ required: true
+ port_pd01_port_ip_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ port_pd01_port_network:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_order:
+ type: integer
+ required: true
+ port_pd01_port_subnetpoolid:
+ type: string
+ required: true
+ port_pd01_port_network_role:
+ type: string
+ required: true
+ port_pd01_port_network_role_tag:
+ type: string
+ required: true
+ port_pd01_port_vlan_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ compute_pd_server_user_data_format:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ node_templates:
+ pd_server:
+ type: org.openecomp.resource.vfc.nodes.heat.pd_server
+ properties:
+ availability_zone:
+ get_input:
+ - compute_pd_server_availability_zone
+ - index_value
+ flavor:
+ get_input: vm_flavor_name
+ image:
+ get_input: vm_image_name
+ name:
+ get_input:
+ - compute_pd_server_name
+ - index_value
+ user_data_format:
+ get_input:
+ - compute_pd_server_user_data_format
+ - index_value
+ pd_server_pd01_port:
+ type: org.openecomp.resource.cp.v2.extContrailCP
+ properties:
+ exCP_naming: port_pd01_port_exCP_naming
+ substitution_mappings:
+ node_type: org.openecomp.resource.abstract.nodes.pd_server
+ capabilities:
+ scalable_pd_server:
+ - pd_server
+ - scalable
+ disk.read.bytes.rate_pd_server:
+ - pd_server
+ - disk.read.bytes.rate
+ Forwarder_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - Forwarder
+ requirements:
+ local_storage_pd_server:
+ - pd_server
+ - local_storage
+ link_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - link
+ dependency_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - dependency
+ dependency_pd_server:
+ - pd_server
+ - dependency
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtNeutronPort/in/Nested_pd_serverServiceTemplate.yaml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtNeutronPort/in/Nested_pd_serverServiceTemplate.yaml
new file mode 100644
index 0000000000..3edb079fc0
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtNeutronPort/in/Nested_pd_serverServiceTemplate.yaml
@@ -0,0 +1,120 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Nested_pd_server
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+ file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.pd_server:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ index_value:
+ type: integer
+ description: Index value of this substitution service template runtime instance
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ compute_pd_server_availability_zone:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ compute_pd_server_name:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_exCP_naming:
+ type: org.openecomp.datatypes.Naming
+ required: true
+ vm_flavor_name:
+ type: string
+ required: true
+ port_pd01_port_mac_requirements:
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: true
+ vm_image_name:
+ type: string
+ required: true
+ port_pd01_port_ip_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ port_pd01_port_network:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_order:
+ type: integer
+ required: true
+ port_pd01_port_subnetpoolid:
+ type: string
+ required: true
+ port_pd01_port_network_role:
+ type: string
+ required: true
+ port_pd01_port_network_role_tag:
+ type: string
+ required: true
+ port_pd01_port_vlan_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ compute_pd_server_user_data_format:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ node_templates:
+ pd_server:
+ type: org.openecomp.resource.vfc.nodes.heat.pd_server
+ properties:
+ availability_zone:
+ get_input:
+ - compute_pd_server_availability_zone
+ - index_value
+ flavor:
+ get_input: vm_flavor_name
+ image:
+ get_input: vm_image_name
+ name:
+ get_input:
+ - compute_pd_server_name
+ - index_value
+ user_data_format:
+ get_input:
+ - compute_pd_server_user_data_format
+ - index_value
+ pd_server_pd01_port:
+ type: org.openecomp.resource.cp.v2.extNeutronCP
+ properties:
+ exCP_naming: port_pd01_port_exCP_naming
+ substitution_mappings:
+ node_type: org.openecomp.resource.abstract.nodes.pd_server
+ capabilities:
+ scalable_pd_server:
+ - pd_server
+ - scalable
+ disk.read.bytes.rate_pd_server:
+ - pd_server
+ - disk.read.bytes.rate
+ requirements:
+ local_storage_pd_server:
+ - pd_server
+ - local_storage
+ link_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - link
+ dependency_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - dependency
+ dependency_pd_server:
+ - pd_server
+ - dependency
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtNeutronPort/out/Nested_pd_serverServiceTemplate.yaml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtNeutronPort/out/Nested_pd_serverServiceTemplate.yaml
new file mode 100644
index 0000000000..69dba32cf8
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingExtNeutronPort/out/Nested_pd_serverServiceTemplate.yaml
@@ -0,0 +1,123 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Nested_pd_server
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+ file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.pd_server:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ index_value:
+ type: integer
+ description: Index value of this substitution service template runtime instance
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ compute_pd_server_availability_zone:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ compute_pd_server_name:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_exCP_naming:
+ type: org.openecomp.datatypes.Naming
+ required: true
+ vm_flavor_name:
+ type: string
+ required: true
+ port_pd01_port_mac_requirements:
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: true
+ vm_image_name:
+ type: string
+ required: true
+ port_pd01_port_ip_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ port_pd01_port_network:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_order:
+ type: integer
+ required: true
+ port_pd01_port_subnetpoolid:
+ type: string
+ required: true
+ port_pd01_port_network_role:
+ type: string
+ required: true
+ port_pd01_port_network_role_tag:
+ type: string
+ required: true
+ port_pd01_port_vlan_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ compute_pd_server_user_data_format:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ node_templates:
+ pd_server:
+ type: org.openecomp.resource.vfc.nodes.heat.pd_server
+ properties:
+ availability_zone:
+ get_input:
+ - compute_pd_server_availability_zone
+ - index_value
+ flavor:
+ get_input: vm_flavor_name
+ image:
+ get_input: vm_image_name
+ name:
+ get_input:
+ - compute_pd_server_name
+ - index_value
+ user_data_format:
+ get_input:
+ - compute_pd_server_user_data_format
+ - index_value
+ pd_server_pd01_port:
+ type: org.openecomp.resource.cp.v2.extNeutronCP
+ properties:
+ exCP_naming: port_pd01_port_exCP_naming
+ substitution_mappings:
+ node_type: org.openecomp.resource.abstract.nodes.pd_server
+ capabilities:
+ scalable_pd_server:
+ - pd_server
+ - scalable
+ disk.read.bytes.rate_pd_server:
+ - pd_server
+ - disk.read.bytes.rate
+ Forwarder_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - Forwarder
+ requirements:
+ local_storage_pd_server:
+ - pd_server
+ - local_storage
+ link_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - link
+ dependency_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - dependency
+ dependency_pd_server:
+ - pd_server
+ - dependency
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingNeutronPort/in/Nested_pd_serverServiceTemplate.yaml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingNeutronPort/in/Nested_pd_serverServiceTemplate.yaml
new file mode 100644
index 0000000000..3883be3042
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingNeutronPort/in/Nested_pd_serverServiceTemplate.yaml
@@ -0,0 +1,120 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Nested_pd_server
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+ file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.pd_server:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ index_value:
+ type: integer
+ description: Index value of this substitution service template runtime instance
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ compute_pd_server_availability_zone:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ compute_pd_server_name:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_exCP_naming:
+ type: org.openecomp.datatypes.Naming
+ required: true
+ vm_flavor_name:
+ type: string
+ required: true
+ port_pd01_port_mac_requirements:
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: true
+ vm_image_name:
+ type: string
+ required: true
+ port_pd01_port_ip_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ port_pd01_port_network:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_order:
+ type: integer
+ required: true
+ port_pd01_port_subnetpoolid:
+ type: string
+ required: true
+ port_pd01_port_network_role:
+ type: string
+ required: true
+ port_pd01_port_network_role_tag:
+ type: string
+ required: true
+ port_pd01_port_vlan_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ compute_pd_server_user_data_format:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ node_templates:
+ pd_server:
+ type: org.openecomp.resource.vfc.nodes.heat.pd_server
+ properties:
+ availability_zone:
+ get_input:
+ - compute_pd_server_availability_zone
+ - index_value
+ flavor:
+ get_input: vm_flavor_name
+ image:
+ get_input: vm_image_name
+ name:
+ get_input:
+ - compute_pd_server_name
+ - index_value
+ user_data_format:
+ get_input:
+ - compute_pd_server_user_data_format
+ - index_value
+ pd_server_pd01_port:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ exCP_naming: port_pd01_port_exCP_naming
+ substitution_mappings:
+ node_type: org.openecomp.resource.abstract.nodes.pd_server
+ capabilities:
+ scalable_pd_server:
+ - pd_server
+ - scalable
+ disk.read.bytes.rate_pd_server:
+ - pd_server
+ - disk.read.bytes.rate
+ requirements:
+ local_storage_pd_server:
+ - pd_server
+ - local_storage
+ link_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - link
+ dependency_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - dependency
+ dependency_pd_server:
+ - pd_server
+ - dependency
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingNeutronPort/out/Nested_pd_serverServiceTemplate.yaml b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingNeutronPort/out/Nested_pd_serverServiceTemplate.yaml
new file mode 100644
index 0000000000..9b980466ee
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/test/resources/mock/healers/forwarder/testSubMappingNeutronPort/out/Nested_pd_serverServiceTemplate.yaml
@@ -0,0 +1,123 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Nested_pd_server
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+ file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.pd_server:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ index_value:
+ type: integer
+ description: Index value of this substitution service template runtime instance
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ compute_pd_server_availability_zone:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ compute_pd_server_name:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_exCP_naming:
+ type: org.openecomp.datatypes.Naming
+ required: true
+ vm_flavor_name:
+ type: string
+ required: true
+ port_pd01_port_mac_requirements:
+ type: org.openecomp.datatypes.network.MacRequirements
+ required: true
+ vm_image_name:
+ type: string
+ required: true
+ port_pd01_port_ip_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.IpRequirements
+ port_pd01_port_network:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ port_pd01_port_order:
+ type: integer
+ required: true
+ port_pd01_port_subnetpoolid:
+ type: string
+ required: true
+ port_pd01_port_network_role:
+ type: string
+ required: true
+ port_pd01_port_network_role_tag:
+ type: string
+ required: true
+ port_pd01_port_vlan_requirements:
+ type: list
+ required: true
+ entry_schema:
+ type: org.openecomp.datatypes.network.VlanRequirements
+ compute_pd_server_user_data_format:
+ type: list
+ required: true
+ entry_schema:
+ type: string
+ node_templates:
+ pd_server:
+ type: org.openecomp.resource.vfc.nodes.heat.pd_server
+ properties:
+ availability_zone:
+ get_input:
+ - compute_pd_server_availability_zone
+ - index_value
+ flavor:
+ get_input: vm_flavor_name
+ image:
+ get_input: vm_image_name
+ name:
+ get_input:
+ - compute_pd_server_name
+ - index_value
+ user_data_format:
+ get_input:
+ - compute_pd_server_user_data_format
+ - index_value
+ pd_server_pd01_port:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ exCP_naming: port_pd01_port_exCP_naming
+ substitution_mappings:
+ node_type: org.openecomp.resource.abstract.nodes.pd_server
+ capabilities:
+ scalable_pd_server:
+ - pd_server
+ - scalable
+ disk.read.bytes.rate_pd_server:
+ - pd_server
+ - disk.read.bytes.rate
+ Forwarder_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - Forwarder
+ requirements:
+ local_storage_pd_server:
+ - pd_server
+ - local_storage
+ link_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - link
+ dependency_pd_server_pd01_port:
+ - pd_server_pd01_port
+ - dependency
+ dependency_pd_server:
+ - pd_server
+ - dependency