diff options
author | vmuthukrishnan@aarnanetworks.com <vmuthukrishnan@aarnanetworks.com> | 2020-09-08 17:06:57 +0000 |
---|---|---|
committer | vmuthukrishnan@aarnanetworks.com <vmuthukrishnan@aarnanetworks.com> | 2020-09-08 17:07:19 +0000 |
commit | 4557a0e400de554ef3474bcd5d7c36a85b5be937 (patch) | |
tree | 882ced41c5b1fab1350a0274afd93f19a93c752f | |
parent | b708ee62df489337479bd00a4f0cd5b502d2f9c9 (diff) |
PNF demo blueprint
Change-Id: I830174d054fdd11fe8ebfbdeafe4abeb5b223dac
Issue-ID: CCSDK-2624
Signed-off-by: vmuthukrishnan@aarnanetworks.com <vmuthukrishnan@aarnanetworks.com>
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}" +} |