summaryrefslogtreecommitdiffstats
path: root/components/model-catalog/blueprint-model
diff options
context:
space:
mode:
Diffstat (limited to 'components/model-catalog/blueprint-model')
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/PNF_CDS_RESTCONF.json424
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/artifact_types.json (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/artifact_types.json)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/config-assign-pnf-mapping.json (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/config-assign-pnf-mapping.json)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/config-deploy-pnf-mapping.json (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/config-deploy-pnf-mapping.json)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/data_types.json75
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/node_types.json (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/node_types.json)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/pnf-software-upgrade-mapping.json36
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/policy_types.json (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/policy_types.json)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/relationship_types.json (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/relationship_types.json)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/resources_definition_types.json (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/resources_definition_types.json)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Environments/source-db.properties (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Environments/source-db.properties)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Environments/source-rest.properties (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Environments/source-rest.properties)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Plans/CONFIG_configAssign.xml (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Plans/CONFIG_configAssign.xml)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Plans/CONFIG_configDeploy.xml (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Plans/CONFIG_configDeploy.xml)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Plans/CONFIG_upgradeSoftware.xml15
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Scripts/kotlin/RestconfConfigDeploy.kt (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Scripts/kotlin/RestconfConfigDeploy.kt)6
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Scripts/kotlin/RestconfSoftwareUpgrade.kt195
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/TOSCA-Metadata/TOSCA.meta7
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/config-assign-restconf-configlet-template.vtl (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Templates/config-assign-restconf-configlet-template.vtl)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/pnf-swug-config-template.vtl22
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/pnf-swug-download-ne-sw-template.vtl28
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/restconf-mount-template.vtl (renamed from components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Templates/config-deploy-restconf-mount-template.vtl)0
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Tests/uat.yaml374
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/README.md3
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/pnf_config/Tests/uat.yaml4
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/data_types.json23
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/pnf_config_aai.json152
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/TOSCA-Metadata/TOSCA.meta7
-rw-r--r--components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Tests/uat.yaml137
29 files changed, 1183 insertions, 325 deletions
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/PNF_CDS_RESTCONF.json b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/PNF_CDS_RESTCONF.json
new file mode 100644
index 000000000..2e6c2f547
--- /dev/null
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/PNF_CDS_RESTCONF.json
@@ -0,0 +1,424 @@
+{
+ "tosca_definitions_version" : "controller_blueprint_1_0_0",
+ "metadata" : {
+ "template_author" : "Raj Gumma",
+ "author-email" : "raj.gumma@est.tech",
+ "user-groups" : "ADMIN, OPERATION",
+ "template_name" : "PNF_CDS_RESTCONF",
+ "template_version" : "1.0.0",
+ "template_tags" : "PNF, Restconf, config, configuration, software upgrade"
+ },
+ "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"
+ }
+ },
+ "precheck-properties" : {
+ "resolution-key" : {
+ "get_input" : "resolution-key"
+ }
+ },
+ "downloadNeSw-properties" : {
+ "resolution-key" : {
+ "get_input" : "resolution-key"
+ }
+ },
+ "activateNeSw-properties" : {
+ "resolution-key" : {
+ "get_input" : "resolution-key"
+ }
+ },
+ "postcheck-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" : {
+ "activate-process" : {
+ "description" : "Send a configlet to the pnf",
+ "target" : "config-deploy",
+ "activities" : [ {
+ "call_operation" : ""
+ } ]
+ }
+ },
+ "inputs" : {
+ "resolution-key" : {
+ "required" : true,
+ "type" : "string"
+ },
+ "config-deploy-properties" : {
+ "description" : "Dynamic PropertyDefinition for workflow(config-deploy).",
+ "required" : true,
+ "type" : "dt-config-deploy-properties"
+ }
+ }
+ },
+ "precheck" : {
+ "steps" : {
+ "activate-process" : {
+ "description" : "Check if pnf ready for sw upgrade",
+ "target" : "precheck",
+ "activities" : [ {
+ "call_operation" : ""
+ } ]
+ }
+ },
+ "inputs" : {
+ "resolution-key" : {
+ "required" : true,
+ "type" : "string"
+ },
+ "precheck-properties" : {
+ "description" : "Dynamic PropertyDefinition for precheck workflow(software-upgrade).",
+ "required" : true,
+ "type" : "dt-precheck-properties"
+ }
+ }
+ },
+ "downloadNeSw" : {
+ "steps" : {
+ "activate-process" : {
+ "description" : "Trigger download new software for sw upgrade",
+ "target" : "downloadNeSw",
+ "activities" : [ {
+ "call_operation" : ""
+ } ]
+ }
+ },
+ "inputs" : {
+ "resolution-key" : {
+ "required" : true,
+ "type" : "string"
+ },
+ "downloadNeSw-properties" : {
+ "description" : "Dynamic PropertyDefinition for downloadNeSw workflow(software-upgrade).",
+ "required" : true,
+ "type" : "dt-downloadNeSw-properties"
+ }
+ }
+ },
+ "activateNeSw" : {
+ "steps" : {
+ "activate-process" : {
+ "description" : "Trigger activation of target software version for pnf upgrade",
+ "target" : "activateNeSw",
+ "activities" : [ {
+ "call_operation" : ""
+ } ]
+ }
+ },
+ "inputs" : {
+ "resolution-key" : {
+ "required" : true,
+ "type" : "string"
+ },
+ "activateNeSw-properties" : {
+ "description" : "Dynamic PropertyDefinition for activateNeSw workflow(software-upgrade).",
+ "required" : true,
+ "type" : "dt-activateNeSw-properties"
+ }
+ }
+ },
+ "postcheck" : {
+ "steps" : {
+ "activate-process" : {
+ "description" : "Check if pnf upgrade is completed",
+ "target" : "postcheck",
+ "activities" : [ {
+ "call_operation" : ""
+ } ]
+ }
+ },
+ "inputs" : {
+ "resolution-key" : {
+ "required" : true,
+ "type" : "string"
+ },
+ "postcheck-properties" : {
+ "description" : "Dynamic PropertyDefinition for postcheck workflow(software-upgrade).",
+ "required" : true,
+ "type" : "dt-postcheck-properties"
+ }
+ }
+ }
+ },
+ "node_templates" : {
+ "config-assign" : {
+ "type" : "component-resource-resolution",
+ "interfaces" : {
+ "ResourceResolutionComponent" : {
+ "operations" : {
+ "process" : {
+ "inputs" : {
+ "resolution-key" : {
+ "get_input" : "resolution-key"
+ },
+ "store-result" : true,
+ "artifact-prefix-names" : [ "config-assign" ]
+ },
+ "outputs" : {
+ "resource-assignment-params" : {
+ "get_attribute" : [ "SELF", "assignment-params" ]
+ },
+ "status" : "success"
+ }
+ }
+ }
+ }
+ },
+ "artifacts" : {
+ "config-assign-template" : {
+ "type" : "artifact-template-velocity",
+ "file" : "Templates/config-assign-restconf-configlet-template.vtl"
+ },
+ "config-assign-mapping" : {
+ "type" : "artifact-mapping-resource",
+ "file" : "Definitions/config-assign-pnf-mapping.json"
+ }
+ }
+ },
+ "config-deploy" : {
+ "type" : "component-script-executor",
+ "interfaces" : {
+ "ComponentScriptExecutor" : {
+ "operations" : {
+ "process" : {
+ "implementation" : {
+ "primary" : "component-script",
+ "timeout" : 180,
+ "operation_host" : "SELF"
+ },
+ "inputs" : {
+ "script-type" : "kotlin",
+ "script-class-reference" : "cba.pnf.config.aai.RestconfConfigDeploy",
+ "dynamic-properties" : "*config-deploy-properties"
+ },
+ "outputs" : {
+ "response-data" : "",
+ "status" : "success"
+ }
+ }
+ }
+ }
+ },
+ "artifacts" : {
+ "config-deploy-template" : {
+ "type" : "artifact-template-velocity",
+ "file" : "Templates/restconf-mount-template.vtl"
+ },
+ "config-deploy-mapping" : {
+ "type" : "artifact-mapping-resource",
+ "file" : "Definitions/config-deploy-pnf-mapping.json"
+ }
+ }
+ },
+ "precheck" : {
+ "type" : "component-script-executor",
+ "interfaces" : {
+ "ComponentScriptExecutor" : {
+ "operations" : {
+ "process" : {
+ "implementation" : {
+ "primary" : "component-script",
+ "timeout" : 180,
+ "operation_host" : "SELF"
+ },
+ "inputs" : {
+ "script-type" : "kotlin",
+ "script-class-reference" : "cba.pnf.swug.RestconfSoftwareUpgrade",
+ "dynamic-properties" : "*precheck-properties"
+ },
+ "outputs" : {
+ "response-data" : "",
+ "status" : "success"
+ }
+ }
+ }
+ }
+ },
+ "artifacts" : {
+ "mount-node-template" : {
+ "type" : "artifact-template-velocity",
+ "file" : "Templates/restconf-mount-template.vtl"
+ },
+ "mount-node-mapping" : {
+ "type" : "artifact-mapping-resource",
+ "file" : "Definitions/pnf-software-upgrade-mapping.json"
+ }
+ }
+ },
+ "downloadNeSw" : {
+ "type" : "component-script-executor",
+ "interfaces" : {
+ "ComponentScriptExecutor" : {
+ "operations" : {
+ "process" : {
+ "implementation" : {
+ "primary" : "component-script",
+ "timeout" : 180,
+ "operation_host" : "SELF"
+ },
+ "inputs" : {
+ "script-type" : "kotlin",
+ "script-class-reference" : "cba.pnf.swug.RestconfSoftwareUpgrade",
+ "dynamic-properties" : "*downloadNeSw-properties"
+ },
+ "outputs" : {
+ "response-data" : "",
+ "status" : "success"
+ }
+ }
+ }
+ }
+ },
+ "artifacts" : {
+ "mount-node-template" : {
+ "type" : "artifact-template-velocity",
+ "file" : "Templates/restconf-mount-template.vtl"
+ },
+ "mount-node-mapping" : {
+ "type" : "artifact-mapping-resource",
+ "file" : "Definitions/pnf-software-upgrade-mapping.json"
+ },
+ "configure-template" : {
+ "type" : "artifact-template-velocity",
+ "file" : "Templates/pnf-swug-config-template.vtl"
+ },
+ "configure-mapping" : {
+ "type" : "artifact-mapping-resource",
+ "file" : "Definitions/pnf-software-upgrade-mapping.json"
+ },
+ "download-ne-sw-template" : {
+ "type" : "artifact-template-velocity",
+ "file" : "Templates/pnf-swug-download-ne-sw-template.vtl"
+ },
+ "download-ne-sw-mapping" : {
+ "type" : "artifact-mapping-resource",
+ "file" : "Definitions/pnf-software-upgrade-mapping.json"
+ }
+ }
+ },
+ "activateNeSw" : {
+ "type" : "component-script-executor",
+ "interfaces" : {
+ "ComponentScriptExecutor" : {
+ "operations" : {
+ "process" : {
+ "implementation" : {
+ "primary" : "component-script",
+ "timeout" : 180,
+ "operation_host" : "SELF"
+ },
+ "inputs" : {
+ "script-type" : "kotlin",
+ "script-class-reference" : "cba.pnf.swug.RestconfSoftwareUpgrade",
+ "dynamic-properties" : "*activateNeSw-properties"
+ },
+ "outputs" : {
+ "response-data" : "",
+ "status" : "success"
+ }
+ }
+ }
+ }
+ },
+ "artifacts" : {
+ "mount-node-template" : {
+ "type" : "artifact-template-velocity",
+ "file" : "Templates/restconf-mount-template.vtl"
+ },
+ "mount-node-mapping" : {
+ "type" : "artifact-mapping-resource",
+ "file" : "Definitions/pnf-software-upgrade-mapping.json"
+ },
+ "configure-template" : {
+ "type" : "artifact-template-velocity",
+ "file" : "Templates/pnf-swug-config-template.vtl"
+ },
+ "configure-mapping" : {
+ "type" : "artifact-mapping-resource",
+ "file" : "Definitions/pnf-software-upgrade-mapping.json"
+ }
+ }
+ },
+ "postcheck" : {
+ "type" : "component-script-executor",
+ "interfaces" : {
+ "ComponentScriptExecutor" : {
+ "operations" : {
+ "process" : {
+ "implementation" : {
+ "primary" : "component-script",
+ "timeout" : 180,
+ "operation_host" : "SELF"
+ },
+ "inputs" : {
+ "script-type" : "kotlin",
+ "script-class-reference" : "cba.pnf.swug.RestconfSoftwareUpgrade",
+ "dynamic-properties" : "*postcheck-properties"
+ },
+ "outputs" : {
+ "response-data" : "",
+ "status" : "success"
+ }
+ }
+ }
+ }
+ },
+ "artifacts" : {
+ "mount-node-template" : {
+ "type" : "artifact-template-velocity",
+ "file" : "Templates/restconf-mount-template.vtl"
+ },
+ "mount-node-mapping" : {
+ "type" : "artifact-mapping-resource",
+ "file" : "Definitions/pnf-software-upgrade-mapping.json"
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/artifact_types.json b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/artifact_types.json
index 6ec3b4105..6ec3b4105 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/artifact_types.json
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/artifact_types.json
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/config-assign-pnf-mapping.json b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/config-assign-pnf-mapping.json
index fe51488c7..fe51488c7 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/config-assign-pnf-mapping.json
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/config-assign-pnf-mapping.json
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/config-deploy-pnf-mapping.json b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/config-deploy-pnf-mapping.json
index dd8889c80..dd8889c80 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/config-deploy-pnf-mapping.json
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/config-deploy-pnf-mapping.json
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/data_types.json b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/data_types.json
new file mode 100644
index 000000000..e3d216c89
--- /dev/null
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/data_types.json
@@ -0,0 +1,75 @@
+{
+ "data_types" : {
+ "dt-config-assign-properties" : {
+ "description" : "Dynamic DataType definition for workflow(config-assign).",
+ "version" : "1.0.0",
+ "properties" : { },
+ "derived_from" : "tosca.datatypes.Dynamic"
+ },
+ "dt-config-deploy-properties" : {
+ "description" : "Dynamic DataType definition for workflow(config-deploy).",
+ "version" : "1.0.0",
+ "properties" : {
+ "pnf-ipv4-address" : {
+ "type" : "string"
+ },
+ "pnf-id" : {
+ "type" : "string"
+ }
+ },
+ "derived_from" : "tosca.datatypes.Dynamic"
+ },
+ "dt-precheck-properties": {
+ "description": "Dynamic DataType definition for the precheck workflow(upgrade-software).",
+ "version": "1.0.0",
+ "properties": {
+ "pnf-id": {
+ "type": "string"
+ },
+ "target-software-version": {
+ "type": "string"
+ }
+ },
+ "derived_from": "tosca.datatypes.Dynamic"
+ },
+ "dt-downloadNeSw-properties": {
+ "description": "Dynamic DataType definition for the downloadNeSw workflow(upgrade-software).",
+ "version": "1.0.0",
+ "properties": {
+ "pnf-id": {
+ "type": "string"
+ },
+ "target-software-version": {
+ "type": "string"
+ }
+ },
+ "derived_from": "tosca.datatypes.Dynamic"
+ },
+ "dt-activateNeSw-properties": {
+ "description": "Dynamic DataType definition for the activateNeSw workflow(upgrade-software).",
+ "version": "1.0.0",
+ "properties": {
+ "pnf-id": {
+ "type": "string"
+ },
+ "target-software-version": {
+ "type": "string"
+ }
+ },
+ "derived_from": "tosca.datatypes.Dynamic"
+ },
+ "dt-postcheck-properties": {
+ "description": "Dynamic DataType definition for the postcheck workflow(upgrade-software).",
+ "version": "1.0.0",
+ "properties": {
+ "pnf-id": {
+ "type": "string"
+ },
+ "target-software-version": {
+ "type": "string"
+ }
+ },
+ "derived_from": "tosca.datatypes.Dynamic"
+ }
+ }
+} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/node_types.json b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/node_types.json
index bfae6779e..bfae6779e 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/node_types.json
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/node_types.json
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/pnf-software-upgrade-mapping.json b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/pnf-software-upgrade-mapping.json
new file mode 100644
index 000000000..2c3de2e49
--- /dev/null
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/pnf-software-upgrade-mapping.json
@@ -0,0 +1,36 @@
+[
+ {
+ "name": "pnf-id",
+ "input-param": true,
+ "property": {
+ "type": "string"
+ },
+ "dictionary-name": "pnf-id",
+ "dictionary-source": "input",
+ "dependencies": [
+ ]
+ },
+ {
+ "name": "target-software-version",
+ "input-param": true,
+ "property": {
+ "type": "string"
+ },
+ "dictionary-name": "target-software-version",
+ "dictionary-source": "input",
+ "dependencies": [
+ ]
+ },
+ {
+ "name": "pnf-ipv4-address",
+ "input-param": false,
+ "property": {
+ "type": "string"
+ },
+ "dictionary-name": "pnf-ipaddress-aai",
+ "dictionary-source": "aai-data",
+ "dependencies": [
+ "pnf-id"
+ ]
+ }
+]
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/policy_types.json b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/policy_types.json
index 1e44cc70a..1e44cc70a 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/policy_types.json
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/policy_types.json
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/relationship_types.json b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/relationship_types.json
index 4ddd7a57c..4ddd7a57c 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/relationship_types.json
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/relationship_types.json
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/resources_definition_types.json b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/resources_definition_types.json
index 235a05d27..235a05d27 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/resources_definition_types.json
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Definitions/resources_definition_types.json
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Environments/source-db.properties b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Environments/source-db.properties
index 49a7eb47b..49a7eb47b 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Environments/source-db.properties
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Environments/source-db.properties
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Environments/source-rest.properties b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Environments/source-rest.properties
index bc1eb7417..bc1eb7417 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Environments/source-rest.properties
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Environments/source-rest.properties
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Plans/CONFIG_configAssign.xml b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Plans/CONFIG_configAssign.xml
index a3eedf172..a3eedf172 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Plans/CONFIG_configAssign.xml
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Plans/CONFIG_configAssign.xml
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Plans/CONFIG_configDeploy.xml b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Plans/CONFIG_configDeploy.xml
index f4e1b996f..f4e1b996f 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Plans/CONFIG_configDeploy.xml
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Plans/CONFIG_configDeploy.xml
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Plans/CONFIG_upgradeSoftware.xml b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Plans/CONFIG_upgradeSoftware.xml
new file mode 100644
index 000000000..52a9900b2
--- /dev/null
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Plans/CONFIG_upgradeSoftware.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service-logic xmlns="http://www.onap.org/sdnc/svclogic" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.onap.org/sdnc/svclogic ./svclogic.xsd" module="CONFIG" version="1.0.0">
+ <method rpc="ResourceAssignAndActivate" mode="sync">
+ <block atomic="true">
+ <execute plugin="upgrade-software" method="process">
+ <outcome value="failure">
+ <return status="failure"/>
+ </outcome>
+ <outcome value="success">
+ <return status="success"/>
+ </outcome>
+ </execute>
+ </block>
+ </method>
+</service-logic>
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Scripts/kotlin/RestconfConfigDeploy.kt b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Scripts/kotlin/RestconfConfigDeploy.kt
index f0190e8ec..730565959 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Scripts/kotlin/RestconfConfigDeploy.kt
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Scripts/kotlin/RestconfConfigDeploy.kt
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
-* Copyright (C) 2019 Nordix Foundation.
+* Copyright (C) 2020 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -67,9 +67,9 @@ class RestconfConfigDeploy : AbstractScriptComponentFunction() {
val jsonResult = mapper.readTree((result.body).toString())
- if(jsonResult.get("ietf-yang-patch:yang-patch-status").get("errors") != null) {
+ if (jsonResult.get("ietf-yang-patch:yang-patch-status").get("errors") != null) {
log.error("There was an error configuring device")
- } else {
+ } else {
log.info("Device has been configured succesfully")
}
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Scripts/kotlin/RestconfSoftwareUpgrade.kt b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Scripts/kotlin/RestconfSoftwareUpgrade.kt
new file mode 100644
index 000000000..07e804b95
--- /dev/null
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Scripts/kotlin/RestconfSoftwareUpgrade.kt
@@ -0,0 +1,195 @@
+/*
+* ============LICENSE_START=======================================================
+* Copyright (C) 2020 Nordix Foundation.
+* ================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+ */
+
+
+package cba.pnf.swug
+
+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.contentFromResolvedArtifactNB
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.restconf.executor.restconfApplyDeviceConfig
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.restconf.executor.restconfDeviceConfig
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.restconf.executor.restconfMountDevice
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.restconf.executor.restconfUnMountDevice
+import org.onap.ccsdk.cds.blueprintsprocessor.rest.restClientService
+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.BluePrintException
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintRetryException
+import org.onap.ccsdk.cds.controllerblueprints.core.logger
+import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintDependencyService
+import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
+
+class RestconfSoftwareUpgrade : AbstractScriptComponentFunction() {
+
+ private val RESTCONF_SERVER_IDENTIFIER = "sdnc"
+ private val CONFIGLET_RESOURCE_PATH = "yang-ext:mount/pnf-sw-upgrade:software-upgrade"
+ private val log = logger(AbstractScriptComponentFunction::class.java)
+ private val TARGET_SOFTWARE_PATH = "$CONFIGLET_RESOURCE_PATH/upgrade-package/"
+
+ override suspend fun processNB(executionRequest: ExecutionServiceInput) {
+
+ // Extract request properties
+ val properties = requestPayloadActionProperty(executionRequest.actionIdentifiers.actionName + "-properties")!!.get(0)
+ val model= SoftwareUpgradeModel(getDynamicProperties("resolution-key").asText(),
+ BluePrintDependencyService.restClientService(RESTCONF_SERVER_IDENTIFIER),
+ properties.get("pnf-id").textValue(), properties.get("target-software-version").textValue(),
+ Action.getEnumFromActionName(executionRequest.actionIdentifiers.actionName))
+
+ log.info("Blueprint invoked for ${model.resolutionKey} for SW Upgrade : " +
+ "${model.action} for sw version ${model.targetSwVersion} on pnf: ${model.deviceId}")
+
+ try {
+ val mountPayload = contentFromResolvedArtifactNB("mount-node")
+ log.debug("Mount Payload : $mountPayload")
+ restconfMountDevice(model.client, model.deviceId, mountPayload, mutableMapOf("Content-Type" to "application/json"))
+
+ when (model.action) {
+ Action.PRE_CHECK -> processPrecheck(model)
+ Action.DOWNLOAD_NE_SW -> processDownloadNeSw(model)
+ Action.ACTIVATE_NE_SW -> processActivateNeSw(model)
+ Action.POST_CHECK -> processPostcheck(model)
+ Action.CANCEL -> processCancel(model)
+ }
+
+ } catch (err: Exception) {
+ log.error("an error occurred while configuring device {}", err)
+ } finally {
+ restconfUnMountDevice(model.client, model.deviceId, "")
+ }
+ }
+
+ private suspend fun processPrecheck(model: SoftwareUpgradeModel) {
+ log.debug("In PNF SW upgrade : processPreCheck")
+ //Log the current configuration for the subtree
+ val payloadObject = getCurrentConfig(model)
+ log.debug("Current sw version on pnf : ${payloadObject.get("software-upgrade")?.get("upgrade-package")?.get(0)?.get("software-version")?.asText()}")
+ log.info("PNF is Healthy!")
+ }
+
+ private suspend fun processDownloadNeSw(model: SoftwareUpgradeModel) {
+ log.debug("In PNF SW upgrade : processDownloadNeSw")
+ //Check if there is existing config for the targeted software version
+
+ var downloadConfigPayload: String
+ if (checkIfSwReadyToPerformAction(Action.PRE_CHECK, model)) {
+ downloadConfigPayload = contentFromResolvedArtifactNB("configure")
+ downloadConfigPayload =downloadConfigPayload.replace("%id%", model.yangId)
+ }
+ else {
+ downloadConfigPayload = contentFromResolvedArtifactNB("download-ne-sw")
+ model.yangId=model.targetSwVersion
+ }
+ downloadConfigPayload = downloadConfigPayload.replace("%actionName%", Action.DOWNLOAD_NE_SW.name)
+ log.info("Config Payload to start download : $downloadConfigPayload")
+
+ //Apply configlet
+ restconfApplyDeviceConfig(model.client, model.deviceId, CONFIGLET_RESOURCE_PATH, downloadConfigPayload,
+ mutableMapOf("Content-Type" to "application/yang.patch+json"))
+
+ //Poll PNF for Download action's progress
+ checkExecution(model)
+ }
+
+ private suspend fun processActivateNeSw(model: SoftwareUpgradeModel) {
+ log.debug("In PNF SW upgrade : processActivateNeSw")
+ //Check if the software is downloaded and ready to be activated
+ if (checkIfSwReadyToPerformAction(Action.DOWNLOAD_NE_SW, model)) {
+ var activateConfigPayload: String = contentFromResolvedArtifactNB("configure")
+ activateConfigPayload = activateConfigPayload.replace("%actionName%", Action.ACTIVATE_NE_SW.name)
+ log.info("Config Payload to start activate : $activateConfigPayload")
+ //Apply configlet
+ restconfApplyDeviceConfig(model.client, model.deviceId, CONFIGLET_RESOURCE_PATH, activateConfigPayload,
+ mutableMapOf("Content-Type" to "application/yang.patch+json"))
+
+ //Poll PNF for Activate action's progress
+ checkExecution(model)
+ } else {
+ throw BluePrintRetryException("Software Download not completed for device(${model.deviceId}) to activate sw version: ${model.targetSwVersion}")
+ }
+ }
+
+ private suspend fun processPostcheck(model: SoftwareUpgradeModel) {
+ log.info("In PNF SW upgrade : processPostcheck")
+ //Log the current configuration for the subtree
+ if (checkIfSwReadyToPerformAction(Action.POST_CHECK, model)) {
+ log.info("PNF is healthy post activation!")
+ }
+ }
+
+ private fun processCancel(model :SoftwareUpgradeModel) {
+ //This is for future implementation of cancel step during software upgrade
+ log.info("In PNF SW upgrade : processCancel")
+ }
+
+ private suspend fun getCurrentConfig(model: SoftwareUpgradeModel) : ObjectNode{
+ val currentConfig: BlueprintWebClientService.WebClientResponse<String> = restconfDeviceConfig(model.client, model.deviceId, CONFIGLET_RESOURCE_PATH)
+ return JacksonUtils.jsonNode(currentConfig.body) as ObjectNode
+ }
+ private suspend fun checkExecution(model: SoftwareUpgradeModel) {
+ val checkExecutionBlock: suspend (Int) -> String = {
+ val result = restconfDeviceConfig(model.client, model.deviceId, TARGET_SOFTWARE_PATH.plus(model.yangId))
+ if (result.body.contains(model.action.completionStatus)) {
+ log.info("${model.action.name} is complete")
+ result.body
+ } else {
+ throw BluePrintRetryException("Waiting for device(${model.deviceId}) to activate sw version ${model.targetSwVersion}")
+ }
+ }
+ model.client.retry<String>(10, 0, 1000, checkExecutionBlock)
+
+ }
+
+ private suspend fun checkIfSwReadyToPerformAction(action : Action, model: SoftwareUpgradeModel): Boolean {
+ val configBody = getCurrentConfig(model)
+ configBody.get("software-upgrade")?.get("upgrade-package")?.iterator()?.forEach { item ->
+ if (model.targetSwVersion == item.get("software-version")?.asText() &&
+ action.completionStatus == item?.get("current-status")?.asText()) {
+ model.yangId= item.get("id").textValue()
+ return true
+ }
+ }
+ return false
+ }
+
+ override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) {
+ log.info("Recover function called!")
+ log.info("Execution request : $executionRequest")
+ log.error("Exception", runtimeException)
+ }
+}
+
+enum class Action(val actionName: String, val completionStatus: String) {
+ PRE_CHECK("precheck", "INITIALIZED"),
+ DOWNLOAD_NE_SW("downloadNeSw", "DOWNLOAD_COMPLETED"),
+ ACTIVATE_NE_SW("activateNeSw", "ACTIVATION_COMPLETED"),
+ POST_CHECK("postcheck", "ACTIVATION_COMPLETED"),
+ CANCEL("cancel", "CANCELLED")
+ ;
+ companion object{
+ fun getEnumFromActionName(name: String): Action {
+ for(value in values()){
+ if (value.actionName==name) return value
+ }
+ throw BluePrintException("Invalid Action sent to CDS")
+ }
+ }
+}
+
+data class SoftwareUpgradeModel(val resolutionKey: String, val client: BlueprintWebClientService, val deviceId: String,
+ val targetSwVersion: String, val action: Action, var yangId: String = "") \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/TOSCA-Metadata/TOSCA.meta b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/TOSCA-Metadata/TOSCA.meta
new file mode 100644
index 000000000..467964604
--- /dev/null
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/TOSCA-Metadata/TOSCA.meta
@@ -0,0 +1,7 @@
+TOSCA-Meta-File-Version: 1.0.0
+CSAR-Version: 1.0
+Created-By: Raj Gumma <raj.gumma@est.tech>
+Entry-Definitions: Definitions/PNF_CDS_RESTCONF.json
+Template-Name: PNF_CDS_RESTCONF
+Template-Version: 1.0.0
+Template-Tags: PNF_CDS_RESTCONF
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Templates/config-assign-restconf-configlet-template.vtl b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/config-assign-restconf-configlet-template.vtl
index af91ba00d..af91ba00d 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Templates/config-assign-restconf-configlet-template.vtl
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/config-assign-restconf-configlet-template.vtl
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/pnf-swug-config-template.vtl b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/pnf-swug-config-template.vtl
new file mode 100644
index 000000000..5e52f6779
--- /dev/null
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/pnf-swug-config-template.vtl
@@ -0,0 +1,22 @@
+{
+ "ietf-restconf:yang-patch": {
+ "patch-id": "patch-1",
+ "edit": [
+ {
+ "edit-id": "edit1",
+ "operation": "merge",
+ "target": "/",
+ "value": {
+ "software-upgrade": {
+ "upgrade-package": [
+ {
+ "id": "%id%",
+ "action": "%actionName%"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/pnf-swug-download-ne-sw-template.vtl b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/pnf-swug-download-ne-sw-template.vtl
new file mode 100644
index 000000000..695b66866
--- /dev/null
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/pnf-swug-download-ne-sw-template.vtl
@@ -0,0 +1,28 @@
+{
+ "ietf-restconf:yang-patch": {
+ "patch-id": "patch-1",
+ "edit": [
+ {
+ "edit-id": "edit1",
+ "operation": "merge",
+ "target": "/",
+ "value": {
+ "software-upgrade": {
+ "upgrade-package": [
+ {
+ "id": "${target-software-version}",
+ "current-status": "INITIALIZED",
+ "action": "%actionName%",
+ "user-label": "trial software update",
+ "uri": "sftp://127.0.0.1/test_software_2.img",
+ "software-version": "${target-software-version}",
+ "user": "test_user",
+ "password": "test_password"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Templates/config-deploy-restconf-mount-template.vtl b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/restconf-mount-template.vtl
index 8098b05d8..8098b05d8 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Templates/config-deploy-restconf-mount-template.vtl
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Templates/restconf-mount-template.vtl
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Tests/uat.yaml b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Tests/uat.yaml
new file mode 100644
index 000000000..79328e697
--- /dev/null
+++ b/components/model-catalog/blueprint-model/uat-blueprints/PNF_CDS_RESTCONF/Tests/uat.yaml
@@ -0,0 +1,374 @@
+%YAML 1.1
+---
+processes:
+ - name: config-assign
+ request:
+ commonHeader: &commonHeader
+ originatorId: sdnc
+ requestId: "123456-1000"
+ subRequestId: sub-123456-1000
+ actionIdentifiers: &assign-ai
+ blueprintName: PNF_CDS_RESTCONF
+ blueprintVersion: "1.0.0"
+ actionName: config-assign
+ mode: sync
+ payload:
+ config-assign-request:
+ resolution-key: &resKey "RES-KEY 61"
+ config-assign-properties:
+ service-instance-id: siid_1234
+ pnf-id: &pnfId pnf-id-2019-07-12
+ service-model-uuid: service-model-uuid
+ pnf-customization-uuid: pnf-customization-uuid
+ expectedResponse:
+ commonHeader: *commonHeader
+ actionIdentifiers: *assign-ai
+ status:
+ code: 200
+ eventType: EVENT_COMPONENT_EXECUTED
+ errorMessage: null
+ message: success
+ payload:
+ config-assign-response: {}
+ - name: config-deploy
+ request:
+ commonHeader: *commonHeader
+ actionIdentifiers: &deploy-ai
+ actionName: config-deploy
+ blueprintName: PNF_CDS_RESTCONF
+ blueprintVersion: "1.0.0"
+ mode: sync
+ payload:
+ config-deploy-request:
+ resolution-key: *resKey
+ config-deploy-properties:
+ service-instance-id: siid_1234
+ pnf-id: *pnfId
+ service-model-uuid: service-model-uuid
+ pnf-customization-uuid: pnf-customization-uuid
+ expectedResponse:
+ commonHeader: *commonHeader
+ actionIdentifiers: *deploy-ai
+ payload:
+ config-deploy-response: {}
+ status:
+ code: 200
+ errorMessage: null
+ eventType: EVENT_COMPONENT_EXECUTED
+ message: success
+ - name: precheck
+ request:
+ commonHeader: &swugCommonHeader
+ originatorId: sdnc
+ requestId: "123456-1000"
+ subRequestId: sub-123456-1000
+ actionIdentifiers: &precheck-ai
+ blueprintName: PNF_CDS_RESTCONF
+ blueprintVersion: "1.0.0"
+ actionName: precheck
+ mode: sync
+ payload:
+ precheck-request:
+ resolution-key: &resKey "RES-KEY 61"
+ precheck-properties: &actionProps
+ service-instance-id: siid_1234
+ pnf-id: &pnfId pnf-id-2019-07-12
+ target-software-version: "2.0.2"
+ service-model-uuid: service-model-uuid
+ pnf-customization-uuid: pnf-customization-uuid
+ expectedResponse:
+ commonHeader: *swugCommonHeader
+ actionIdentifiers: *precheck-ai
+ status:
+ code: 200
+ eventType: EVENT_COMPONENT_EXECUTED
+ errorMessage: null
+ message: success
+ payload:
+ precheck-response: {}
+ - name: downloadNeSw
+ request:
+ commonHeader: *swugCommonHeader
+ actionIdentifiers: &download-ai
+ blueprintName: PNF_CDS_RESTCONF
+ blueprintVersion: "1.0.0"
+ actionName: downloadNeSw
+ mode: sync
+ payload:
+ downloadNeSw-request:
+ resolution-key: *resKey
+ downloadNeSw-properties: *actionProps
+ expectedResponse:
+ commonHeader: *swugCommonHeader
+ actionIdentifiers: *download-ai
+ status:
+ code: 200
+ eventType: EVENT_COMPONENT_EXECUTED
+ errorMessage: null
+ message: success
+ payload:
+ downloadNeSw-response: {}
+ - name: activateNeSw
+ request:
+ commonHeader: *swugCommonHeader
+ actionIdentifiers: &activate-ai
+ blueprintName: PNF_CDS_RESTCONF
+ blueprintVersion: "1.0.0"
+ actionName: activateNeSw
+ mode: sync
+ payload:
+ activateNeSw-request:
+ resolution-key: *resKey
+ activateNeSw-properties: *actionProps
+ expectedResponse:
+ commonHeader: *swugCommonHeader
+ actionIdentifiers: *activate-ai
+ status:
+ code: 200
+ eventType: EVENT_COMPONENT_EXECUTED
+ errorMessage: null
+ message: success
+ payload:
+ activateNeSw-response: {}
+ - name: postcheck
+ request:
+ commonHeader: *swugCommonHeader
+ actionIdentifiers: &postcheck-ai
+ blueprintName: PNF_CDS_RESTCONF
+ blueprintVersion: "1.0.0"
+ actionName: postcheck
+ mode: sync
+ payload:
+ postcheck-request:
+ resolution-key: *resKey
+ postcheck-properties: *actionProps
+ expectedResponse:
+ commonHeader: *swugCommonHeader
+ actionIdentifiers: *postcheck-ai
+ status:
+ code: 200
+ eventType: EVENT_COMPONENT_EXECUTED
+ errorMessage: null
+ message: success
+ payload:
+ postcheck-response: {}
+external-services:
+ - selector: aai-data
+ expectations:
+ - request:
+ method: GET
+ path: [ /aai/v14/network/pnfs/pnf, *pnfId]
+ headers:
+ Accept: application/json
+ response:
+ headers:
+ Content-Type: application/json
+ body:
+ ipaddress-v4-oam: &pnfAddress 13.13.13.13
+ ipaddress-v6-oam: 1::13
+ - selector: sdnc
+ expectations:
+ - request:
+ method: PUT
+ path: &configUri [ /restconf/config, &nodeIdentifier [network-topology:network-topology/topology/topology-netconf/node, *pnfId]]
+ headers:
+ Content-Type: application/json
+ body:
+ node:
+ - node-id: *pnfId
+ netconf-node-topology:protocol: { name: TLS }
+ netconf-node-topology:host: *pnfAddress
+ netconf-node-topology:key-based:
+ username: netconf
+ key-id: ODL_private_key_0
+ netconf-node-topology:port: 6513
+ netconf-node-topology:tcp-only: false
+ netconf-node-topology:max-connection-attempts: 5
+ response:
+ status: 201
+ - request:
+ method: GET
+ path: [ /restconf/operational, *nodeIdentifier]
+ response:
+ body:
+ node: [ { netconf-node-topology:connection-status: connected }]
+ - request:
+ method: GET
+ path: [*configUri, &configletResourcePath yang-ext:mount/mynetconf:netconflist]
+ response:
+ body: {}
+ - request:
+ method: PATCH
+ path: [*configUri, *configletResourcePath]
+ headers:
+ Content-Type: application/yang.patch+json
+ body:
+ ietf-restconf:yang-patch:
+ patch-id: patch-1
+ edit:
+ - edit-id: edit1
+ operation: merge
+ target: /
+ value: { netconflist: { netconf: [ { netconf-id: "10", netconf-param: "1000" }]}}
+ - edit-id: edit2
+ operation: merge
+ target: /
+ value: { netconflist: { netconf: [ { netconf-id: "20", netconf-param: "2000" }]}}
+ - edit-id: edit3
+ operation: merge
+ target: /
+ value: { netconflist: { netconf: [ { netconf-id: "30", netconf-param: "3000" }]}}
+ response:
+ body:
+ ietf-yang-patch:yang-patch-status:
+ patch-id: patch-1
+ ok: [
+ null
+ ]
+ ### External expectations for Software Upgrade
+ - request:
+ method: GET
+ path: &ConfigSwUgUri [*configUri, &configletResourcePath yang-ext:mount/pnf-sw-upgrade:software-upgrade]
+ headers:
+ Accept: application/json
+ responses:
+ - headers:
+ Content-Type: application/json
+ body:
+ software-upgrade:
+ upgrade-package:
+ - id: 2.0.1
+ current-status: INITIALIZED
+ user-label: trial software update
+ uri: sftp:127.0.0.1/test_software_1.img
+ software-version: 2.0.1
+ user: test_user
+ password: test_password
+ - headers:
+ Content-Type: application/json
+ body:
+ software-upgrade:
+ upgrade-package:
+ - id: 2.0.1
+ current-status: INITIALIZED
+ user-label: trial software update
+ uri: sftp:127.0.0.1/test_software_1.img
+ software-version: 2.0.1
+ user: test_user
+ password: test_password
+ - headers:
+ Content-Type: application/json
+ body:
+ software-upgrade:
+ upgrade-package:
+ - id: 2.0.1
+ current-status: INITIALIZED
+ user-label: trial software update
+ uri: sftp:127.0.0.1/test_software_1.img
+ software-version: 2.0.1
+ user: test_user
+ password: test_password
+ - id: 2.0.2
+ current-status: DOWNLOAD_COMPLETED
+ state-change-time: '2020-02-20T13:03:21Z'
+ software-version: 2.0.2
+ user-label: trial software update
+ uri: sftp:127.0.0.1/test_software_1.img
+ user: test_user
+ password: test_password
+ - headers:
+ Content-Type: application/json
+ body:
+ software-upgrade:
+ upgrade-package:
+ - id: 2.0.1
+ current-status: INITIALIZED
+ user-label: trial software update
+ uri: sftp:127.0.0.1/test_software_1.img
+ software-version: 2.0.1
+ user: test_user
+ password: test_password
+ - id: 2.0.2
+ current-status: ACTIVATION_COMPLETED
+ state-change-time: '2020-02-20T13:03:21Z'
+ software-version: 2.0.2
+ user-label: trial software update
+ uri: sftp:127.0.0.1/test_software_1.img
+ user: test_user
+ password: test_password
+ - request:
+ method: PATCH
+ path: *ConfigSwUgUri
+ headers:
+ Content-Type: application/yang.patch+json
+ body:
+ ietf-restconf:yang-patch:
+ patch-id: patch-1
+ edit:
+ - edit-id: edit1
+ operation: merge
+ target: "/"
+ response:
+ headers:
+ Content-Type: application/yang.patch-status+json
+ body:
+ { ietf-yang-patch:yang-patch-status: {patch-id: patch-1, ok: [ ] } }
+ times: 2
+ - request:
+ method: GET
+ path: [*ConfigSwUgUri, upgrade-package/2.0.2]
+ headers:
+ Accept: application/json
+ responses:
+ - headers:
+ Content-Type: application/json
+ body:
+ upgrade-package:
+ - id: 2.0.2
+ current-status: DOWNLOAD_IN_PROGRESS
+ state-change-time: '2020-02-20T12:17:34.984Z'
+ software-version: 2.0.2
+ - headers:
+ Content-Type: application/json
+ body:
+ upgrade-package:
+ - id: 2.0.2
+ current-status: DOWNLOAD_IN_PROGRESS
+ state-change-time: '2020-02-20T12:52:30Z'
+ software-version: 2.0.2
+ - headers:
+ Content-Type: application/json
+ body:
+ upgrade-package:
+ - id: 2.0.2
+ current-status: DOWNLOAD_COMPLETED
+ state-change-time: '2020-02-20T13:03:21Z'
+ software-version: 2.0.2
+ - headers:
+ Content-Type: application/json
+ body:
+ upgrade-package:
+ - id: 2.0.2
+ current-status: ACTIVATION_IN_PROGRESS
+ state-change-time: '2020-02-20T13:05:08Z'
+ software-version: 2.0.2
+ - headers:
+ Content-Type: application/json
+ body:
+ upgrade-package:
+ - id: 2.0.2
+ current-status: ACTIVATION_IN_PROGRESS
+ state-change-time: '2020-02-20T12:52:30Z'
+ software-version: 2.0.2
+ - headers:
+ Content-Type: application/json
+ body:
+ upgrade-package:
+ - id: 2.0.2
+ current-status: ACTIVATION_COMPLETED
+ state-change-time: '2020-02-20T13:07:12Z'
+ software-version: 2.0.2
+ - request:
+ method: DELETE
+ path: *configUri
+ times: 5 \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/README.md b/components/model-catalog/blueprint-model/uat-blueprints/README.md
index 56cb32989..ffbc15aec 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/README.md
+++ b/components/model-catalog/blueprint-model/uat-blueprints/README.md
@@ -61,7 +61,8 @@ message Uat {
message Expectation {
required Request request = 1;
- required Response response = 2;
+ optional Response response = 2;
+ repeated Response responses = 3;
}
message ExternalService {
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config/Tests/uat.yaml b/components/model-catalog/blueprint-model/uat-blueprints/pnf_config/Tests/uat.yaml
index 85b10c611..a58d089ad 100644
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config/Tests/uat.yaml
+++ b/components/model-catalog/blueprint-model/uat-blueprints/pnf_config/Tests/uat.yaml
@@ -64,7 +64,7 @@ external-services:
expectations:
- request:
method: PUT
- path: &configUri [ restconf/config, &nodeIdentifier [network-topology:network-topology/topology/topology-netconf/node, *pnfId]]
+ path: &configUri [ /restconf/config, &nodeIdentifier [network-topology:network-topology/topology/topology-netconf/node, *pnfId]]
headers:
Content-Type: application/json
body:
@@ -82,7 +82,7 @@ external-services:
status: 201
- request:
method: GET
- path: [ restconf/operational, *nodeIdentifier]
+ path: [ /restconf/operational, *nodeIdentifier]
response:
body:
node: [ { netconf-node-topology:connection-status: connected }]
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/data_types.json b/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/data_types.json
deleted file mode 100644
index a0804bb3f..000000000
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/data_types.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "data_types" : {
- "dt-config-assign-properties" : {
- "description" : "Dynamic DataType definition for workflow(config-assign).",
- "version" : "1.0.0",
- "properties" : { },
- "derived_from" : "tosca.datatypes.Dynamic"
- },
- "dt-config-deploy-properties" : {
- "description" : "Dynamic DataType definition for workflow(config-deploy).",
- "version" : "1.0.0",
- "properties" : {
- "pnf-ipv4-address" : {
- "type" : "string"
- },
- "pnf-id" : {
- "type" : "string"
- }
- },
- "derived_from" : "tosca.datatypes.Dynamic"
- }
- }
-} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/pnf_config_aai.json b/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/pnf_config_aai.json
deleted file mode 100644
index 3ef585cb4..000000000
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Definitions/pnf_config_aai.json
+++ /dev/null
@@ -1,152 +0,0 @@
-{
- "tosca_definitions_version" : "controller_blueprint_1_0_0",
- "metadata" : {
- "template_author" : "Rahul Tyagi",
- "author-email" : "rahul.tyagi@est.tech",
- "user-groups" : "ADMIN, OPERATION",
- "template_name" : "pnf_config_aai",
- "template_version" : "1.0.0",
- "template_tags" : "pnf, restconf, config, configuration"
- },
- "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" : {
- "activate-process" : {
- "description" : "Send a configlet to the pnf",
- "target" : "config-deploy",
- "activities" : [ {
- "call_operation" : ""
- } ]
- }
- },
- "inputs" : {
- "resolution-key" : {
- "required" : true,
- "type" : "string"
- },
- "config-deploy-properties" : {
- "description" : "Dynamic PropertyDefinition for workflow(config-deploy).",
- "required" : true,
- "type" : "dt-config-deploy-properties"
- }
- }
- }
- },
- "node_templates" : {
- "config-assign" : {
- "type" : "component-resource-resolution",
- "interfaces" : {
- "ResourceResolutionComponent" : {
- "operations" : {
- "process" : {
- "inputs" : {
- "resolution-key" : {
- "get_input" : "resolution-key"
- },
- "store-result" : true,
- "artifact-prefix-names" : [ "config-assign" ]
- },
- "outputs" : {
- "resource-assignment-params" : {
- "get_attribute" : [ "SELF", "assignment-params" ]
- },
- "status" : "success"
- }
- }
- }
- }
- },
- "artifacts" : {
- "config-assign-template" : {
- "type" : "artifact-template-velocity",
- "file" : "Templates/config-assign-restconf-configlet-template.vtl"
- },
- "config-assign-mapping" : {
- "type" : "artifact-mapping-resource",
- "file" : "Definitions/config-assign-pnf-mapping.json"
- }
- }
- },
- "config-deploy" : {
- "type" : "component-script-executor",
- "interfaces" : {
- "ComponentScriptExecutor" : {
- "operations" : {
- "process" : {
- "implementation" : {
- "primary" : "component-script",
- "timeout" : 180,
- "operation_host" : "SELF"
- },
- "inputs" : {
- "script-type" : "kotlin",
- "script-class-reference" : "cba.pnf.config.aai.RestconfConfigDeploy",
- "dynamic-properties" : "*config-deploy-properties"
- },
- "outputs" : {
- "response-data" : "",
- "status" : "success"
- }
- }
- }
- }
- },
- "artifacts" : {
- "config-deploy-template" : {
- "type" : "artifact-template-velocity",
- "file" : "Templates/config-deploy-restconf-mount-template.vtl"
- },
- "config-deploy-mapping" : {
- "type" : "artifact-mapping-resource",
- "file" : "Definitions/config-deploy-pnf-mapping.json"
- }
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/TOSCA-Metadata/TOSCA.meta b/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/TOSCA-Metadata/TOSCA.meta
deleted file mode 100644
index 903600836..000000000
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/TOSCA-Metadata/TOSCA.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-TOSCA-Meta-File-Version: 1.0.0
-CSAR-Version: 1.0
-Created-By: Rahul Tyagi
-Entry-Definitions: Definitions/pnf_config_aai.json
-Template-Name: pnf_config_aai
-Template-Version: 1.0.0
-Template-Tags: pnf_config_aai
diff --git a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Tests/uat.yaml b/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Tests/uat.yaml
deleted file mode 100644
index 13e10f34b..000000000
--- a/components/model-catalog/blueprint-model/uat-blueprints/pnf_config_aai/Tests/uat.yaml
+++ /dev/null
@@ -1,137 +0,0 @@
-%YAML 1.1
----
-processes:
- - name: config-assign
- request:
- commonHeader: &commonHeader
- originatorId: sdnc
- requestId: "123456-1000"
- subRequestId: sub-123456-1000
- actionIdentifiers: &assign-ai
- blueprintName: pnf_config_aai
- blueprintVersion: "1.0.0"
- actionName: config-assign
- mode: sync
- payload:
- config-assign-request:
- resolution-key: &resKey "RES-KEY 61"
- config-assign-properties:
- service-instance-id: siid_1234
- pnf-id: &pnfId pnf-id-2019-07-12
- service-model-uuid: service-model-uuid
- pnf-customization-uuid: pnf-customization-uuid
- expectedResponse:
- commonHeader: *commonHeader
- actionIdentifiers: *assign-ai
- status:
- code: 200
- eventType: EVENT_COMPONENT_EXECUTED
- errorMessage: null
- message: success
- payload:
- config-assign-response: {}
- - name: config-deploy
- request:
- commonHeader: *commonHeader
- actionIdentifiers: &deploy-ai
- actionName: config-deploy
- blueprintName: pnf_config_aai
- blueprintVersion: "1.0.0"
- mode: sync
- payload:
- config-deploy-request:
- resolution-key: *resKey
- config-deploy-properties:
- service-instance-id: siid_1234
- pnf-id: *pnfId
- service-model-uuid: service-model-uuid
- pnf-customization-uuid: pnf-customization-uuid
- expectedResponse:
- commonHeader: *commonHeader
- actionIdentifiers: *deploy-ai
- payload:
- config-deploy-response: {}
- status:
- code: 200
- errorMessage: null
- eventType: EVENT_COMPONENT_EXECUTED
- message: success
-
-external-services:
- - selector: aai-data
- expectations:
- - request:
- method: GET
- path: [ /aai/v14/network/pnfs/pnf, *pnfId]
- headers:
- Accept: application/json
- response:
- headers:
- Content-Type: application/json
- body:
- ipaddress-v4-oam: &pnfAddress 13.13.13.13
- ipaddress-v6-oam: 1::13
- - selector: sdnc
- expectations:
- - request:
- method: PUT
- path: &configUri [ restconf/config, &nodeIdentifier [network-topology:network-topology/topology/topology-netconf/node, *pnfId]]
- headers:
- Content-Type: application/json
- body:
- node:
- - node-id: *pnfId
- netconf-node-topology:protocol: { name: TLS }
- netconf-node-topology:host: *pnfAddress
- netconf-node-topology:key-based:
- username: netconf
- key-id: ODL_private_key_0
- netconf-node-topology:port: 6513
- netconf-node-topology:tcp-only: false
- netconf-node-topology:max-connection-attempts: 5
- response:
- status: 201
- - request:
- method: GET
- path: [ restconf/operational, *nodeIdentifier]
- response:
- body:
- node: [ { netconf-node-topology:connection-status: connected }]
- - request:
- method: GET
- path: [*configUri, &configletResourcePath yang-ext:mount/mynetconf:netconflist]
- response:
- body: {}
- - request:
- method: PATCH
- path: [*configUri, *configletResourcePath]
- headers:
- Content-Type: application/yang.patch+json
- body:
- ietf-restconf:yang-patch:
- patch-id: patch-1
- edit:
- - edit-id: edit1
- operation: merge
- target: /
- value: { netconflist: { netconf: [ { netconf-id: "10", netconf-param: "1000" }]}}
- - edit-id: edit2
- operation: merge
- target: /
- value: { netconflist: { netconf: [ { netconf-id: "20", netconf-param: "2000" }]}}
- - edit-id: edit3
- operation: merge
- target: /
- value: { netconflist: { netconf: [ { netconf-id: "30", netconf-param: "3000" }]}}
- response:
- body:
- ietf-yang-patch:yang-patch-status:
- patch-id: patch-1
- ok: [
- null
- ]
- - request:
- method: DELETE
- path: *configUri
-
-