PNF demo blueprint 88/112288/1
authorvmuthukrishnan@aarnanetworks.com <vmuthukrishnan@aarnanetworks.com>
Tue, 8 Sep 2020 17:06:57 +0000 (17:06 +0000)
committervmuthukrishnan@aarnanetworks.com <vmuthukrishnan@aarnanetworks.com>
Tue, 8 Sep 2020 17:07:19 +0000 (17:07 +0000)
Change-Id: I830174d054fdd11fe8ebfbdeafe4abeb5b223dac
Issue-ID: CCSDK-2624
Signed-off-by: vmuthukrishnan@aarnanetworks.com <vmuthukrishnan@aarnanetworks.com>
29 files changed:
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/artifact_types.json [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/data_types.json [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/node_types.json [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/pnf_netconf.json [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/policy_types.json [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/relationship_types.json [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Definitions/resources_definition_types.json [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Environments/yang-models/pg.yang [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/bootstrap-cds.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/connect-cds-mariadb.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/create-config-assing-data.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dd-microk8s.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dd.json [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/dictionary [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/enrich-and-download-cds-blueprint.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/enrich-and-publish-cds-blueprint.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/get-cds-blueprint-models.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/kotlin/ConfigDeploy.kt [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/process-config-deploy.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/publish-enriched-cds-blueprint.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/save-enriched-blueprint.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/tail-cds-bp-log.sh [new file with mode: 0755]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/templates/day-n-pnf-config.template [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Scripts/templates/pnf-config-deploy.template [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/TOSCA-Metadata/TOSCA.meta [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/netconfrpc-mapping.json [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/netconfrpc-template.vtl [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/pnf-mapping.json [new file with mode: 0644]
components/model-catalog/blueprint-model/service-blueprint/PNF_DEMO/Templates/pnf-template.vtl [new file with mode: 0644]

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 (file)
index 0000000..da498e3
--- /dev/null
@@ -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 (file)
index 0000000..b959185
--- /dev/null
@@ -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 (file)
index 0000000..30d0749
--- /dev/null
@@ -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 (file)
index 0000000..57f408a
--- /dev/null
@@ -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 (file)
index 0000000..1e44cc7
--- /dev/null
@@ -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 (file)
index 0000000..4ddd7a5
--- /dev/null
@@ -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 (file)
index 0000000..5405dfc
--- /dev/null
@@ -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 (file)
index 0000000..dfa8fc2
--- /dev/null
@@ -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 (executable)
index 0000000..2966d19
--- /dev/null
@@ -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 (executable)
index 0000000..ce8c017
--- /dev/null
@@ -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 (executable)
index 0000000..a169047
--- /dev/null
@@ -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 (executable)
index 0000000..b7891d8
--- /dev/null
@@ -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 (file)
index 0000000..c7361c9
--- /dev/null
@@ -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 (file)
index 0000000..2b49859
--- /dev/null
@@ -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 (executable)
index 0000000..4741321
--- /dev/null
@@ -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 (executable)
index 0000000..39c3f32
--- /dev/null
@@ -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 (executable)
index 0000000..dc35fde
--- /dev/null
@@ -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 (file)
index 0000000..96ef699
--- /dev/null
@@ -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 (executable)
index 0000000..27daefe
--- /dev/null
@@ -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 (executable)
index 0000000..88b1d96
--- /dev/null
@@ -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 (executable)
index 0000000..e0ea485
--- /dev/null
@@ -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 (executable)
index 0000000..f3b4aa7
--- /dev/null
@@ -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 (file)
index 0000000..474af68
--- /dev/null
@@ -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 (file)
index 0000000..9103d2d
--- /dev/null
@@ -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 (file)
index 0000000..c155c29
--- /dev/null
@@ -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 (file)
index 0000000..2ef877f
--- /dev/null
@@ -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 (file)
index 0000000..a9229b5
--- /dev/null
@@ -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 (file)
index 0000000..2121987
--- /dev/null
@@ -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 (file)
index 0000000..254929e
--- /dev/null
@@ -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}"
+}