aboutsummaryrefslogtreecommitdiffstats
path: root/components/model-catalog
diff options
context:
space:
mode:
authorvmuthukrishnan@aarnanetworks.com <vmuthukrishnan@aarnanetworks.com>2020-09-08 17:06:57 +0000
committervmuthukrishnan@aarnanetworks.com <vmuthukrishnan@aarnanetworks.com>2020-09-08 17:07:19 +0000
commit4557a0e400de554ef3474bcd5d7c36a85b5be937 (patch)
tree882ced41c5b1fab1350a0274afd93f19a93c752f /components/model-catalog
parentb708ee62df489337479bd00a4f0cd5b502d2f9c9 (diff)
PNF demo blueprint
Change-Id: I830174d054fdd11fe8ebfbdeafe4abeb5b223dac Issue-ID: CCSDK-2624 Signed-off-by: vmuthukrishnan@aarnanetworks.com <vmuthukrishnan@aarnanetworks.com>
Diffstat (limited to 'components/model-catalog')
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/artifact_types.json16
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/data_types.json162
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/node_types.json229
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/pnf_netconf.json198
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/policy_types.json3
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/relationship_types.json3
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/resources_definition_types.json102
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Environments/yang-models/pg.yang42
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/bootstrap-cds.sh35
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/connect-cds-mariadb.sh35
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/create-config-assing-data.sh57
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dd-microk8s.sh46
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dd.json155
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dictionary1
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/enrich-and-download-cds-blueprint.sh51
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/enrich-and-publish-cds-blueprint.sh40
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/get-cds-blueprint-models.sh29
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/kotlin/ConfigDeploy.kt87
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/process-config-deploy.sh60
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/publish-enriched-cds-blueprint.sh41
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/save-enriched-blueprint.sh39
-rwxr-xr-xcomponents/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/tail-cds-bp-log.sh29
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/templates/day-n-pnf-config.template29
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/templates/pnf-config-deploy.template27
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/TOSCA-Metadata/TOSCA.meta7
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/netconfrpc-mapping.json92
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/netconfrpc-template.vtl19
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/pnf-mapping.json109
-rw-r--r--components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/pnf-template.vtl8
29 files changed, 1751 insertions, 0 deletions
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/artifact_types.json b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/artifact_types.json
new file mode 100644
index 000000000..da498e35e
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/artifact_types.json
@@ -0,0 +1,16 @@
+{
+ "artifact_types" : {
+ "artifact-mapping-resource" : {
+ "description" : "Resource Mapping File used along with Configuration template",
+ "version" : "1.0.0",
+ "derived_from" : "tosca.artifacts.Implementation",
+ "file_ext" : [ "json" ]
+ },
+ "artifact-template-velocity" : {
+ "description" : " Velocity Template used for Configuration",
+ "version" : "1.0.0",
+ "derived_from" : "tosca.artifacts.Implementation",
+ "file_ext" : [ "vtl" ]
+ }
+ }
+} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/data_types.json b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/data_types.json
new file mode 100644
index 000000000..b95918518
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/data_types.json
@@ -0,0 +1,162 @@
+{
+ "data_types": {
+ "dt-config-assign-properties": {
+ "description": "Dynamic DataType definition for workflow(config-assign).",
+ "version": "1.0.0",
+ "properties": {
+ "netconf-server-port": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "pnf-ipv4-address": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "netconf-username": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "pnf-id": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "netconf-password": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "stream-count": {
+ "description": "",
+ "required": true,
+ "type": "integer",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ }
+ },
+ "derived_from": "tosca.datatypes.Dynamic"
+ },
+ "dt-config-deploy-properties": {
+ "description": "Dynamic DataType definition for workflow(config-assign).",
+ "version": "1.0.0",
+ "properties": {
+ "netconf-server-port": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "pnf-ipv4-address": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "netconf-username": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "pnf-id": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "netconf-password": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "stream-count": {
+ "description": "",
+ "required": true,
+ "type": "integer",
+ "status": "",
+ "constraints": [
+ {}
+ ],
+ "entry_schema": {
+ "type": ""
+ }
+ }
+ },
+ "derived_from": "tosca.datatypes.Dynamic"
+ }
+ }
+} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/node_types.json b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/node_types.json
new file mode 100644
index 000000000..30d0749b2
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/node_types.json
@@ -0,0 +1,229 @@
+{
+ "node_types" : {
+ "component-resource-resolution" : {
+ "description" : "This is Resource Assignment Component API",
+ "version" : "1.0.0",
+ "attributes" : {
+ "assignment-params" : {
+ "description" : "Holds resolved template, resolution-summary or key-value",
+ "required" : true,
+ "type" : "string"
+ },
+ "assignment-map" : {
+ "description" : "Holds resolved values for each artifact prefix eg. { vdns: { vnf-id: 123 } }",
+ "required" : true,
+ "type" : "map"
+ }
+ },
+ "capabilities" : {
+ "component-node" : {
+ "type" : "tosca.capabilities.Node"
+ }
+ },
+ "interfaces" : {
+ "ResourceResolutionComponent" : {
+ "operations" : {
+ "process" : {
+ "inputs" : {
+ "resolution-key" : {
+ "description" : "Key for service instance related correlation.",
+ "required" : false,
+ "type" : "string"
+ },
+ "occurrence" : {
+ "description" : "Number of time to perform the resolution.",
+ "required" : false,
+ "type" : "integer",
+ "default" : 1
+ },
+ "store-result" : {
+ "description" : "Whether or not to store the output.",
+ "required" : false,
+ "type" : "boolean"
+ },
+ "resource-type" : {
+ "description" : "Request type.",
+ "required" : false,
+ "type" : "string"
+ },
+ "resolution-summary" : {
+ "description" : "Enable resolution-summary output",
+ "required" : false,
+ "type" : "boolean"
+ },
+ "artifact-prefix-names" : {
+ "description" : "Template , Resource Assignment Artifact Prefix names",
+ "required" : true,
+ "type" : "list",
+ "entry_schema" : {
+ "type" : "string"
+ }
+ },
+ "request-id" : {
+ "description" : "Request Id, Unique Id for the request.",
+ "required" : true,
+ "type" : "string"
+ },
+ "resource-id" : {
+ "description" : "Resource Id.",
+ "required" : false,
+ "type" : "string"
+ },
+ "action-name" : {
+ "description" : "Action Name of the process",
+ "required" : false,
+ "type" : "string"
+ },
+ "dynamic-properties" : {
+ "description" : "Dynamic Json Content or DSL Json reference.",
+ "required" : false,
+ "type" : "json"
+ }
+ },
+ "outputs" : {
+ "resource-assignment-params" : {
+ "required" : true,
+ "type" : "string"
+ },
+ "resource-assignment-map" : {
+ "required" : true,
+ "type" : "string"
+ },
+ "status" : {
+ "required" : true,
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "derived_from" : "tosca.nodes.Component"
+ },
+ "component-script-executor" : {
+ "description" : "This is CLI Transaction Configuration Component API",
+ "version" : "1.0.0",
+ "attributes" : {
+ "response-data" : {
+ "required" : false,
+ "type" : "json"
+ }
+ },
+ "capabilities" : {
+ "component-node" : {
+ "type" : "tosca.capabilities.Node"
+ }
+ },
+ "interfaces" : {
+ "ComponentScriptExecutor" : {
+ "operations" : {
+ "process" : {
+ "inputs" : {
+ "script-type" : {
+ "description" : "Script type, kotlin type is supported",
+ "required" : true,
+ "type" : "string",
+ "constraints" : [ {
+ "valid_values" : [ "kotlin", "jython", "internal" ]
+ } ],
+ "default" : "internal"
+ },
+ "script-class-reference" : {
+ "description" : "Kotlin Script class name or jython script name.",
+ "required" : true,
+ "type" : "string"
+ },
+ "dynamic-properties" : {
+ "description" : "Dynamic Json Content or DSL Json reference.",
+ "required" : false,
+ "type" : "json"
+ }
+ },
+ "outputs" : {
+ "response-data" : {
+ "description" : "Execution Response Data.",
+ "required" : false,
+ "type" : "string"
+ },
+ "status" : {
+ "description" : "Status of the Component Execution ( success or failure )",
+ "required" : true,
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "derived_from" : "tosca.nodes.Component"
+ },
+ "source-default" : {
+ "description" : "This is Default Resource Source Node Type",
+ "version" : "1.0.0",
+ "properties" : { },
+ "derived_from" : "tosca.nodes.ResourceSource"
+ },
+ "source-input" : {
+ "description" : "This is Input Resource Source Node Type",
+ "version" : "1.0.0",
+ "properties" : { },
+ "derived_from" : "tosca.nodes.ResourceSource"
+ },
+ "tosca.nodes.Component" : {
+ "description" : "This is default Component Node",
+ "version" : "1.0.0",
+ "derived_from" : "tosca.nodes.Root"
+ },
+ "tosca.nodes.ResourceSource" : {
+ "description" : "TOSCA base type for Resource Sources",
+ "version" : "1.0.0",
+ "derived_from" : "tosca.nodes.Root"
+ },
+ "tosca.nodes.Vnf" : {
+ "description" : "This is VNF Node Type",
+ "version" : "1.0.0",
+ "derived_from" : "tosca.nodes.Root"
+ },
+ "vnf-netconf-device" : {
+ "description" : "This is VNF Device with Netconf Capability",
+ "version" : "1.0.0",
+ "capabilities" : {
+ "netconf" : {
+ "type" : "tosca.capabilities.Netconf",
+ "properties" : {
+ "login-key" : {
+ "required" : true,
+ "type" : "string",
+ "default" : "sdnc"
+ },
+ "login-account" : {
+ "required" : true,
+ "type" : "string",
+ "default" : "sdnc-tacacs"
+ },
+ "source" : {
+ "required" : false,
+ "type" : "string",
+ "default" : "npm"
+ },
+ "target-ip-address" : {
+ "required" : true,
+ "type" : "string"
+ },
+ "port-number" : {
+ "required" : true,
+ "type" : "integer",
+ "default" : 830
+ },
+ "connection-time-out" : {
+ "required" : false,
+ "type" : "integer",
+ "default" : 30
+ }
+ }
+ }
+ },
+ "derived_from" : "tosca.nodes.Vnf"
+ }
+ }
+} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/pnf_netconf.json b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/pnf_netconf.json
new file mode 100644
index 000000000..57f408a41
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/pnf_netconf.json
@@ -0,0 +1,198 @@
+{
+ "tosca_definitions_version": "controller_blueprint_1_0_0",
+ "metadata": {
+ "template_author": "Aarna Services",
+ "author_email": "vmuthukrishnan@aarnanetworks.com",
+ "user_groups": "ADMIN, OPERATION",
+ "template_name": "pnf_netconf",
+ "template_version": "1.0.0",
+ "template_tags": "pnf_netconf",
+ "template_type": "DEFAULT"
+ },
+ "imports": [
+ {
+ "file": "Definitions/data_types.json"
+ },
+ {
+ "file": "Definitions/relationship_types.json"
+ },
+ {
+ "file": "Definitions/artifact_types.json"
+ },
+ {
+ "file": "Definitions/node_types.json"
+ },
+ {
+ "file": "Definitions/policy_types.json"
+ }
+ ],
+ "dsl_definitions": {
+ "config-deploy-properties": {
+ "resolution-key": {
+ "get_input": "resolution-key"
+ }
+ }
+ },
+ "topology_template": {
+ "workflows": {
+ "config-assign": {
+ "steps": {
+ "activate-process": {
+ "description": "Create a configlet",
+ "target": "config-assign",
+ "activities": [
+ {
+ "call_operation": ""
+ }
+ ]
+ }
+ },
+ "inputs": {
+ "resolution-key": {
+ "required": true,
+ "type": "string"
+ },
+ "store-result": {
+ "required": true,
+ "type": "boolean"
+ },
+ "config-assign-properties": {
+ "description": "Dynamic PropertyDefinition for workflow(config-assign).",
+ "required": true,
+ "type": "dt-config-assign-properties"
+ }
+ }
+ },
+ "config-deploy": {
+ "steps": {
+ "imperative-workflow-step-1": {
+ "description": "execute restconf",
+ "target": "execute",
+ "activities": [
+ {
+ "call_operation": "ComponentScriptExecutor.process"
+ }
+ ]
+ }
+ },
+ "inputs": {
+ "resolution-key": {
+ "required": true,
+ "type": "string"
+ },
+ "netconf-password": {
+ "required": true,
+ "type": "string"
+ },
+ "netconf-username": {
+ "required": true,
+ "type": "string"
+ },
+ "pnf-ipv4-address": {
+ "required": true,
+ "type": "string"
+ },
+ "config-deploy-properties": {
+ "description": "Dynamic PropertyDefinition for workflow(config-assign).",
+ "required": true,
+ "type": "dt-config-assign-properties"
+ }
+ }
+ }
+ },
+ "node_templates": {
+ "netconf-device": {
+ "type": "vnf-netconf-device",
+ "capabilities": {
+ "netconf": {
+ "properties": {
+ "login-key": {
+ "get_input": "netconf-password"
+ },
+ "login-account": {
+ "get_input": "netconf-username"
+ },
+ "target-ip-address": {
+ "get_input": "pnf-ipv4-address"
+ },
+ "port-number": 830,
+ "connection-time-out": 60
+ }
+ }
+ }
+ },
+ "config-assign": {
+ "type": "component-resource-resolution",
+ "interfaces": {
+ "ResourceResolutionComponent": {
+ "operations": {
+ "process": {
+ "inputs": {
+ "resolution-key": {
+ "get_input": "resolution-key"
+ },
+ "store-result": true,
+ "artifact-prefix-names": [
+ "pnf",
+ "netconfrpc"
+ ]
+ },
+ "outputs": {
+ "resource-assignment-params": {
+ "get_attribute": [
+ "SELF",
+ "assignment-params"
+ ]
+ },
+ "status": "success"
+ }
+ }
+ }
+ }
+ },
+ "artifacts": {
+ "pnf-template": {
+ "type": "artifact-template-velocity",
+ "file": "Templates/pnf-template.vtl"
+ },
+ "pnf-mapping": {
+ "type": "artifact-mapping-resource",
+ "file": "Templates/pnf-mapping.json"
+ },
+ "netconfrpc-template": {
+ "type": "artifact-template-velocity",
+ "file": "Templates/netconfrpc-template.vtl"
+ },
+ "netconfrpc-mapping": {
+ "type": "artifact-mapping-resource",
+ "file": "Templates/netconfrpc-mapping.json"
+ }
+ }
+ },
+ "execute": {
+ "type": "component-script-executor",
+ "requirements": {
+ "netconf-connection": {
+ "capability": "netconf",
+ "node": "netconf-device",
+ "relationship": "tosca.relationships.ConnectsTo"
+ }
+ },
+ "interfaces": {
+ "ComponentScriptExecutor": {
+ "operations": {
+ "process": {
+ "inputs": {
+ "script-type": "kotlin",
+ "script-class-reference": "org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts.ConfigDeploy",
+ "instance-dependencies": [],
+ "dynamic-properties": "*config-deploy-properties"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/policy_types.json b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/policy_types.json
new file mode 100644
index 000000000..1e44cc70a
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/policy_types.json
@@ -0,0 +1,3 @@
+{
+ "policy_types" : { }
+} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/relationship_types.json b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/relationship_types.json
new file mode 100644
index 000000000..4ddd7a57c
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/relationship_types.json
@@ -0,0 +1,3 @@
+{
+ "relationship_types" : { }
+} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/resources_definition_types.json b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/resources_definition_types.json
new file mode 100644
index 000000000..5405dfccf
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/resources_definition_types.json
@@ -0,0 +1,102 @@
+{
+ "netconf-password" : {
+ "tags" : "netconf-password",
+ "name" : "netconf-password",
+ "property" : {
+ "description" : "netconf-password string attribute",
+ "type" : "string"
+ },
+ "group" : "default",
+ "updated-by" : "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources" : {
+ "input" : {
+ "type" : "source-input",
+ "properties" : { }
+ }
+ }
+ },
+ "netconf-server-port" : {
+ "tags" : "netconf-server-port",
+ "name" : "netconf-server-port",
+ "property" : {
+ "description" : "netconf-server-port string attribute",
+ "type" : "string"
+ },
+ "group" : "default",
+ "updated-by" : "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources" : {
+ "input" : {
+ "type" : "source-input",
+ "properties" : { }
+ }
+ }
+ },
+ "netconf-username" : {
+ "tags" : "netconf-username",
+ "name" : "netconf-username",
+ "property" : {
+ "description" : "netconf-username string attribute",
+ "type" : "string"
+ },
+ "group" : "default",
+ "updated-by" : "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources" : {
+ "input" : {
+ "type" : "source-input",
+ "properties" : { }
+ }
+ }
+ },
+ "pnf-id" : {
+ "tags" : "pnf-id",
+ "name" : "pnf-id",
+ "property" : {
+ "description" : "pnf-id string attribute",
+ "type" : "string"
+ },
+ "group" : "default",
+ "updated-by" : "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources" : {
+ "input" : {
+ "type" : "source-input",
+ "properties" : { }
+ }
+ }
+ },
+ "pnf-ipv4-address" : {
+ "tags" : "pnf-ipv4-address",
+ "name" : "pnf-ipv4-address",
+ "property" : {
+ "description" : "pnf-ipv4-address string attribute",
+ "type" : "string"
+ },
+ "group" : "default",
+ "updated-by" : "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources" : {
+ "input" : {
+ "type" : "source-input",
+ "properties" : { }
+ }
+ }
+ },
+ "stream-count" : {
+ "tags" : "stream-count",
+ "name" : "stream-count",
+ "property" : {
+ "description" : "stream-count string attribute",
+ "type" : "integer"
+ },
+ "group" : "default",
+ "updated-by" : "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources" : {
+ "input" : {
+ "type" : "source-default",
+ "properties" : { }
+ },
+ "default" : {
+ "type" : "source-default",
+ "properties" : { }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Environments/yang-models/pg.yang b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Environments/yang-models/pg.yang
new file mode 100644
index 000000000..dfa8fc28d
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Environments/yang-models/pg.yang
@@ -0,0 +1,42 @@
+module sample-plugin {
+
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:sample-plugin";
+ prefix "sample-plugin";
+
+ description
+ "This YANG module defines the generic configuration and
+ operational data for sample-plugin in VPP";
+
+ revision "2016-09-18" {
+ description "Initial revision of sample-plugin model";
+ }
+
+ container sample-plugin {
+ uses sample-plugin-params;
+ description "Configuration data of sample-plugin in Honeycomb";
+
+ // READ
+ // curl -u admin:admin http://localhost:8181/restconf/config/sample-plugin:sample-plugin
+
+ // WRITE
+ // curl http://localhost:8181/restconf/operational/sample-plugin:sample-plugin
+
+ }
+
+ grouping sample-plugin-params {
+ container pg-streams {
+ list pg-stream {
+
+ key id;
+ leaf id {
+ type string;
+ }
+
+ leaf is-enabled {
+ type boolean;
+ }
+ }
+ }
+ }
+}
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/bootstrap-cds.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/bootstrap-cds.sh
new file mode 100755
index 000000000..2966d19ff
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/bootstrap-cds.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${CDS_BP_SVC_IP}" ]
+ then
+ echo "CDS BP Service IP is not found and cannot proceed further"
+ exit 1;
+fi
+
+# Make the REST API to load the models
+curl -v --location --request POST http://${CDS_BP_SVC_IP}:8080/api/v1/blueprint-model/bootstrap \
+--header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' \
+--header 'Content-Type: application/json' \
+--data-raw ' {
+"loadModelType" : true,
+"loadResourceDictionary" : true,
+"loadCBA" : true
+}'
+
+exit 0
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/connect-cds-mariadb.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/connect-cds-mariadb.sh
new file mode 100755
index 000000000..ce8c01791
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/connect-cds-mariadb.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+MARIADB_POD_NAME=$(kubectl get pods -n onap | grep 'dev-cds-db-0' | head -n 1 | awk '{print $1}')
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${MARIADB_POD_NAME}" ]
+ then
+ echo "CDS MariDB POD is not found so cannot proceed further"
+ exit 1;
+fi
+
+# CDS Mariadb password
+MYSQL_PASSWORD=Lase6+CopuBavb
+MYSQL_USER=sdnctl
+MYSQL_ROOT_PASSWORD=Zumu5%NoyuJagx
+
+echo "Going to connect to CDS MariaDB database sdnctl"
+kubectl exec -n onap ${MARIADB_POD_NAME} -it -- mysql -u root -pZumu5%NoyuJagx sdnctl
+
+
+exit 0
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/create-config-assing-data.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/create-config-assing-data.sh
new file mode 100755
index 000000000..a169047cb
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/create-config-assing-data.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+resolution_key=${1}
+pnf_ip_address=${2}
+stream_count=${3}
+
+
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${CDS_BP_SVC_IP}" ]
+ then
+ echo "CDS BP Service IP is not found and cannot proceed further"
+ exit 1;
+fi
+
+if [ -z "${resolution_key}" ] || [ -z "${pnf_ip_address}" ] || [ -z "${stream_count}" ]
+ then
+ echo -e "Invalid config assing resolution-key ${resolution_key} \
+ OR pnf-ip-address ${pnf_ip_address} OR stream_count ${stream_count}"
+ echo "Usage: $0 <resolution-key> <pnf_ip_address> <stream_count>"
+ exit 0
+fi
+
+template_file="./templates/day-n-pnf-config.template"
+temp_file="/tmp/day-n-pnf-config.json"
+cp -f $template_file $temp_file
+
+# Now replace the tokens
+sed -i "s|STREAM_COUNT|${stream_count}|g" $temp_file
+sed -i "s|PNF_IP_ADDRESS|${pnf_ip_address}|g" $temp_file
+sed -i "s|CONFIG_NAME|${resolution_key}|g" $temp_file
+
+# Make the REST API to load the models
+curl -v --location --request POST http://${CDS_BP_SVC_IP}:8080/api/v1/execution-service/process \
+--header 'Content-Type: application/json;charset=UTF-8' \
+--header 'Accept: application/json;charset=UTF-8,application/json' \
+--header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' \
+--header 'Host: cds-blueprints-processor-http:8080' \
+--header 'Content-Type: text/json' \
+--data "@$temp_file" | python3 -m json.tool
+
+
+exit 0
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dd-microk8s.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dd-microk8s.sh
new file mode 100755
index 000000000..b7891d82c
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dd-microk8s.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+JSON_FILE=$1
+
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${CDS_BP_SVC_IP}" ] || [ -z "${JSON_FILE}" ]
+ then
+ echo "CDS BP Service IP is not found OR dd.json file is not given"
+ echo "Usage : $0 <Data Dictionary JSON file path>"
+ exit 1;
+fi
+
+l=`jq '.|length' ${JSON_FILE}`
+echo "Found $l Dictionary Definition Entries"
+i=0
+while [ $i -lt $l ]
+do
+ echo "i = $i"
+ d=`jq ".[$i]" ${JSON_FILE}`
+ echo $d
+ curl -k -v -O "http://${CDS_BP_SVC_IP}:8080/api/v1/dictionary" \
+ --header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' \
+ --header 'Content-Type: application/json' \
+ -d"$d"
+
+ sleep 1
+
+ echo -e "\n*****************************************\n"
+ i=$(( $i + 1 ))
+
+done
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dd.json b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dd.json
new file mode 100644
index 000000000..c7361c9e4
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dd.json
@@ -0,0 +1,155 @@
+[
+ {
+ "name": "netconf-password",
+ "tags": "netconf-password",
+ "data_type": "string",
+ "description": "netconf-password",
+ "entry_schema": "string",
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "updatedBy": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "definition": {
+ "tags": "netconf-password",
+ "name": "netconf-password",
+ "property": {
+ "description": "netconf-password string attribute",
+ "type": "string"
+ },
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources": {
+ "input": {
+ "type": "source-input",
+ "properties": {}
+ }
+ }
+ }
+ },
+ {
+ "name": "netconf-username",
+ "tags": "netconf-username",
+ "data_type": "string",
+ "description": "netconf-username",
+ "entry_schema": "string",
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "updatedBy": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "definition": {
+ "tags": "netconf-username",
+ "name": "netconf-username",
+ "property": {
+ "description": "netconf-username string attribute",
+ "type": "string"
+ },
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources": {
+ "input": {
+ "type": "source-input",
+ "properties": {}
+ }
+ }
+ }
+ },
+ {
+ "name": "netconf-server-port",
+ "tags": "netconf-server-port",
+ "data_type": "string",
+ "description": "netconf-server-port",
+ "entry_schema": "string",
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "updatedBy": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "definition": {
+ "tags": "netconf-server-port",
+ "name": "netconf-server-port",
+ "property": {
+ "description": "netconf-server-port string attribute",
+ "type": "string"
+ },
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources": {
+ "input": {
+ "type": "source-input",
+ "properties": {}
+ }
+ }
+ }
+ },
+ {
+ "name": "pnf-id",
+ "tags": "pnf-id",
+ "data_type": "string",
+ "description": "pnf-id",
+ "entry_schema": "string",
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "updatedBy": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "definition": {
+ "tags": "pnf-id",
+ "name": "pnf-id",
+ "property": {
+ "description": "pnf-id string attribute",
+ "type": "string"
+ },
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources": {
+ "input": {
+ "type": "source-input",
+ "properties": {}
+ }
+ }
+ }
+ },
+ {
+
+ "name": "pnf-ipv4-address",
+ "tags": "pnf-ipv4-address",
+ "data_type": "string",
+ "description": "pnf-ipv4-address",
+ "entry_schema": "string",
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "updatedBy": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "definition": {
+ "tags": "pnf-ipv4-address",
+ "name": "pnf-ipv4-address",
+ "property": {
+ "description": "pnf-ipv4-address string attribute",
+ "type": "string"
+ },
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources": {
+ "input": {
+ "type": "source-input",
+ "properties": {}
+ }
+ }
+ }
+
+ },
+ {
+ "name": "stream-count",
+ "tags": "stream-count",
+ "data_type": "string",
+ "description": "stream-count",
+ "entry_schema": "string",
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "updatedBy": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "definition": {
+ "tags": "stream-count",
+ "name": "stream-count",
+ "property": {
+ "description": "stream-count string attribute",
+ "type": "integer"
+ },
+ "updated-by": "Aarna service <vmuthukrishnan@aarnanetworks.com>",
+ "sources": {
+ "input": {
+ "type": "source-default",
+ "properties": {}
+ },
+ "default": {
+
+ "type": "source-default",
+
+ "properties": {}
+
+ }
+ }
+ }
+ }
+]
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dictionary b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dictionary
new file mode 100644
index 000000000..2b4985931
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dictionary
@@ -0,0 +1 @@
+{"name":"stream-count","dataType":"integer","entrySchema":null,"resourceDictionaryGroup":"default","definition":{"tags":"stream-count","name":"stream-count","property":{"description":"stream-count string attribute","required":null,"type":"integer","status":null,"constraints":null,"metadata":null,"value":null,"default":null,"entry_schema":null,"external-schema":null},"group":"default","updated-by":"Aarna service <vmuthukrishnan@aarnanetworks.com>","sources":{"input":{"description":null,"type":"source-default","metadata":null,"directives":null,"properties":{},"attributes":null,"capabilities":null,"requirements":null,"interfaces":null,"artifacts":null,"copy":null,"node_filter":null},"default":{"description":null,"type":"source-default","metadata":null,"directives":null,"properties":{},"attributes":null,"capabilities":null,"requirements":null,"interfaces":null,"artifacts":null,"copy":null,"node_filter":null}}},"description":"stream-count string attribute","tags":"stream-count","creationDate":"2020-09-08T12:47:55.545Z","updatedBy":"Aarna service <vmuthukrishnan@aarnanetworks.com>"} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/enrich-and-download-cds-blueprint.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/enrich-and-download-cds-blueprint.sh
new file mode 100755
index 000000000..4741321ef
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/enrich-and-download-cds-blueprint.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+zip_file=$1
+
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${CDS_BP_SVC_IP}" ]
+ then
+ echo "CDS BP Service IP is not found and cannot proceed further"
+ exit 1;
+fi
+
+if [ ! -f "$zip_file" ]
+ then
+ echo "Invalid CDS blueprint zip file argument $zip_file"
+ echo "Usage: $0 <CDS Blueprint ZIP file path>"
+ exit 0
+fi
+
+
+# Remove the temporary CBA
+rm -rf /tmp/CBA
+mkdir -p /tmp/CBA
+
+# Enriched CBA file
+ENRICHED_CBA_FILE="/tmp/CBA/ENRICHED-CBA.zip"
+
+
+# Make the REST API to load the models
+curl -v --location --request POST http://${CDS_BP_SVC_IP}:8080/api/v1/blueprint-model/enrich \
+--header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' \
+--form "file=@${zip_file}" \
+-o ${ENRICHED_CBA_FILE}
+
+echo "You can take a look at the enriched CBA archive file ${ENRICHED_CBA_FILE}"
+
+exit 0
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/enrich-and-publish-cds-blueprint.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/enrich-and-publish-cds-blueprint.sh
new file mode 100755
index 000000000..39c3f32e6
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/enrich-and-publish-cds-blueprint.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+zip_file=$1
+
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${CDS_BP_SVC_IP}" ]
+ then
+ echo "CDS BP Service IP is not found and cannot proceed further"
+ exit 1;
+fi
+
+if [ ! -f "$zip_file" ]
+ then
+ echo "Invalid Enriched CDS blueprint zip file argument $zip_file"
+ echo "Usage: $0 <Enriched CDS Blueprint ZIP file path>"
+ exit 0
+fi
+
+# Make the REST API to load the models
+curl -v --location --request POST http://${CDS_BP_SVC_IP}:8080/api/v1/blueprint-model/enrichandpublish \
+--header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' \
+--form "file=@${zip_file}"
+
+
+exit 0
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/get-cds-blueprint-models.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/get-cds-blueprint-models.sh
new file mode 100755
index 000000000..dc35fde68
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/get-cds-blueprint-models.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${CDS_BP_SVC_IP}" ]
+ then
+ echo "CDS BP Service IP is not found and cannot proceed further"
+ exit 1;
+fi
+
+# Make the REST API to get the models
+curl -v --location --request GET http://${CDS_BP_SVC_IP}:8080/api/v1/blueprint-model \
+--header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' | python3 -m json.tool
+
+exit 0
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/kotlin/ConfigDeploy.kt b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/kotlin/ConfigDeploy.kt
new file mode 100644
index 000000000..96ef69937
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/kotlin/ConfigDeploy.kt
@@ -0,0 +1,87 @@
+/*
+ * Copyright © 2020 Aarna Networks, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts
+
+import com.fasterxml.jackson.databind.node.ObjectNode
+import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.storedContentFromResolvedArtifactNB
+import org.onap.ccsdk.cds.blueprintsprocessor.rest.BasicAuthRestClientProperties
+import org.onap.ccsdk.cds.blueprintsprocessor.rest.RestClientProperties
+import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BasicAuthRestClientService
+import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BlueprintWebClientService
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractScriptComponentFunction
+import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
+import org.slf4j.LoggerFactory
+import org.springframework.http.HttpMethod
+import org.springframework.web.client.RestTemplate
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.netconfClientService
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.netconfDevice
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.netconf.executor.netconfDeviceInfo
+
+open class ConfigDeploy : AbstractScriptComponentFunction() {
+
+ private val log = LoggerFactory.getLogger(ConfigDeploy::class.java)!!
+
+ override suspend fun processNB(executionRequest: ExecutionServiceInput) {
+
+ /*
+ * Here resolution-key could be day-1, day-2 etc..
+ * This will come as part of config-deploy request payload.
+ */
+
+ val resolution_key = getDynamicProperties("resolution-key").asText()
+ log.info("Got the resolution_key: $resolution_key from config-deploy going to retrive the data from DB")
+
+ // Read the config-assing data using the resolution key + Prefix name for the template
+ // We can select the given configuration using the resolution_key=day-1 or day-2
+ // With the template prefix name for example "netconfrpc" to load the
+ // Store configuration from the CDS DB
+ val payload = storedContentFromResolvedArtifactNB(resolution_key, "netconfrpc")
+ log.info("PNF configuration data from DB : \n$payload\n")
+
+ // "netconf-connection" is the tosca Node reference to "execute"
+ // workflow.
+ val netconf_device = netconfDevice("netconf-connection")
+ val netconf_rpc_client = netconf_device.netconfRpcService
+ val netconf_session = netconf_device.netconfSession
+ netconf_session.connect()
+
+ /**
+ * Invoke the NETCONF RPC, we already have the teamplate loaded
+ * using "resolution-key" & template name prefix.
+ */
+ val dev_response = netconf_rpc_client.invokeRpc(payload)
+ log.info("NETCONF device response message : dev_response\n")
+
+ /**
+ netconf_rpc_client.lock("candidate")
+ netconf_rpc_client.discardConfig()
+ netconf_rpc_client.editConfig(payload, "candidate", "merge")
+ netconf_rpc_client.commit()
+ netconf_rpc_client.unLock("candidate")
+ netconf_rpc_client.getConfig("", "running")
+ */
+
+ log.info("Closing NETCONF device sessing with the device\n")
+ netconf_session.disconnect()
+
+ }
+
+ override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) {
+ log.info("Executing Recovery")
+ }
+}
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/process-config-deploy.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/process-config-deploy.sh
new file mode 100755
index 000000000..27daefea9
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/process-config-deploy.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+resolution_key=${1}
+pnf_ip_address=${2}
+pnf_username="netconf"
+pnf_password="netconf"
+
+
+
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${CDS_BP_SVC_IP}" ]
+ then
+ echo "CDS BP Service IP is not found and cannot proceed further"
+ exit 1;
+fi
+
+if [ -z "${resolution_key}" ] || [ -z "${pnf_ip_address}" ]
+ then
+ echo -e "Invalid config assing resolution-key ${resolution_key} \
+ OR pnf-ip-address ${pnf_ip_address}"
+ echo "Usage: $0 <resolution-key> <pnf_ip_address>"
+ exit 0
+fi
+
+template_file="./templates/pnf-config-deploy.template"
+temp_file="/tmp/pnf-config-deploy.json"
+cp -f $template_file $temp_file
+
+# Now replace the tokens
+sed -i "s|PNF_IP_ADDRESS|${pnf_ip_address}|g" $temp_file
+sed -i "s|CONFIG_NAME|${resolution_key}|g" $temp_file
+sed -i "s|NETCONF_USERNAME|${pnf_username}|g" $temp_file
+sed -i "s|NETCONF_PASSWORD|${pnf_password}|g" $temp_file
+
+# Make the REST API to load the models
+curl -v --location --request POST http://${CDS_BP_SVC_IP}:8080/api/v1/execution-service/process \
+--header 'Content-Type: application/json;charset=UTF-8' \
+--header 'Accept: application/json;charset=UTF-8,application/json' \
+--header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' \
+--header 'Host: cds-blueprints-processor-http:8080' \
+--header 'Content-Type: text/json' \
+--data "@$temp_file" | python3 -m json.tool
+
+
+exit 0
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/publish-enriched-cds-blueprint.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/publish-enriched-cds-blueprint.sh
new file mode 100755
index 000000000..88b1d9654
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/publish-enriched-cds-blueprint.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+zip_file=$1
+
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${CDS_BP_SVC_IP}" ]
+ then
+ echo "CDS BP Service IP is not found and cannot proceed further"
+ exit 1;
+fi
+
+if [ ! -f "$zip_file" ]
+ then
+ echo "Invalid Enriched CDS blueprint zip file argument $zip_file"
+ echo "Usage: $0 <CDS Blueprint ZIP file path>"
+ exit 0
+fi
+
+# Make the REST API to load the models
+curl -v --location --request POST http://${CDS_BP_SVC_IP}:8080/api/v1/blueprint-model/publish \
+--header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' \
+--form "file=@${zip_file}" \
+-o $PWD/DOWLOADED-PUBLISHED-CBA.zip
+
+
+exit 0
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/save-enriched-blueprint.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/save-enriched-blueprint.sh
new file mode 100755
index 000000000..e0ea48565
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/save-enriched-blueprint.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+zip_file=$1
+
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${CDS_BP_SVC_IP}" ]
+ then
+ echo "CDS BP Service IP is not found and cannot proceed further"
+ exit 1;
+fi
+
+if [ ! -f "$zip_file" ]
+ then
+ echo "Invalid Enriched CDS blueprint zip file argument $zip_file"
+ echo "Usage: $0 <CDS Blueprint ZIP file path>"
+ exit 0
+fi
+
+# Make the REST API to load the models
+curl -v --location --request POST http://${CDS_BP_SVC_IP}:8080/api/v1/blueprint-model \
+--header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' \
+--form "file=@${zip_file}" | python3 -m json.tool
+
+exit 0
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/tail-cds-bp-log.sh b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/tail-cds-bp-log.sh
new file mode 100755
index 000000000..f3b4aa75b
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/tail-cds-bp-log.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# Copyright © 2020 Aarna Networks, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+MARIADB_POD_NAME=$(kubectl get pods -n onap | grep 'dev-mariadb-galera-0' | head -n 1 | awk '{print $1}')
+CDS_BP_POD_NAME=$(kubectl get pods -n onap | grep 'cds-blueprints-processor' | head -n 1 | awk '{print $1}')
+CDS_BP_SVC_IP=$(kubectl get svc -n onap | grep 'cds-blueprints-processor-http' | awk '{print $3}')
+
+if [ -z "${CDS_BP_POD_NAME}" ]
+ then
+ echo "CDS BP POD is not found so cannot proceed further"
+ exit 1;
+fi
+
+# Make the REST API to load the models
+kubectl logs -f -n onap ${CDS_BP_POD_NAME}
+
+exit 0
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/templates/day-n-pnf-config.template b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/templates/day-n-pnf-config.template
new file mode 100644
index 000000000..474af68c8
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/templates/day-n-pnf-config.template
@@ -0,0 +1,29 @@
+{
+ "actionIdentifiers": {
+ "mode": "sync",
+ "blueprintName": "pnf_netconf",
+ "blueprintVersion": "1.0.0",
+ "actionName": "config-assign"
+ },
+ "payload": {
+ "config-assign-request": {
+ "template-prefix": [
+ "pnf", "netconfrpc"
+ ],
+ "resolution-key": "CONFIG_NAME",
+ "config-assign-properties": {
+ "pnf-id": "abcd",
+ "pnf-ipv4-address": "PNF_IP_ADDRESS",
+ "netconf-password": "netconf",
+ "netconf-username": "netconf",
+ "netconf-server-port": "830",
+ "stream-count": "STREAM_COUNT"
+ }
+ }
+ },
+ "commonHeader": {
+ "subRequestId": "143748f9-3cd5-4910-81c9-a4601ff2ea58",
+ "requestId": "e5eb1f1e-3386-435d-b290-d49d8af8db4c",
+ "originatorId": "SDNC_DG"
+ }
+}
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/templates/pnf-config-deploy.template b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/templates/pnf-config-deploy.template
new file mode 100644
index 000000000..9103d2d03
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/templates/pnf-config-deploy.template
@@ -0,0 +1,27 @@
+{
+ "actionIdentifiers": {
+ "mode": "sync",
+ "blueprintName": "pnf_netconf",
+ "blueprintVersion": "1.0.0",
+ "actionName": "config-deploy"
+ },
+ "payload": {
+ "config-deploy-request": {
+ "resolution-key": "CONFIG_NAME",
+ "config-deploy-properties": {
+ "pnf-id": "abcd",
+ "pnf-ipv4-address": "PNF_IP_ADDRESS",
+ "netconf-password": "NETCONF_PASSWORD",
+ "netconf-username": "NETCONF_USERNAME"
+ }
+ }
+ }
+
+ ,
+ "commonHeader": {
+ "subRequestId": "143748f9-3cd5-4910-81c9-a4601ff2ea58",
+ "requestId": "e5eb1f1e-3386-435d-b290-d49d8af8db4c",
+ "originatorId": "SDNC_DG"
+ }
+}
+
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/TOSCA-Metadata/TOSCA.meta b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/TOSCA-Metadata/TOSCA.meta
new file mode 100644
index 000000000..c155c2990
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/TOSCA-Metadata/TOSCA.meta
@@ -0,0 +1,7 @@
+TOSCA-Meta-File-Version: 1.0.0
+CSAR-Version: 1.0
+Created-By: Aarna Services
+Entry-Definitions: Definitions/pnf_netconf.json
+Template-Name: pnf_netconf
+Template-Version: 1.0.0
+Template-Tags: pnf_netconf
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/netconfrpc-mapping.json b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/netconfrpc-mapping.json
new file mode 100644
index 000000000..2ef877fb6
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/netconfrpc-mapping.json
@@ -0,0 +1,92 @@
+[
+ {
+ "name": "pnf-id",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "pnf-id",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ },
+ {
+ "name": "pnf-ipv4-address",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "pnf-ipv4-address",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ },
+ {
+ "name": "stream-count",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "integer",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "stream-count",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ },
+ {
+ "name": "netconf-password",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "netconf-password",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ },
+ {
+ "name": "netconf-username",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "netconf-username",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ }
+ ] \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/netconfrpc-template.vtl b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/netconfrpc-template.vtl
new file mode 100644
index 000000000..a9229b5c2
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/netconfrpc-template.vtl
@@ -0,0 +1,19 @@
+<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
+ <edit-config>
+ <target>
+ <running/>
+ </target>
+ <config>
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ #foreach($i in [1..${stream-count.asInt()}])
+ <pg-stream>
+ <id>fw_udp_$i</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ #end
+ </pg-streams>
+ </sample-plugin>
+ </config>
+ </edit-config>
+</rpc>
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/pnf-mapping.json b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/pnf-mapping.json
new file mode 100644
index 000000000..2121987b8
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/pnf-mapping.json
@@ -0,0 +1,109 @@
+[{
+ "name": "pnf-id",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "pnf-id",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ },
+ {
+ "name": "pnf-ipv4-address",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "pnf-ipv4-address",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ },
+ {
+ "name": "netconf-password",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "netconf-password",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ },
+ {
+ "name": "netconf-username",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "netconf-username",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ },
+ {
+ "name": "netconf-server-port",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "netconf-server-port",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ },
+ {
+ "name": "stream-count",
+ "property": {
+ "description": "",
+ "required": true,
+ "type": "string",
+ "status": "",
+ "constraints": [{}],
+ "entry_schema": {
+ "type": ""
+ }
+ },
+ "input-param": true,
+ "dictionary-name": "stream-count",
+ "dictionary-source": "input",
+ "dependencies": [],
+ "version": 0
+ }
+]
diff --git a/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/pnf-template.vtl b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/pnf-template.vtl
new file mode 100644
index 000000000..254929e83
--- /dev/null
+++ b/components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/pnf-template.vtl
@@ -0,0 +1,8 @@
+{
+ "pnf-id" : "${pnf-id}",
+ "pnf-ipv4-address" : "${pnf-ipv4-address}",
+ "netconf-password" : "${netconf-password}",
+ "netconf-username" : "${netconf-username}",
+ "netconf-server-port" : "${netconf-server-port}",
+ "stream-count" : "${stream-count}"
+}