Blueprints Processor Default Resource Assignment 53/64553/4
authorSingal, Kapil (ks220y) <ks220y@att.com>
Wed, 5 Sep 2018 01:38:51 +0000 (21:38 -0400)
committerSingal, Kapil (ks220y) <ks220y@att.com>
Wed, 5 Sep 2018 01:55:26 +0000 (21:55 -0400)
Creating SDN Blueprints Processor Default Resource Assignment Processor

Change-Id: Ib2475eb220218c95eda62b5cefe4eed38e9f756e
Issue-ID: CCSDK-501
Signed-off-by: Singal, Kapil (ks220y) <ks220y@att.com>
14 files changed:
blueprints-processor/plugin/assignment-provider/src/main/java/org/onap/ccsdk/config/assignment/processor/DefaultResourceProcessor.java [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/java/org/onap/ccsdk/config/assignment/processor/DefaultResourceProcessorTest.java [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/mapping/default/default-simple.json [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/mapping/default/resource-assignments-simple.json [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/mapping/dependency.json [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/input/input.json [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/input/inputValidateTest.json [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/resource_assignment.json [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/resource_assignment/resource_assignment.json [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/resource_assignment/velocity/base-config-template.vtl [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/dict.json [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/input-complex.json [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/velocity/base-config-template.vtl [new file with mode: 0644]
blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/vpe-201802-baseconfig.json [new file with mode: 0644]

diff --git a/blueprints-processor/plugin/assignment-provider/src/main/java/org/onap/ccsdk/config/assignment/processor/DefaultResourceProcessor.java b/blueprints-processor/plugin/assignment-provider/src/main/java/org/onap/ccsdk/config/assignment/processor/DefaultResourceProcessor.java
new file mode 100644 (file)
index 0000000..aac13cb
--- /dev/null
@@ -0,0 +1,107 @@
+/*\r
+ * Copyright © 2017-2018 AT&T Intellectual Property.\r
+ * Modifications Copyright © 2018 IBM.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package org.onap.ccsdk.config.assignment.processor;\r
+\r
+import java.util.List;\r
+import java.util.Map;\r
+import org.apache.commons.lang3.StringUtils;\r
+import org.onap.ccsdk.config.assignment.service.ConfigAssignmentUtils;\r
+import org.onap.ccsdk.config.data.adaptor.service.ConfigResourceService;\r
+import org.onap.ccsdk.config.model.ConfigModelConstant;\r
+import org.onap.ccsdk.config.model.ConfigModelException;\r
+import org.onap.ccsdk.config.model.data.ResourceAssignment;\r
+import org.onap.ccsdk.config.model.service.ComponentNode;\r
+import org.onap.ccsdk.config.model.utils.ResourceAssignmentUtils;\r
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;\r
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;\r
+\r
+public class DefaultResourceProcessor implements ComponentNode {\r
+\r
+    public DefaultResourceProcessor(ConfigResourceService configResourceService) {}\r
+\r
+    @Override\r
+    public Boolean preCondition(Map<String, String> inParams, SvcLogicContext ctx, Map<String, Object> componentContext)\r
+            throws SvcLogicException {\r
+        return Boolean.TRUE;\r
+    }\r
+\r
+    @Override\r
+    public void preProcess(Map<String, String> inParams, SvcLogicContext ctx, Map<String, Object> componentContext)\r
+            throws SvcLogicException {\r
+        // Auto-generated method stub\r
+    }\r
+\r
+    @Override\r
+    public void process(Map<String, String> inParams, SvcLogicContext ctx) throws SvcLogicException {\r
+        // Auto-generated method stub\r
+    }\r
+\r
+    @SuppressWarnings("unchecked")\r
+    @Override\r
+    public void process(Map<String, String> inParams, SvcLogicContext ctx, Map<String, Object> componentContext)\r
+            throws SvcLogicException {\r
+        try {\r
+            List<ResourceAssignment> batchResourceAssignment =\r
+                    (List<ResourceAssignment>) componentContext.get(ConfigModelConstant.PROPERTY_RESOURCE_ASSIGNMENTS);\r
+\r
+            if (batchResourceAssignment != null && !batchResourceAssignment.isEmpty()) {\r
+                for (ResourceAssignment resourceAssignment : batchResourceAssignment) {\r
+                    processResourceAssignment(ctx, componentContext, resourceAssignment);\r
+                }\r
+            }\r
+        } catch (Exception e) {\r
+            throw new SvcLogicException(String.format("DefaultResourceProcessor Exception : (%s)", e), e);\r
+        }\r
+\r
+    }\r
+\r
+    private void processResourceAssignment(SvcLogicContext ctx, Map<String, Object> componentContext,\r
+            ResourceAssignment resourceAssignment) throws ConfigModelException, SvcLogicException {\r
+        if (resourceAssignment != null && StringUtils.isNotBlank(resourceAssignment.getName())\r
+                && resourceAssignment.getProperty() != null) {\r
+            try {\r
+                // Check if It has Input\r
+                Object value = ConfigAssignmentUtils.getContextKeyValue(ctx, resourceAssignment.getName());\r
+                if (value == null) {\r
+                    value = resourceAssignment.getProperty().getDefaultValue();\r
+                }\r
+\r
+                // if value is null don't call setResourceDataValue to populate the value\r
+                if (value != null) {\r
+                    ResourceAssignmentUtils.setResourceDataValue(componentContext, resourceAssignment, value);\r
+                }\r
+\r
+                // Check the value has populated for mandatory case\r
+                ResourceAssignmentUtils.assertTemplateKeyValueNotNull(componentContext, resourceAssignment);\r
+            } catch (Exception e) {\r
+                ResourceAssignmentUtils.setFailedResourceDataValue(componentContext, resourceAssignment,\r
+                        e.getMessage());\r
+                throw new SvcLogicException(\r
+                        String.format("Failed in template key (%s) assignments with : (%s)", resourceAssignment, e), e);\r
+            }\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public void postProcess(Map<String, String> inParams, SvcLogicContext ctx, Map<String, Object> componentContext)\r
+            throws SvcLogicException {\r
+        // Auto-generated method stub\r
+\r
+    }\r
+\r
+}\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/java/org/onap/ccsdk/config/assignment/processor/DefaultResourceProcessorTest.java b/blueprints-processor/plugin/assignment-provider/src/test/java/org/onap/ccsdk/config/assignment/processor/DefaultResourceProcessorTest.java
new file mode 100644 (file)
index 0000000..7e8d142
--- /dev/null
@@ -0,0 +1,127 @@
+/*\r
+ * Copyright © 2017-2018 AT&T Intellectual Property.\r
+ * Modifications Copyright © 2018 IBM.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package org.onap.ccsdk.config.assignment.processor;\r
+\r
+import static org.mockito.Matchers.any;\r
+import java.io.File;\r
+import java.nio.charset.Charset;\r
+import java.util.Arrays;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import org.apache.commons.io.FileUtils;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.junit.runner.RunWith;\r
+import org.mockito.Mock;\r
+import org.mockito.Mockito;\r
+import org.mockito.MockitoAnnotations;\r
+import org.mockito.invocation.InvocationOnMock;\r
+import org.mockito.runners.MockitoJUnitRunner;\r
+import org.mockito.stubbing.Answer;\r
+import org.onap.ccsdk.config.assignment.service.ConfigResourceAssignmentTestUtils;\r
+import org.onap.ccsdk.config.data.adaptor.domain.TransactionLog;\r
+import org.onap.ccsdk.config.data.adaptor.service.ConfigResourceService;\r
+import org.onap.ccsdk.config.model.ConfigModelConstant;\r
+import org.onap.ccsdk.config.model.data.ResourceAssignment;\r
+import org.onap.ccsdk.config.model.data.dict.ResourceDefinition;\r
+import org.onap.ccsdk.config.model.utils.TransformationUtils;\r
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;\r
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;\r
+import com.att.eelf.configuration.EELFLogger;\r
+import com.att.eelf.configuration.EELFManager;\r
+\r
+@RunWith(MockitoJUnitRunner.class)\r
+public class DefaultResourceProcessorTest {\r
+\r
+    private static EELFLogger logger = EELFManager.getInstance().getLogger(DefaultResourceProcessorTest.class);\r
+\r
+    @Mock\r
+    private ConfigResourceService configResourceService;\r
+\r
+    @SuppressWarnings("unchecked")\r
+    @Before\r
+    public void before() {\r
+        MockitoAnnotations.initMocks(this);\r
+\r
+        try {\r
+            Mockito.doAnswer(new Answer<Void>() {\r
+                @Override\r
+                public Void answer(InvocationOnMock invocationOnMock) throws Throwable {\r
+                    Object[] args = invocationOnMock.getArguments();\r
+                    if (args != null) {\r
+                        logger.trace("Transaction info " + Arrays.asList(args));\r
+                    }\r
+                    return null;\r
+                }\r
+            }).when(configResourceService).save(any(TransactionLog.class));\r
+\r
+        } catch (SvcLogicException e) {\r
+            e.printStackTrace();\r
+        }\r
+    }\r
+\r
+    @Test\r
+    public void testDefaultSimpleProcess() throws Exception {\r
+        logger.info(" *******************************  testDefaultSimpleProcess  ***************************");\r
+\r
+        String recipeName = "sample-recipe";\r
+\r
+        String resourceassignmentContent = FileUtils.readFileToString(\r
+                new File("src/test/resources/mapping/default/resource-assignments-simple.json"),\r
+                Charset.defaultCharset());\r
+        List<ResourceAssignment> batchResourceAssignment =\r
+                TransformationUtils.getListfromJson(resourceassignmentContent, ResourceAssignment.class);\r
+\r
+        String dictionaryContent = FileUtils.readFileToString(\r
+                new File("src/test/resources/mapping/default/default-simple.json"), Charset.defaultCharset());\r
+        Map<String, ResourceDefinition> dictionaries =\r
+                ConfigResourceAssignmentTestUtils.getMapfromJson(dictionaryContent);\r
+\r
+        DefaultResourceProcessor defaultResourceProcessor = new DefaultResourceProcessor(configResourceService);\r
+        Map<String, Object> componentContext = new HashMap<>();\r
+        componentContext.put(ConfigModelConstant.PROPERTY_RESOURCE_ASSIGNMENTS, batchResourceAssignment);\r
+        componentContext.put(ConfigModelConstant.PROPERTY_ACTION_NAME, recipeName);\r
+        componentContext.put(ConfigModelConstant.PROPERTY_TEMPLATE_NAME, "sample-template");\r
+        componentContext.put(ConfigModelConstant.PROPERTY_DICTIONARIES, dictionaries);\r
+        componentContext.put(ConfigModelConstant.PROPERTY_DICTIONARY_KEY_DOT + recipeName + ".profile_name", "sample");\r
+\r
+        Map<String, String> inParams = new HashMap<>();\r
+        SvcLogicContext ctx = new SvcLogicContext();\r
+        defaultResourceProcessor.process(inParams, ctx, componentContext);\r
+        logger.trace(" componentContext " + componentContext);\r
+\r
+        Assert.assertEquals("Failed to populate default country value ", "US",\r
+                componentContext.get(ConfigModelConstant.PROPERTY_RECIPE_KEY_DOT + "sample-recipe.country"));\r
+        Assert.assertEquals("Failed to populate default country value ", "US",\r
+                componentContext.get(ConfigModelConstant.PROPERTY_DICTIONARY_KEY_DOT + "sample-recipe.country"));\r
+\r
+        Assert.assertEquals("Failed to populate default port value ", 830,\r
+                componentContext.get(ConfigModelConstant.PROPERTY_RECIPE_KEY_DOT + "sample-recipe.port"));\r
+        Assert.assertEquals("Failed to populate default port value ", 830,\r
+                componentContext.get(ConfigModelConstant.PROPERTY_DICTIONARY_KEY_DOT + "sample-recipe.port"));\r
+\r
+        Assert.assertEquals("Failed to populate default voip-enabled value ", true,\r
+                componentContext.get(ConfigModelConstant.PROPERTY_RECIPE_KEY_DOT + "sample-recipe.voip-enabled"));\r
+        Assert.assertEquals("Failed to populate default voip-enabled value ", true,\r
+                componentContext.get(ConfigModelConstant.PROPERTY_DICTIONARY_KEY_DOT + "sample-recipe.voip-enabled"));\r
+\r
+    }\r
+\r
+}\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/mapping/default/default-simple.json b/blueprints-processor/plugin/assignment-provider/src/test/resources/mapping/default/default-simple.json
new file mode 100644 (file)
index 0000000..fca0dde
--- /dev/null
@@ -0,0 +1,35 @@
+{\r
+       "country": {\r
+               "name": "country",\r
+               "property": {\r
+                       "type": "string"\r
+               },\r
+               "sources": {\r
+                       "default": {\r
+                               "type": "source-default"\r
+                       }\r
+               }\r
+       },\r
+       "port": {\r
+               "name": "port",\r
+               "property": {\r
+                       "type": "integer"\r
+               },\r
+               "sources": {\r
+                       "default": {\r
+                               "type": "source-default"\r
+                       }\r
+               }\r
+       },\r
+       "voip-enabled": {\r
+               "name": "voip-enabled",\r
+               "property": {\r
+                       "type": "boolean"\r
+               },\r
+               "sources": {\r
+                       "default": {\r
+                               "type": "source-default"\r
+                       }\r
+               }\r
+       }\r
+}\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/mapping/default/resource-assignments-simple.json b/blueprints-processor/plugin/assignment-provider/src/test/resources/mapping/default/resource-assignments-simple.json
new file mode 100644 (file)
index 0000000..fc92710
--- /dev/null
@@ -0,0 +1,35 @@
+[\r
+       {\r
+               "name": "country",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "string",\r
+                       "default": "US"\r
+               },\r
+               "dictionary-name": "country",\r
+               "dictionary-source": "default",\r
+               "dependencies": []\r
+       },\r
+       {\r
+               "name": "port",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "integer",\r
+                       "default": 830\r
+               },\r
+               "dictionary-name": "port",\r
+               "dictionary-source": "default",\r
+               "dependencies": []\r
+       },\r
+       {\r
+               "name": "voip-enabled",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "boolean",\r
+                       "default": true\r
+               },\r
+               "dictionary-name": "voip-enabled",\r
+               "dictionary-source": "default",\r
+               "dependencies": []\r
+       }\r
+]\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/mapping/dependency.json b/blueprints-processor/plugin/assignment-provider/src/test/resources/mapping/dependency.json
new file mode 100644 (file)
index 0000000..e08539c
--- /dev/null
@@ -0,0 +1,110 @@
+[\r
+       {\r
+               "name": "vnf-id",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "string",\r
+                       "required": true\r
+               },\r
+               "dictionary-name": "vnf-id",\r
+               "dictionary-source": "input",\r
+               "dependencies": []\r
+       },\r
+       {\r
+               "name": "service-instance-id",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "string",\r
+                       "required": true\r
+               },\r
+               "dictionary-name": "service-instance-id",\r
+               "dictionary-source": "input",\r
+               "dependencies": []\r
+       },\r
+       {\r
+               "name": "bundle-id",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "string",\r
+                       "required": true\r
+               },\r
+               "dictionary-name": "bundle-id",\r
+               "dictionary-source": "mdsal",\r
+               "dependencies": [\r
+                       "vnf-id"\r
+               ]\r
+       },\r
+       {\r
+               "name": "bundle-ip",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "string",\r
+                       "required": true\r
+               },\r
+               "dictionary-name": "bundle-ip",\r
+               "dictionary-source": "mdsal",\r
+               "dependencies": [\r
+                       "vnf-id"\r
+               ]\r
+       },\r
+       {\r
+               "name": "bundle-mac",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "string"\r
+               },\r
+               "dictionary-name": "bundle-mac",\r
+               "dictionary-source": "mdsal",\r
+               "dependencies": [\r
+                       "vnf-id",\r
+                       "bundle-id"\r
+               ]\r
+       },\r
+       {\r
+               "name": "managed-ip",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "string"\r
+               },\r
+               "dictionary-name": "managed-ip",\r
+               "dictionary-source": "mdsal",\r
+               "dependencies": [\r
+                       "loopback-ip"\r
+               ]\r
+       },\r
+       {\r
+               "name": "vnf-name",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "string",\r
+                       "required": true\r
+               },\r
+               "dictionary-name": "vnf-name",\r
+               "dictionary-source": "input",\r
+               "dependencies": []\r
+       },\r
+       {\r
+               "name": "managed-ip1",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "string"\r
+               },\r
+               "dictionary-name": "managed-ip1",\r
+               "dictionary-source": "mdsal",\r
+               "dependencies": [\r
+                       "loopback-ip"\r
+               ]\r
+       },\r
+       {\r
+               "name": "loopback-ip",\r
+               "input-param": true,\r
+               "property": {\r
+                       "type": "string"\r
+               },\r
+               "dictionary-name": "loopback-ip",\r
+               "dictionary-source": "db",\r
+               "dependencies": [\r
+                       "bundle-mac"\r
+               ]\r
+       }\r
+]\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/input/input.json b/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/input/input.json
new file mode 100644 (file)
index 0000000..cd6fac1
--- /dev/null
@@ -0,0 +1,18 @@
+{\r
+       "api-ver": "2.00",\r
+       "originator-id": "MSO",\r
+       "request-id": "123456",\r
+       "service-instance-id": "ibcx0001vm001",\r
+       "service-type": "AVPN",\r
+       "vnf-type": "vUSP - vDBE-IPX HUB",\r
+       "vnf-id": 123456,\r
+       "service-template-name": "VRR-baseconfiguration",\r
+       "service-template-version": "1.0.0",\r
+       "action-name": "resource-assignment-action",\r
+       "group-name": "sample group name",\r
+       "bundle-id": "sample bundle id",\r
+       "bundle-mac": [\r
+               "Sample bundle mac",\r
+               "Sample bundle mac"\r
+       ]\r
+}\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/input/inputValidateTest.json b/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/input/inputValidateTest.json
new file mode 100644 (file)
index 0000000..354ca57
--- /dev/null
@@ -0,0 +1,18 @@
+{\r
+       "api-ver": "2.00",\r
+       "originator-id": "MSO",\r
+       "request-id": "123456",\r
+       "service-instance-id": "ibcx0001vm001",\r
+       "service-type": "AVPN",\r
+       "vnf-type": "vUSP - vDBE-IPX HUB",\r
+       "vnf-id": "",\r
+       "service-template-name": "VRR-baseconfiguration",\r
+       "service-template-version": "1.0.0",\r
+       "action-name": "resource-assignment-action",\r
+       "group-name": "sample group name",\r
+       "bundle-id": "sample bundle id",\r
+       "bundle-mac": [\r
+               "Sample bundle mac",\r
+               "Sample bundle mac"\r
+       ]\r
+}\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/resource_assignment.json b/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/resource_assignment.json
new file mode 100644 (file)
index 0000000..030af7b
--- /dev/null
@@ -0,0 +1,407 @@
+{\r
+       "metadata": {\r
+               "author": "ks220y@att.com",\r
+               "service-template-name": "VRR-baseconfiguration",\r
+               "service-template-version": "1.0.0",\r
+               "release": "1802",\r
+               "service-type": "AVPN",\r
+               "vnf-type": "VRR"\r
+       },\r
+       "topology_template": {\r
+               "inputs": {\r
+                       "request-id": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "service-instance-id": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "action-name": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "scope-type": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "hostname": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       }\r
+               },\r
+               "node_templates": {\r
+                       "base-config-template": {\r
+                               "type": "artifact-config-template",\r
+                               "properties": {\r
+                                       "action-names": [\r
+                                               "resource-assignment-action"\r
+                                       ]\r
+                               },\r
+                               "capabilities": {\r
+                                       "content": {\r
+                                               "properties": {\r
+                                                       "content": "db://base-config-template"\r
+                                               }\r
+                                       },\r
+                                       "mapping": {\r
+                                               "properties": {\r
+                                                       "mapping": [\r
+                                                               {\r
+                                                                       "name": "vnf-id",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "string",\r
+                                                                               "required": true\r
+                                                                       },\r
+                                                                       "dictionary-name": "vnf-id",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "group-name",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "string",\r
+                                                                               "required": true\r
+                                                                       },\r
+                                                                       "dictionary-name": "group-name",\r
+                                                                       "dictionary-source": "input"\r
+                                                               }\r
+                                                       ]\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "resource-assignment-action": {\r
+                               "type": "dg-resource-assignment",\r
+                               "interfaces": {\r
+                                       "CONFIG": {\r
+                                               "operations": {\r
+                                                       "ResourceAssignment": {\r
+                                                               \r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               },\r
+                               "capabilities": {\r
+                                       "dg-node": {\r
+                                               \r
+                                       }\r
+                               },\r
+                               "requirements": {\r
+                                       "component-dependency": {\r
+                                               "capability": "component-node",\r
+                                               "node": "resource-assignment",\r
+                                               "relationship": "tosca.relationships.DependsOn"\r
+                                       }\r
+                               }\r
+                       },\r
+                       "licence-template": {\r
+                               "type": "artifact-config-template",\r
+                               "properties": {\r
+                                       "action-names": [\r
+                                               "resource-assignment-action"\r
+                                       ]\r
+                               },\r
+                               "capabilities": {\r
+                                       "content": {\r
+                                               "properties": {\r
+                                                       "content": "db://licence-template"\r
+                                               }\r
+                                       },\r
+                                       "mapping": {\r
+                                               "properties": {\r
+                                                       "mapping": [\r
+                                                               {\r
+                                                                       "name": "bundle-id",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "bundle-id",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "bundle-mac",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "string",\r
+                                                                               "required": true\r
+                                                                       },\r
+                                                                       "dictionary-name": "bundle-mac",\r
+                                                                       "dictionary-source": "input"\r
+                                                               }\r
+                                                       ]\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "resource-assignment": {\r
+                               "type": "component-resource-assignment",\r
+                               "interfaces": {\r
+                                       "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": {\r
+                                               "operations": {\r
+                                                       "process": {\r
+                                                               "inputs": {\r
+                                                                       "action-name": "{ \"get_input\" : \"action-name\" }",\r
+                                                                       "resource-type": "vnf-type",\r
+                                                                       "template-names": [\r
+                                                                               "base-config-template",\r
+                                                                               "licence-template"\r
+                                                                       ],\r
+                                                                       "request-id": "{ \"get_input\" : \"request-id\" }",\r
+                                                                       "resource-id": "{ \"get_input\" : \"vnf-id\" }"\r
+                                                               },\r
+                                                               "outputs": {\r
+                                                                       "resource-assignment-params": "",\r
+                                                                       "status": ""\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               },\r
+                               "capabilities": {\r
+                                       "component-node": {\r
+                                               \r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       },\r
+       "node_types": {\r
+               "dg-resource-assignment": {\r
+                       "description": "This is Resource Assignment Directed Graph",\r
+                       "version": "1.0.0",\r
+                       "properties": {\r
+                               "mode": {\r
+                                       "required": false,\r
+                                       "type": "string",\r
+                                       "default": "sync"\r
+                               },\r
+                               "version": {\r
+                                       "required": false,\r
+                                       "type": "string",\r
+                                       "default": "LATEST"\r
+                               },\r
+                               "is-start-flow": {\r
+                                       "required": false,\r
+                                       "type": "boolean",\r
+                                       "default": "false"\r
+                               }\r
+                       },\r
+                       "capabilities": {\r
+                               "dg-node": {\r
+                                       "type": "tosca.capabilities.Node"\r
+                               },\r
+                               "content": {\r
+                                       "type": "tosca.capability.Content",\r
+                                       "properties": {\r
+                                               "type": {\r
+                                                       "required": false,\r
+                                                       "type": "string",\r
+                                                       "default": "json"\r
+                                               },\r
+                                               "content": {\r
+                                                       "required": true,\r
+                                                       "type": "string"\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "requirements": {\r
+                               "component-dependency": {\r
+                                       "capability": "component-node",\r
+                                       "node": "component-resource-assignment",\r
+                                       "relationship": "tosca.relationships.DependsOn"\r
+                               }\r
+                       },\r
+                       "interfaces": {\r
+                               "CONFIG": {\r
+                                       "operations": {\r
+                                               "ResourceAssignment": {\r
+                                                       "inputs": {\r
+                                                               "params": {\r
+                                                                       "required": false,\r
+                                                                       "type": "list",\r
+                                                                       "entry_schema": {\r
+                                                                               "type": "datatype-property"\r
+                                                                       }\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.nodes.DG"\r
+               },\r
+               "component-resource-assignment": {\r
+                       "description": "This is Resource Assignment Component API",\r
+                       "version": "1.0.0",\r
+                       "capabilities": {\r
+                               "component-node": {\r
+                                       "type": "tosca.capabilities.Node"\r
+                               }\r
+                       },\r
+                       "interfaces": {\r
+                               "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": {\r
+                                       "operations": {\r
+                                               "process": {\r
+                                                       "inputs": {\r
+                                                               "action-name": {\r
+                                                                       "description": "Action Name to get from Database, Either (message & mask-info ) or ( resource-id & resource-type & action-name & template-name ) should be present. Message will be given higest priority",\r
+                                                                       "required": false,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "handler-name": {\r
+                                                                       "description": "Name of the Artifact Node Template, to get the template Content. If template-content is present, then content wont be reterived from the Artifact Node Template.",\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "resource-type": {\r
+                                                                       "required": false,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "template-names": {\r
+                                                                       "description": "Name of the Artifact Node Templates, to get the template Content.",\r
+                                                                       "required": true,\r
+                                                                       "type": "list",\r
+                                                                       "entry_schema": {\r
+                                                                               "type": "string"\r
+                                                                       }\r
+                                                               },\r
+                                                               "request-id": {\r
+                                                                       "description": "Request Id used to store the generated configuration, in the database along with the template-name",\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "resource-id": {\r
+                                                                       "description": "Id used to pull the data content from the data base. Either template-data or resource-id should be present",\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               }\r
+                                                       },\r
+                                                       "outputs": {\r
+                                                               "resource-assignment-params": {\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "status": {\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.nodes.Component"\r
+               },\r
+               "artifact-config-template": {\r
+                       "description": "This is Configuration Velocity Template",\r
+                       "version": "1.0.0",\r
+                       "properties": {\r
+                               "action-names": {\r
+                                       "required": true,\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "string"\r
+                                       }\r
+                               },\r
+                               "content": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "mapping": {\r
+                                       "required": false,\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "datatype-resource-assignment"\r
+                                       }\r
+                               }\r
+                       },\r
+                       "capabilities": {\r
+                               "content": {\r
+                                       "type": "tosca.capability.Content",\r
+                                       "properties": {\r
+                                               "content": {\r
+                                                       "required": true,\r
+                                                       "type": "string"\r
+                                               }\r
+                                       }\r
+                               },\r
+                               "mapping": {\r
+                                       "type": "tosca.capability.Mapping",\r
+                                       "properties": {\r
+                                               "mapping": {\r
+                                                       "required": false,\r
+                                                       "type": "list",\r
+                                                       "entry_schema": {\r
+                                                               "type": "datatype-resource-assignment"\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.nodes.Artifact"\r
+               }\r
+       },\r
+       "data_types": {\r
+               "datatype-resource-assignment": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is Resource Assignment Data Type",\r
+                       "properties": {\r
+                               "property": {\r
+                                       "required": true,\r
+                                       "type": "datatype-property"\r
+                               },\r
+                               "input-param": {\r
+                                       "required": true,\r
+                                       "type": "boolean"\r
+                               },\r
+                               "dictionary-name": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "dictionary-source": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "dependencies": {\r
+                                       "required": true,\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "string"\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               },\r
+               "datatype-property": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is Entry point Input Data Type, which is dynamic datatype, The parameter names will be populated during the Design time for each inputs",\r
+                       "properties": {\r
+                               "type": {\r
+                                       "required": true,\r
+                                       "type": "string"\r
+                               },\r
+                               "description": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "required": {\r
+                                       "required": false,\r
+                                       "type": "boolean"\r
+                               },\r
+                               "default": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "entry_schema": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               }\r
+       }\r
+}\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/resource_assignment/resource_assignment.json b/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/resource_assignment/resource_assignment.json
new file mode 100644 (file)
index 0000000..30c7f49
--- /dev/null
@@ -0,0 +1,417 @@
+{\r
+       "metadata": {\r
+               "author": "ks220y@att.com",\r
+               "service-template-name": "VRR-baseconfiguration",\r
+               "service-template-version": "1.0.0",\r
+               "release": "1802",\r
+               "service-type": "AVPN",\r
+               "vnf-type": "VRR"\r
+       },\r
+       "topology_template": {\r
+               "inputs": {\r
+                       "request-id": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "service-instance-id": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "action-name": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "scope-type": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "hostname": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       }\r
+               },\r
+               "node_templates": {\r
+                       "base-config-template": {\r
+                               "type": "artifact-config-template",\r
+                               "properties": {\r
+                                       "action-names": [\r
+                                               "resource-assignment-action"\r
+                                       ]\r
+                               },\r
+                               "capabilities": {\r
+                                       "content": {\r
+                                               "properties": {\r
+                                                       "content": "db://base-config-template"\r
+                                               }\r
+                                       },\r
+                                       "mapping": {\r
+                                               "properties": {\r
+                                                       "mapping": [\r
+                                                               {\r
+                                                                       "name": "vnf-id",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "string",\r
+                                                                               "required": true\r
+                                                                       },\r
+                                                                       "dictionary-name": "vnf-id",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "group-name",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "string",\r
+                                                                               "required": true\r
+                                                                       },\r
+                                                                       "dictionary-name": "group-name",\r
+                                                                       "dictionary-source": "input"\r
+                                                               }\r
+                                                       ]\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "resource-assignment-action": {\r
+                               "type": "dg-resource-assignment",\r
+                               "interfaces": {\r
+                                       "CONFIG": {\r
+                                               "operations": {\r
+                                                       "ResourceAssignment": {\r
+                                                               \r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               },\r
+                               "capabilities": {\r
+                                       "dg-node": {\r
+                                               \r
+                                       }\r
+                               },\r
+                               "requirements": {\r
+                                       "component-dependency": {\r
+                                               "capability": "component-node",\r
+                                               "node": "resource-assignment",\r
+                                               "relationship": "tosca.relationships.DependsOn"\r
+                                       }\r
+                               }\r
+                       },\r
+                       "licence-template": {\r
+                               "type": "artifact-config-template",\r
+                               "properties": {\r
+                                       "action-names": [\r
+                                               "resource-assignment-action"\r
+                                       ]\r
+                               },\r
+                               "capabilities": {\r
+                                       "content": {\r
+                                               "properties": {\r
+                                                       "content": "db://licence-template"\r
+                                               }\r
+                                       },\r
+                                       "mapping": {\r
+                                               "properties": {\r
+                                                       "mapping": [\r
+                                                               {\r
+                                                                       "name": "bundle-id",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "bundle-id",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "bundle-mac",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "string",\r
+                                                                               "required": true\r
+                                                                       },\r
+                                                                       "dictionary-name": "bundle-mac",\r
+                                                                       "dictionary-source": "input"\r
+                                                               }\r
+                                                       ]\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "resource-assignment": {\r
+                               "type": "component-resource-assignment",\r
+                               "interfaces": {\r
+                                       "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": {\r
+                                               "operations": {\r
+                                                       "process": {\r
+                                                               "inputs": {\r
+                                                                       "service-template-name": "VRR-baseconfiguration",\r
+                                                                       "service-template-version": "1.0.0",\r
+                                                                       "action-name": "{ \"get_input\" : \"action-name\" }",\r
+                                                                       "resource-type": "vnf-type",\r
+                                                                       "template-names": [\r
+                                                                               "base-config-template",\r
+                                                                               "licence-template"\r
+                                                                       ],\r
+                                                                       "request-id": "{ \"get_input\" : \"request-id\" }",\r
+                                                                       "resource-id": "{ \"get_input\" : \"vnf-id\" }"\r
+                                                               },\r
+                                                               "outputs": {\r
+                                                                       "resource-assignment-params": "",\r
+                                                                       "status": ""\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               },\r
+                               "capabilities": {\r
+                                       "component-node": {\r
+                                               \r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       },\r
+       "node_types": {\r
+               "dg-resource-assignment": {\r
+                       "description": "This is Resource Assignment Directed Graph",\r
+                       "version": "1.0.0",\r
+                       "properties": {\r
+                               "mode": {\r
+                                       "required": false,\r
+                                       "type": "string",\r
+                                       "default": "sync"\r
+                               },\r
+                               "version": {\r
+                                       "required": false,\r
+                                       "type": "string",\r
+                                       "default": "LATEST"\r
+                               },\r
+                               "is-start-flow": {\r
+                                       "required": false,\r
+                                       "type": "boolean",\r
+                                       "default": "false"\r
+                               }\r
+                       },\r
+                       "capabilities": {\r
+                               "dg-node": {\r
+                                       "type": "tosca.capabilities.Node"\r
+                               },\r
+                               "content": {\r
+                                       "type": "tosca.capability.Content",\r
+                                       "properties": {\r
+                                               "type": {\r
+                                                       "required": false,\r
+                                                       "type": "string",\r
+                                                       "default": "json"\r
+                                               },\r
+                                               "content": {\r
+                                                       "required": true,\r
+                                                       "type": "string"\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "requirements": {\r
+                               "component-dependency": {\r
+                                       "capability": "component-node",\r
+                                       "node": "component-resource-assignment",\r
+                                       "relationship": "tosca.relationships.DependsOn"\r
+                               }\r
+                       },\r
+                       "interfaces": {\r
+                               "CONFIG": {\r
+                                       "operations": {\r
+                                               "ResourceAssignment": {\r
+                                                       "inputs": {\r
+                                                               "params": {\r
+                                                                       "required": false,\r
+                                                                       "type": "list",\r
+                                                                       "entry_schema": {\r
+                                                                               "type": "datatype-property"\r
+                                                                       }\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.nodes.DG"\r
+               },\r
+               "component-resource-assignment": {\r
+                       "description": "This is Resource Assignment Component API",\r
+                       "version": "1.0.0",\r
+                       "capabilities": {\r
+                               "component-node": {\r
+                                       "type": "tosca.capabilities.Node"\r
+                               }\r
+                       },\r
+                       "interfaces": {\r
+                               "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": {\r
+                                       "operations": {\r
+                                               "process": {\r
+                                                       "inputs": {\r
+                                                               "action-name": {\r
+                                                                       "description": "Action Name to get from Database, Either (message & mask-info ) or ( resource-id & resource-type & action-name & template-name ) should be present. Message will be given higest priority",\r
+                                                                       "required": false,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "handler-name": {\r
+                                                                       "description": "Name of the Artifact Node Template, to get the template Content. If template-content is present, then content wont be reterived from the Artifact Node Template.",\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "resource-type": {\r
+                                                                       "required": false,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "service-template-name": {\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "service-template-version": {\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "template-names": {\r
+                                                                       "description": "Name of the Artifact Node Templates, to get the template Content.",\r
+                                                                       "required": true,\r
+                                                                       "type": "list",\r
+                                                                       "entry_schema": {\r
+                                                                               "type": "string"\r
+                                                                       }\r
+                                                               },\r
+                                                               "request-id": {\r
+                                                                       "description": "Request Id used to store the generated configuration, in the database along with the template-name",\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "resource-id": {\r
+                                                                       "description": "Id used to pull the data content from the data base. Either template-data or resource-id should be present",\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               }\r
+                                                       },\r
+                                                       "outputs": {\r
+                                                               "resource-assignment-params": {\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "status": {\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.nodes.Component"\r
+               },\r
+               "artifact-config-template": {\r
+                       "description": "This is Configuration Velocity Template",\r
+                       "version": "1.0.0",\r
+                       "properties": {\r
+                               "action-names": {\r
+                                       "required": true,\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "string"\r
+                                       }\r
+                               },\r
+                               "content": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "mapping": {\r
+                                       "required": false,\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "datatype-resource-assignment"\r
+                                       }\r
+                               }\r
+                       },\r
+                       "capabilities": {\r
+                               "content": {\r
+                                       "type": "tosca.capability.Content",\r
+                                       "properties": {\r
+                                               "content": {\r
+                                                       "required": true,\r
+                                                       "type": "string"\r
+                                               }\r
+                                       }\r
+                               },\r
+                               "mapping": {\r
+                                       "type": "tosca.capability.Mapping",\r
+                                       "properties": {\r
+                                               "mapping": {\r
+                                                       "required": false,\r
+                                                       "type": "list",\r
+                                                       "entry_schema": {\r
+                                                               "type": "datatype-resource-assignment"\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.nodes.Artifact"\r
+               }\r
+       },\r
+       "data_types": {\r
+               "datatype-resource-assignment": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is Resource Assignment Data Type",\r
+                       "properties": {\r
+                               "property": {\r
+                                       "required": true,\r
+                                       "type": "datatype-property"\r
+                               },\r
+                               "input-param": {\r
+                                       "required": true,\r
+                                       "type": "boolean"\r
+                               },\r
+                               "dictionary-name": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "dictionary-source": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "dependencies": {\r
+                                       "required": true,\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "string"\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               },\r
+               "datatype-property": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is Entry point Input Data Type, which is dynamic datatype, The parameter names will be populated during the Design time for each inputs",\r
+                       "properties": {\r
+                               "type": {\r
+                                       "required": true,\r
+                                       "type": "string"\r
+                               },\r
+                               "description": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "required": {\r
+                                       "required": false,\r
+                                       "type": "boolean"\r
+                               },\r
+                               "default": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "entry_schema": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               }\r
+       }\r
+}\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/resource_assignment/velocity/base-config-template.vtl b/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/resource_assignment/velocity/base-config-template.vtl
new file mode 100644 (file)
index 0000000..92dba10
--- /dev/null
@@ -0,0 +1,40 @@
+ <config>\r
+               <configuration>\r
+                       <groups>\r
+                               <name>${group-name}</name>\r
+                               <routing-instances>\r
+                                       <instance>\r
+                                               <name>&lt;*&gt;</name>\r
+                                               <protocols>\r
+                                                       <pim>\r
+                                                               <dense-groups>\r
+                                                                       <dynamic-reject />\r
+                                                                       <pim-dense-group-type>\r
+                                                                               <name>224.0.1.40/32</name>\r
+                                                                       </pim-dense-group-type>\r
+                                                                       <pim-dense-group-type>\r
+                                                                               <name>224.0.1.39/32</name>\r
+                                                                       </pim-dense-group-type>\r
+                                                                       <pim-dense-group-type>\r
+                                                                               <name>224.0.0.0/4</name>\r
+                                                                               <reject />\r
+                                                                       </pim-dense-group-type>\r
+                                                               </dense-groups>\r
+                                                               <rp>\r
+                                                                       <auto-rp>\r
+                                                                               <discovery />\r
+                                                                       </auto-rp>\r
+                                                               </rp>\r
+                                                               <interface>\r
+                                                                       <name>&lt;*&gt;</name>\r
+                                                                       <disable />\r
+                                                                       <priority>1000</priority>\r
+                                                               </interface>\r
+                                                               <reset-tracking-bit />\r
+                                                       </pim>\r
+                                               </protocols>\r
+                                       </instance>\r
+                               </routing-instances>\r
+                       </groups>\r
+               </configuration>\r
+       </config>
\ No newline at end of file
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/dict.json b/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/dict.json
new file mode 100644 (file)
index 0000000..f7b09d5
--- /dev/null
@@ -0,0 +1,172 @@
+[\r
+       {\r
+               "name": "adiod-unicast-route-reflectors",\r
+               "resourcePath": "vnf/protocol/adiod-unicast-route-reflectors",\r
+               "resourceType": "ATT",\r
+               "dataType": "list",\r
+               "entrySchema": "dt-adiod-unicast-route-reflectors",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"adiod-unicast-route-reflectors\",\r\n  \"description\" : \"dd\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/protocol/adiod-unicast-route-reflectors\",\r\n  \"data-type\" : \"list\",\r\n  \"entry-schema\" : \"dt-adiod-unicast-route-reflectors\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"complex-code-char8\" : \"complex-code-char8\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"adiod-unicast-route-reflectors\" : \"adiod-unicast-route-reflectors\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"network-resource-discovery\" : {\r\n      \"names\" : [ \"complex-code-char8\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "dd",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T17:31:38.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "adiod-vpnv4-route-reflectors",\r
+               "resourcePath": "vnf/servers/adiod-vpnv4-route-reflectors",\r
+               "resourceType": "ATT",\r
+               "dataType": "list",\r
+               "entrySchema": "dt-adiod-vpnv4-route-reflectors",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"adiod-vpnv4-route-reflectors\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/servers/adiod-vpnv4-route-reflectors\",\r\n  \"data-type\" : \"list\",\r\n  \"entry-schema\" : \"dt-adiod-vpnv4-route-reflectors\",\r\n  \"source\" : {\r\n    \"input\" : { }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T17:31:38.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "asn-region",\r
+               "resourcePath": "vnf/protocols/asn-region",\r
+               "resourceType": "ATT",\r
+               "dataType": "string",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"asn-region\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/protocols/asn-region\",\r\n  \"data-type\" : \"string\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"hostname\" : \"hostname\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"asn-region\" : \"asn-region\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"network-resource-discovery\" : {\r\n      \"names\" : [ \"hostname\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-17T11:31:29.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "bundle-id",\r
+               "resourcePath": "vnf/interface/bundle-id",\r
+               "resourceType": "ATT",\r
+               "dataType": "string",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"bundle-id\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/interface/bundle-id\",\r\n  \"data-type\" : \"string\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"hostname\" : \"hostname\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"bundle-id\" : \"bundle-id\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"network-resource-discovery\" : {\r\n      \"names\" : [ \"hostname\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T17:31:39.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "lo0-local-ipv4-address",\r
+               "resourcePath": "vnf/interface/lo0-local-ipv4",\r
+               "resourceType": "ATT",\r
+               "dataType": "ipv4-address",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"lo0-local-ipv4-address\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/interface/lo0-local-ipv4\",\r\n  \"data-type\" : \"string\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"hostname\" : \"hostname\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"lo0-local-ipv4\" : \"lo0-local-ipv4\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"network-resource-discovery\" : {\r\n      \"names\" : [ \"hostname\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T17:31:40.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "lo10-local-ipv4-address",\r
+               "resourcePath": "vnf/interface/lo10-local-ipv4",\r
+               "resourceType": "ATT",\r
+               "dataType": "ipv4-address",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"lo10-local-ipv4-address\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/interface/lo10-local-ipv4\",\r\n  \"data-type\" : \"string\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"hostname\" : \"hostname\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"lo10-local-ipv4\" : \"lo10-local-ipv4\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"network-resource-discovery\" : {\r\n      \"names\" : [ \"hostname\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T17:31:41.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "oam-remote-ipv4-address",\r
+               "resourcePath": "vnf/oam-remote-ipv4-address",\r
+               "resourceType": "ATT",\r
+               "dataType": "string",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"oam-remote-ipv4-address\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/oam-remote-ipv4-address\",\r\n  \"data-type\" : \"string\",\r\n  \"source\" : {\r\n    \"input\" : {\r\n      \"key\" : \"oam-remote-ipv4-address\"\r\n    },\r\n    \"mdsal\" : {\r\n      \"base\" : \"sdnc-gc\",\r\n      \"type\" : \"JSON\",\r\n      \"url-path\" : \"/restconf/config/L3VNF-API\",\r\n      \"path\" : \"/${services/service-list/$service-instance-id/service-data/vnf-topology-information/vnf-assignments/vnf-vms/$oam-ipv4-ip-type/vm-networks/$oam-network-role/v4-assigned-ip-list/$oam-vm-type\",\r\n      \"input-key-mapping\" : {\r\n        \"service-instance-id\" : \"service-instance-id\",\r\n        \"oam-network-role\" : \"oam-network-role\",\r\n        \"oam-ipv4-ip-type\" : \"oam-ipv4-ip-type\",\r\n        \"oam-vm-type\" : \"oam-vm-type\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"oam-remote-ipv4-address\" : \"ipv4-gateway-prefix\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"mdsal\" : {\r\n      \"names\" : [ \"service-instance-id\", \"oam-network-role\", \"oam-v4-ip-type \", \"oam-vm-type\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T10:52:24.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "ospf-area",\r
+               "resourcePath": "/ospf-area",\r
+               "resourceType": "ATT",\r
+               "dataType": "string",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"ospf-area\",\r\n  \"description\" : \"ospf-area\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"/ospf-area\",\r\n  \"data-type\" : \"string\",\r\n  \"source\" : {\r\n    \"input\" : {\r\n      \"key\" : \"ospf-area\"\r\n    },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"hostname\" : \"mainResource\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"ospf-area\" : \"ospf-area\"\r\n      }\r\n    }\r\n  }\r\n}",\r
+               "description": "ospf-area",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T10:52:24.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "ospf-cost",\r
+               "resourcePath": "/ospf-cost",\r
+               "resourceType": "ATT",\r
+               "dataType": "string",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"ospf-cost\",\r\n  \"description\" : \"ospf-cost\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"/ospf-cost\",\r\n  \"data-type\" : \"string\",\r\n  \"source\" : {\r\n    \"input\" : {\r\n      \"key\" : \"ospf-cost\"\r\n    },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"hostname\" : \"mainResource\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"ospf-cost\" : \"ospf-cost\"\r\n      }\r\n    }\r\n  }\r\n}",\r
+               "description": "ospf-cost",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T10:52:25.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "si-local-ipv4-address",\r
+               "resourcePath": "vnf/interface/si-local-ipv4",\r
+               "resourceType": "ATT",\r
+               "dataType": "string",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"si-local-ipv4-address\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/interface/si-local-ipv4\",\r\n  \"data-type\" : \"string\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"hostname\" : \"hostname\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"si-local-ipv4\" : \"si-local-ipv4\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"network-resource-discovery\" : {\r\n      \"names\" : [ \"hostname\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T10:52:25.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "tacacs-server-ipv4-addresses",\r
+               "resourcePath": "vnf/servers/tacacs-server-ipv4-addresses",\r
+               "resourceType": "ATT",\r
+               "dataType": "list",\r
+               "entrySchema": "dt-tacacs-server-ipv4-addresses",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"tacacs-server-ipv4-addresses\",\r\n  \"description\" : \"to be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/servers/tacacs-server-ipv4-addresses\",\r\n  \"data-type\" : \"list\",\r\n  \"entry-schema\" : \"dt-tacacs-server-ipv4-addresses\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"region\" : \"region\",\r\n        \"complex-code-char8\" : \"complex-code-char8\",\r\n        \"tacacs-domain-name\" : \"tacacs-domain-name\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"tacacs-server-ipv4-addresses\" : \"tacacs-server-ipv4-addresses\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"network-resource-discovery\" : {\r\n      \"names\" : [ \"region\", \"complex-code-char8\", \"tacacs-domain-name\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "to be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T17:31:43.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "uplink-1-unit",\r
+               "resourcePath": "vnf/interface/uplink-1-unit",\r
+               "resourceType": "ATT",\r
+               "dataType": "string",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"uplink-1-unit\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/interface/uplink-1-unit\",\r\n  \"data-type\" : \"string\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"hostname\" : \"hostname\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"uplink-1-unit\" : \"uplink-1-unit\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"network-resource-discovery\" : {\r\n      \"names\" : [ \"hostname\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T17:31:44.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "uplink-2-unit",\r
+               "resourcePath": "vnf/interface/uplink-2-unit",\r
+               "resourceType": "ATT",\r
+               "dataType": "string",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"uplink-2-unit\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/interface/uplink-2-unit\",\r\n  \"data-type\" : \"string\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"network-resource-discovery\" : {\r\n      \"input-key-mapping\" : {\r\n        \"hostname\" : \"hostname\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"uplink-2-unit\" : \"uplink-2-unit\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"network-resource-discovery\" : {\r\n      \"names\" : [ \"hostname\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T17:31:45.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "wan-aggregate-ipv4-addresses",\r
+               "resourcePath": "vnf/wan-aggregate-ipv4-addresses",\r
+               "resourceType": "ATT",\r
+               "dataType": "list",\r
+               "entrySchema": "dt-v4-aggregate",\r
+               "definition": "{\r\n  \"tags\" : \"wan-aggregate-ipv4-addresses, tosca.datatypes.Root, data_type, ks220y@att.com\",\r\n  \"name\" : \"wan-aggregate-ipv4-addresses\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/wan-aggregate-ipv4-addresses\",\r\n  \"data-type\" : \"list\",\r\n  \"entry-schema\" : \"dt-v4-aggregate\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"mdsal\" : {\r\n      \"base\" : \"sdnc-gc\",\r\n      \"type\" : \"JSON\",\r\n      \"url-path\" : \"/restconf/config/L3VNF-API\",\r\n      \"path\" : \"/${services/service-list/$service-instance-id/service-data/vnf-topology-information/vnf-assignments/vnf-vms/$oam-ipv4-ip-type/vm-networks/$oam-network-role/v4-assigned-ip-list/$oam-vm-type\",\r\n      \"input-key-mapping\" : {\r\n        \"service-instance-id\" : \"service-instance-id\",\r\n        \"oam-network-role\" : \"oam-network-role\",\r\n        \"oam-ipv4-ip-type\" : \"oam-ipv4-ip-type\",\r\n        \"oam-vm-type\" : \"oam-vm-type\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"wan-aggregate-ipv4-addresses\" : \"v4-ip-prefix-length\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"mdsal\" : {\r\n      \"names\" : [ \"service-instance-id\", \"oam-network-role\", \"oam-v4-ip-type \", \"oam-vm-type\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "wan-aggregate-ipv4-addresses, tosca.datatypes.Root, data_type, ks220y@att.com",\r
+               "creationDate": "2017-11-16T17:31:45.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       },\r
+       {\r
+               "name": "wan-aggregate-ipv6-addresses",\r
+               "resourcePath": "vnf/wan-aggregate-ipv6-addresses",\r
+               "resourceType": "ATT",\r
+               "dataType": "list",\r
+               "entrySchema": "dt-v6-aggregate",\r
+               "definition": "{\r\n  \"tags\" : \"ADIOD3\",\r\n  \"name\" : \"wan-aggregate-ipv6-addresses\",\r\n  \"description\" : \"To be provided\",\r\n  \"updated-by\" : \"ks220y@att.com\",\r\n  \"resource-type\" : \"ATT\",\r\n  \"resource-path\" : \"vnf/wan-aggregate-ipv6-addresses\",\r\n  \"data-type\" : \"list\",\r\n  \"entry-schema\" : \"dt-v6-aggregate\",\r\n  \"source\" : {\r\n    \"input\" : { },\r\n    \"mdsal\" : {\r\n      \"base\" : \"sdnc-gc\",\r\n      \"type\" : \"JSON\",\r\n      \"url-path\" : \"/restconf/config/L3VNF-API\",\r\n      \"path\" : \"/${services/service-list/$service-instance-id/service-data/vnf-topology-information/vnf-assignments/vnf-vms/VCO\",\r\n      \"input-key-mapping\" : {\r\n        \"service-instance-id\" : \"service-instance-id\",\r\n        \"oam-network-role\" : \"oam-network-role\",\r\n        \"oam-ipv4-ip-type\" : \"oam-ipv4-ip-type\",\r\n        \"oam-vm-type\" : \"oam-vm-type\"\r\n      },\r\n      \"output-key-mapping\" : {\r\n        \"wan-aggregate-ipv6.addresses\" : \"v4-ip-prefix-length\"\r\n      }\r\n    }\r\n  },\r\n  \"candidate-dependency\" : {\r\n    \"mdsal\" : {\r\n      \"names\" : [ \"service-instance-id\", \"oam-network-role\", \"oam-v4-ip-type \", \"oam-vm-type\" ]\r\n    }\r\n  }\r\n}",\r
+               "description": "To be provided",\r
+               "tags": "ADIOD3",\r
+               "creationDate": "2017-11-16T17:31:46.000+0000",\r
+               "updatedBy": "ks220y@att.com"\r
+       }\r
+]\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/input-complex.json b/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/input-complex.json
new file mode 100644 (file)
index 0000000..7086501
--- /dev/null
@@ -0,0 +1,49 @@
+{\r
+       "request-id": "1234",\r
+       "service-instance-id": "adsfdsf",\r
+       "action-name": "resource-assignment-action",\r
+       "scope-type": "vnf-type",\r
+       "hostname": "sample-host",\r
+       "resource-assignment-request": {\r
+               "uplink-2-unit": "sample-uplink-2-unit",\r
+               "bundle-mac": "sample-bundle-mac",\r
+               "wan-aggregate-ipv6-addresses": [\r
+                       {\r
+                               "v6-address": "sample-v6-address",\r
+                               "v6-plen": "sample-v6-plen"\r
+                       }\r
+               ],\r
+               "ospf-area": "sample-ospf-area",\r
+               "ospf-cost": 10.0,\r
+               "bundle-id": "bundle-id",\r
+               "adiod-unicast-route-reflectors": [\r
+                       {\r
+                               "v4-address": "sample-v4-address",\r
+                               "name": "sample-name"\r
+                       }\r
+               ],\r
+               "oam-remote-ipv4-address": "",\r
+               "adiod-vpnv4-route-reflectors": [\r
+                       {\r
+                               "v4-address": "sample-v4-address",\r
+                               "name": "sample-name"\r
+                       }\r
+               ],\r
+               "lo10-local-ipv4-address": "sample-lo10-local-ipv4-address",\r
+               "wan-aggregate-ipv4-addresses": [\r
+                       {\r
+                               "v4-address": "sample-v4-address",\r
+                               "v4-plen": 0\r
+                       }\r
+               ],\r
+               "lo0-local-ipv4-address": "sample-lo0-local-ipv4-address",\r
+               "uplink-1-unit": "sample-uplink-1-unit",\r
+               "tacacs-server-ipv4-addresses": [\r
+                       {\r
+                               "tacacs-server-ipv4-address": "sample-tacacs-server-ipv4-address"\r
+                       }\r
+               ],\r
+               "asn-region": "sample-asn-region",\r
+               "si-local-ipv4-address": "sample-si-local-ipv4-address"\r
+       }\r
+}\r
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/velocity/base-config-template.vtl b/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/velocity/base-config-template.vtl
new file mode 100644 (file)
index 0000000..92dba10
--- /dev/null
@@ -0,0 +1,40 @@
+ <config>\r
+               <configuration>\r
+                       <groups>\r
+                               <name>${group-name}</name>\r
+                               <routing-instances>\r
+                                       <instance>\r
+                                               <name>&lt;*&gt;</name>\r
+                                               <protocols>\r
+                                                       <pim>\r
+                                                               <dense-groups>\r
+                                                                       <dynamic-reject />\r
+                                                                       <pim-dense-group-type>\r
+                                                                               <name>224.0.1.40/32</name>\r
+                                                                       </pim-dense-group-type>\r
+                                                                       <pim-dense-group-type>\r
+                                                                               <name>224.0.1.39/32</name>\r
+                                                                       </pim-dense-group-type>\r
+                                                                       <pim-dense-group-type>\r
+                                                                               <name>224.0.0.0/4</name>\r
+                                                                               <reject />\r
+                                                                       </pim-dense-group-type>\r
+                                                               </dense-groups>\r
+                                                               <rp>\r
+                                                                       <auto-rp>\r
+                                                                               <discovery />\r
+                                                                       </auto-rp>\r
+                                                               </rp>\r
+                                                               <interface>\r
+                                                                       <name>&lt;*&gt;</name>\r
+                                                                       <disable />\r
+                                                                       <priority>1000</priority>\r
+                                                               </interface>\r
+                                                               <reset-tracking-bit />\r
+                                                       </pim>\r
+                                               </protocols>\r
+                                       </instance>\r
+                               </routing-instances>\r
+                       </groups>\r
+               </configuration>\r
+       </config>
\ No newline at end of file
diff --git a/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/vpe-201802-baseconfig.json b/blueprints-processor/plugin/assignment-provider/src/test/resources/service_templates/vpe-201802-baseconfig/vpe-201802-baseconfig.json
new file mode 100644 (file)
index 0000000..ed1fe40
--- /dev/null
@@ -0,0 +1,639 @@
+{\r
+       "metadata": {\r
+               "author": "ks220y@att.com",\r
+               "service-template-name": "vpe-201802-baseconfig",\r
+               "service-template-version": "1.0.0",\r
+               "release": "1802",\r
+               "service-type": "ADIOD",\r
+               "vnf-type": "VPE"\r
+       },\r
+       "topology_template": {\r
+               "inputs": {\r
+                       "request-id": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "service-instance-id": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "action-name": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "scope-type": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "hostname": {\r
+                               "required": true,\r
+                               "type": "string"\r
+                       },\r
+                       "resource-assignment-request": {\r
+                               "description": "This is Dynamic Data type for the receipe resource-assignment-action.",\r
+                               "required": false,\r
+                               "type": "dt-resource-assignment-request"\r
+                       }\r
+               },\r
+               "node_templates": {\r
+                       "base-config-template": {\r
+                               "type": "artifact-config-template",\r
+                               "properties": {\r
+                                       "action-names": [\r
+                                               "resource-assignment-action"\r
+                                       ]\r
+                               },\r
+                               "capabilities": {\r
+                                       "content": {\r
+                                               "properties": {\r
+                                                       "content": "db://base-config-template"\r
+                                               }\r
+                                       },\r
+                                       "mapping": {\r
+                                               "properties": {\r
+                                                       "mapping": [\r
+                                                               {\r
+                                                                       "name": "wan-aggregate-ipv6-addresses",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "list",\r
+                                                                               "entry_schema": {\r
+                                                                                       "type": "dt-v6-aggregate"\r
+                                                                               }\r
+                                                                       },\r
+                                                                       "dictionary-name": "wan-aggregate-ipv6-addresses",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "wan-aggregate-ipv4-addresses",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "list",\r
+                                                                               "entry_schema": {\r
+                                                                                       "type": "dt-v4-aggregate"\r
+                                                                               }\r
+                                                                       },\r
+                                                                       "dictionary-name": "wan-aggregate-ipv4-addresses",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "tacacs-server-ipv4-addresses",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "list",\r
+                                                                               "entry_schema": {\r
+                                                                                       "type": "dt-tacacs-server-ipv4"\r
+                                                                               }\r
+                                                                       },\r
+                                                                       "dictionary-name": "tacacs-server-ipv4-addresses",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "oam-remote-ipv4-address",\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "oam-remote-ipv4-address",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "si-local-ipv4-address",\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "si-local-ipv4-address",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "lo0-local-ipv4-address",\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "lo0-local-ipv4-address",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "asn-region",\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "asn-region",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "adiod-unicast-route-reflectors",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "list",\r
+                                                                               "entry_schema": {\r
+                                                                                       "type": "dt-adiod-unicast-route-reflector"\r
+                                                                               }\r
+                                                                       },\r
+                                                                       "dictionary-name": "adiod-unicast-route-reflectors",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "adiod-vpnv4-route-reflectors",\r
+                                                                       "input-param": true,\r
+                                                                       "property": {\r
+                                                                               "type": "list",\r
+                                                                               "entry_schema": {\r
+                                                                                       "type": "dt-adiod-vpnv4-route-reflector"\r
+                                                                               }\r
+                                                                       },\r
+                                                                       "dictionary-name": "adiod-vpnv4-route-reflectors",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "bundle-id",\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "bundle-id",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "uplink-1-unit",\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "uplink-1-unit",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "uplink-2-unit",\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "uplink-2-unit",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "ospf-area",\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "ospf-area",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "ospf-cost",\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "ospf-cost",\r
+                                                                       "dictionary-source": "input"\r
+                                                               },\r
+                                                               {\r
+                                                                       "name": "lo10-local-ipv4-address",\r
+                                                                       "property": {\r
+                                                                               "type": "string"\r
+                                                                       },\r
+                                                                       "dictionary-name": "lo10-local-ipv4-address",\r
+                                                                       "dictionary-source": "input"\r
+                                                               }\r
+                                                       ]\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "resource-assignment-action": {\r
+                               "type": "dg-resource-assignment",\r
+                               "interfaces": {\r
+                                       "CONFIG": {\r
+                                               "operations": {\r
+                                                       "ResourceAssignment": {\r
+                                                               \r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               },\r
+                               "capabilities": {\r
+                                       "dg-node": {\r
+                                               \r
+                                       }\r
+                               },\r
+                               "requirements": {\r
+                                       "component-dependency": {\r
+                                               "capability": "component-node",\r
+                                               "node": "resource-assignment",\r
+                                               "relationship": "tosca.relationships.DependsOn"\r
+                                       }\r
+                               }\r
+                       },\r
+                       "resource-assignment": {\r
+                               "type": "component-resource-assignment",\r
+                               "interfaces": {\r
+                                       "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": {\r
+                                               "operations": {\r
+                                                       "process": {\r
+                                                               "inputs": {\r
+                                                                       "action-name": "{ \"get_input\" : \"action-name\" }",\r
+                                                                       "resource-type": "vnf-type",\r
+                                                                       "template-names": [\r
+                                                                               "base-config-template",\r
+                                                                               "licence-template"\r
+                                                                       ],\r
+                                                                       "request-id": "{ \"get_input\" : \"request-id\" }",\r
+                                                                       "resource-id": "{ \"get_input\" : \"hostname\" }"\r
+                                                               },\r
+                                                               "outputs": {\r
+                                                                       "resource-assignment-params": "",\r
+                                                                       "status": ""\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               },\r
+                               "capabilities": {\r
+                                       "component-node": {\r
+                                               \r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       },\r
+       "node_types": {\r
+               "dg-resource-assignment": {\r
+                       "description": "This is Resource Assignment Directed Graph",\r
+                       "version": "1.0.0",\r
+                       "properties": {\r
+                               "mode": {\r
+                                       "required": false,\r
+                                       "type": "string",\r
+                                       "default": "sync"\r
+                               },\r
+                               "version": {\r
+                                       "required": false,\r
+                                       "type": "string",\r
+                                       "default": "LATEST"\r
+                               },\r
+                               "is-start-flow": {\r
+                                       "required": false,\r
+                                       "type": "boolean",\r
+                                       "default": "false"\r
+                               }\r
+                       },\r
+                       "capabilities": {\r
+                               "dg-node": {\r
+                                       "type": "tosca.capabilities.Node"\r
+                               },\r
+                               "content": {\r
+                                       "type": "tosca.capability.Content",\r
+                                       "properties": {\r
+                                               "type": {\r
+                                                       "required": false,\r
+                                                       "type": "string",\r
+                                                       "default": "json"\r
+                                               },\r
+                                               "content": {\r
+                                                       "required": true,\r
+                                                       "type": "string"\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "requirements": {\r
+                               "component-dependency": {\r
+                                       "capability": "component-node",\r
+                                       "node": "component-resource-assignment",\r
+                                       "relationship": "tosca.relationships.DependsOn"\r
+                               }\r
+                       },\r
+                       "interfaces": {\r
+                               "CONFIG": {\r
+                                       "operations": {\r
+                                               "ResourceAssignment": {\r
+                                                       "inputs": {\r
+                                                               "params": {\r
+                                                                       "required": false,\r
+                                                                       "type": "list",\r
+                                                                       "entry_schema": {\r
+                                                                               "type": "datatype-property"\r
+                                                                       }\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.nodes.DG"\r
+               },\r
+               "component-resource-assignment": {\r
+                       "description": "This is Resource Assignment Component API",\r
+                       "version": "1.0.0",\r
+                       "capabilities": {\r
+                               "component-node": {\r
+                                       "type": "tosca.capabilities.Node"\r
+                               }\r
+                       },\r
+                       "interfaces": {\r
+                               "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": {\r
+                                       "operations": {\r
+                                               "process": {\r
+                                                       "inputs": {\r
+                                                               "action-name": {\r
+                                                                       "description": "Action Name to get from Database, Either (message & mask-info ) or ( resource-id & resource-type & action-name & template-name ) should be present. Message will be given higest priority",\r
+                                                                       "required": false,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "handler-name": {\r
+                                                                       "description": "Name of the Artifact Node Template, to get the template Content. If template-content is present, then content wont be reterived from the Artifact Node Template.",\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "resource-type": {\r
+                                                                       "required": false,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "template-names": {\r
+                                                                       "description": "Name of the Artifact Node Templates, to get the template Content.",\r
+                                                                       "required": true,\r
+                                                                       "type": "list",\r
+                                                                       "entry_schema": {\r
+                                                                               "type": "string"\r
+                                                                       }\r
+                                                               },\r
+                                                               "request-id": {\r
+                                                                       "description": "Request Id used to store the generated configuration, in the database along with the template-name",\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "resource-id": {\r
+                                                                       "description": "Id used to pull the data content from the data base. Either template-data or resource-id should be present",\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               }\r
+                                                       },\r
+                                                       "outputs": {\r
+                                                               "resource-assignment-params": {\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               },\r
+                                                               "status": {\r
+                                                                       "required": true,\r
+                                                                       "type": "string"\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.nodes.Component"\r
+               },\r
+               "artifact-config-template": {\r
+                       "description": "This is Configuration Velocity Template",\r
+                       "version": "1.0.0",\r
+                       "properties": {\r
+                               "action-names": {\r
+                                       "required": true,\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "string"\r
+                                       }\r
+                               }\r
+                       },\r
+                       "capabilities": {\r
+                               "content": {\r
+                                       "type": "tosca.capability.Content",\r
+                                       "properties": {\r
+                                               "content": {\r
+                                                       "required": true,\r
+                                                       "type": "string"\r
+                                               }\r
+                                       }\r
+                               },\r
+                               "mapping": {\r
+                                       "type": "tosca.capability.Mapping",\r
+                                       "properties": {\r
+                                               "mapping": {\r
+                                                       "required": false,\r
+                                                       "type": "list",\r
+                                                       "entry_schema": {\r
+                                                               "type": "datatype-resource-assignment"\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.nodes.Artifact"\r
+               }\r
+       },\r
+       "data_types": {\r
+               "dt-v4-aggregate": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is dt-v4-aggregate Data Type",\r
+                       "properties": {\r
+                               "v4-address": {\r
+                                       "required": true,\r
+                                       "type": "string"\r
+                               },\r
+                               "v4-plen": {\r
+                                       "required": false,\r
+                                       "type": "integer"\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               },\r
+               "dt-tacacs-server-ipv4": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is dt-tacacs-server-ipv4 Data Type",\r
+                       "properties": {\r
+                               "tacacs-server-ipv4-address": {\r
+                                       "required": true,\r
+                                       "type": "string"\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               },\r
+               "dt-adiod-vpnv4-route-reflector": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is dt-adiod-unicast-route-reflector Data Type",\r
+                       "properties": {\r
+                               "v4-address": {\r
+                                       "required": true,\r
+                                       "type": "string"\r
+                               },\r
+                               "name": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               },\r
+               "datatype-resource-assignment": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is Resource Assignment Data Type",\r
+                       "properties": {\r
+                               "property": {\r
+                                       "required": true,\r
+                                       "type": "datatype-property"\r
+                               },\r
+                               "input-param": {\r
+                                       "required": true,\r
+                                       "type": "boolean"\r
+                               },\r
+                               "dictionary-name": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "dictionary-source": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "dependencies": {\r
+                                       "required": true,\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "string"\r
+                                       }\r
+                               },\r
+                               "status": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "message": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "updated-date": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "updated-by": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               },\r
+               "dt-adiod-unicast-route-reflector": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is dt-adiod-unicast-route-reflector Data Type",\r
+                       "properties": {\r
+                               "v4-address": {\r
+                                       "required": true,\r
+                                       "type": "string"\r
+                               },\r
+                               "name": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               },\r
+               "datatype-property": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is Entry point Input Data Type, which is dynamic datatype, The parameter names will be populated during the Design time for each inputs",\r
+                       "properties": {\r
+                               "type": {\r
+                                       "required": true,\r
+                                       "type": "string"\r
+                               },\r
+                               "description": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "required": {\r
+                                       "required": false,\r
+                                       "type": "boolean"\r
+                               },\r
+                               "default": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               },\r
+                               "entry_schema": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               },\r
+               "dt-v6-aggregate": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is dt-v6-aggregate Data Type",\r
+                       "properties": {\r
+                               "v6-address": {\r
+                                       "required": true,\r
+                                       "type": "string"\r
+                               },\r
+                               "v6-plen": {\r
+                                       "required": false,\r
+                                       "type": "string"\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Root"\r
+               },\r
+               "dt-resource-assignment-request": {\r
+                       "version": "1.0.0",\r
+                       "description": "This is Dynamic Data type definition generated from resource mapping for the config template name base-config-template.",\r
+                       "properties": {\r
+                               "uplink-2-unit": {\r
+                                       "type": "string"\r
+                               },\r
+                               "bundle-mac": {\r
+                                       "required": true,\r
+                                       "type": "string"\r
+                               },\r
+                               "wan-aggregate-ipv6-addresses": {\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "dt-v6-aggregate"\r
+                                       }\r
+                               },\r
+                               "ospf-area": {\r
+                                       "type": "string"\r
+                               },\r
+                               "ospf-cost": {\r
+                                       "type": "string"\r
+                               },\r
+                               "bundle-id": {\r
+                                       "type": "string"\r
+                               },\r
+                               "adiod-unicast-route-reflectors": {\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "dt-adiod-unicast-route-reflector"\r
+                                       }\r
+                               },\r
+                               "oam-remote-ipv4-address": {\r
+                                       "type": "string"\r
+                               },\r
+                               "adiod-vpnv4-route-reflectors": {\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "dt-adiod-vpnv4-route-reflector"\r
+                                       }\r
+                               },\r
+                               "lo10-local-ipv4-address": {\r
+                                       "type": "string"\r
+                               },\r
+                               "wan-aggregate-ipv4-addresses": {\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "dt-v4-aggregate"\r
+                                       }\r
+                               },\r
+                               "lo0-local-ipv4-address": {\r
+                                       "type": "string"\r
+                               },\r
+                               "uplink-1-unit": {\r
+                                       "type": "string"\r
+                               },\r
+                               "tacacs-server-ipv4-addresses": {\r
+                                       "type": "list",\r
+                                       "entry_schema": {\r
+                                               "type": "dt-tacacs-server-ipv4"\r
+                                       }\r
+                               },\r
+                               "asn-region": {\r
+                                       "type": "string"\r
+                               },\r
+                               "si-local-ipv4-address": {\r
+                                       "type": "string"\r
+                               }\r
+                       },\r
+                       "derived_from": "tosca.datatypes.Dynamic"\r
+               }\r
+       }\r
+}\r