From d2c5f361fa3a246dfa23c2c582ec498322a97282 Mon Sep 17 00:00:00 2001 From: Lukasz Rajewski Date: Fri, 19 Mar 2021 17:50:37 +0100 Subject: Implementation of config-assign and config-deploy actions Implementation of config-assign and config-deploy actions Issue-ID: INT-1868 Signed-off-by: Lukasz Rajewski Change-Id: Ibe61ea32bb1d0fbfc5396adf54c7d2fcbc7bbf30 --- .../templates/cba/Definitions/data_types.json | 48 +++-- .../templates/cba/Definitions/node_types.json | 229 +++++++++++++++++++++ .../Definitions/resources_definition_types.json | 115 +++++++++++ .../templates/cba/Definitions/vFW_CNF_CDS.json | 166 +++++++++++++-- 4 files changed, 528 insertions(+), 30 deletions(-) (limited to 'heat/vFW_CNF_CDS/templates/cba/Definitions') diff --git a/heat/vFW_CNF_CDS/templates/cba/Definitions/data_types.json b/heat/vFW_CNF_CDS/templates/cba/Definitions/data_types.json index b5697555..5fb59cf5 100644 --- a/heat/vFW_CNF_CDS/templates/cba/Definitions/data_types.json +++ b/heat/vFW_CNF_CDS/templates/cba/Definitions/data_types.json @@ -7,14 +7,18 @@ "service-instance-id": { "description": "", "required": false, - "type": "string", - "status": "", - "constraints": [ - {} - ], - "entry_schema": { - "type": "" - } + "type": "string" + }, + "vnf-id": { + "description": "", + "required": false, + "type": "string" + }, + "vf-modules-list": { + "type": "json" + }, + "config-deploy-setup": { + "type": "json" } }, "derived_from": "tosca.datatypes.Dynamic" @@ -26,14 +30,18 @@ "service-instance-id": { "description": "", "required": false, - "type": "string", - "status": "", - "constraints": [ - {} - ], - "entry_schema": { - "type": "" - } + "type": "string" + }, + "vnf-id": { + "description": "", + "required": false, + "type": "string" + }, + "vf-modules-list": { + "type": "json" + }, + "config-deploy-setup": { + "type": "json" } }, "derived_from": "tosca.datatypes.Dynamic" @@ -60,6 +68,14 @@ "description": "The source folder or file relative to 'Templates/k8s-profiles' folder", "type": "string" }, + "k8s-rb-config-template-name": { + "description": "The name of configuration template for config-assign operation", + "type": "string" + }, + "k8s-rb-config-template-source": { + "description": "The source of configuration template for config-assign operation", + "type": "string" + }, "private1-prefix-id": { "description": "", "required": false, diff --git a/heat/vFW_CNF_CDS/templates/cba/Definitions/node_types.json b/heat/vFW_CNF_CDS/templates/cba/Definitions/node_types.json index 9ee224b5..95db7aec 100644 --- a/heat/vFW_CNF_CDS/templates/cba/Definitions/node_types.json +++ b/heat/vFW_CNF_CDS/templates/cba/Definitions/node_types.json @@ -139,6 +139,14 @@ "required": true, "type": "string" }, + "instance-dependencies": { + "description": "Instance names to inject to Jython or Kotlin Script.", + "required": true, + "type": "list", + "entry_schema": { + "type": "string" + } + }, "dynamic-properties": { "description": "Dynamic Json Content or DSL Json reference.", "required": false, @@ -233,6 +241,150 @@ }, "derived_from": "tosca.nodes.Component" }, + "component-k8s-config-template": { + "description": "This component is rendering and sending the k8s template to the multicloud plugin.", + "version": "1.0.0", + "attributes": { + "statuses": { + "required": true, + "type": "json" + } + }, + "capabilities": { + "component-node": { + "type": "tosca.capabilities.Node" + } + }, + "interfaces": { + "K8sConfigTemplateComponent": { + "operations": { + "process": { + "inputs": { + "k8s-rb-config-template-name": { + "description": "K8s template name", + "required": false, + "type": "string" + }, + "k8s-rb-definition-name": { + "description": "K8s definition name", + "required": false, + "type": "string" + }, + "k8s-rb-definition-version": { + "description": "Version of the definition", + "required": false, + "type": "string" + }, + "k8s-rb-config-template-source": { + "description": "Source (tgz/folder) for the template in CBA", + "required": false, + "type": "string" + }, + "artifact-prefix-names": { + "description": "Resource Assignment Artifact Prefix names", + "required": false, + "type": "list", + "entry_schema": { + "type": "string" + } + }, + "resource-assignment-map": { + "description": "Holds resolved values for each artifact prefix eg. { vdns: { vnf-id: 123 } }", + "required": false, + "type": "json" + } + }, + "outputs": { + "statuses": { + "required": true, + "type": "string" + } + } + } + } + } + }, + "derived_from": "tosca.nodes.Component" + }, + "component-k8s-config-value": { + "description": "This component is sending the k8s config value to the multicloud plugin.", + "version": "1.0.0", + "attributes": { + "statuses": { + "required": true, + "type": "json" + } + }, + "capabilities": { + "component-node": { + "type": "tosca.capabilities.Node" + } + }, + "interfaces": { + "K8sConfigValueComponent": { + "operations": { + "process": { + "inputs": { + "k8s-template-name": { + "description": "K8s template name", + "required": false, + "type": "string" + }, + "k8s-config-name": { + "description": "K8s config name", + "required": false, + "type": "string" + }, + "k8s-instance-id": { + "description": "K8s instance id", + "required": false, + "type": "string" + }, + "k8s-rb-template-value-source": { + "description": "Location of value source in CBA", + "required": false, + "type": "string" + }, + "k8s-operation-type": { + "required": false, + "type": "string", + "constraints": [ + { + "valid_values": [ + "create", + "update", + "rollback" + ] + } + ], + "default": "create" + }, + "artifact-prefix-names": { + "description": "Resource Assignment Artifact Prefix names", + "required": false, + "type": "list", + "entry_schema": { + "type": "string" + } + }, + "resource-assignment-map": { + "description": "Holds resolved values for each artifact prefix eg. { vdns: { vnf-id: 123 } }", + "required": false, + "type": "json" + } + }, + "outputs": { + "statuses": { + "required": true, + "type": "string" + } + } + } + } + } + }, + "derived_from": "tosca.nodes.Component" + }, "source-capability": { "description": "This is Component Resource Source Node Type", "version": "1.0.0", @@ -437,6 +589,83 @@ "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" + }, + "tosca.nodes.Workflow": { + "description": "This is Directed Graph 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 + } + } + }, + "restconf": { + "type": "tosca.capabilities.Restconf", + "properties": { + "login-key": { + "required": true, + "type": "string" + }, + "login-account": { + "required": true, + "type": "string" + }, + "target-ip-address": { + "required": true, + "type": "string" + }, + "port-number": { + "required": true, + "type": "integer" + }, + "connection-time-out": { + "required": false, + "type": "integer", + "default": 30 + } + } + } + }, + "derived_from": "tosca.nodes.Vnf" } } } diff --git a/heat/vFW_CNF_CDS/templates/cba/Definitions/resources_definition_types.json b/heat/vFW_CNF_CDS/templates/cba/Definitions/resources_definition_types.json index 63d83e44..6277e01b 100644 --- a/heat/vFW_CNF_CDS/templates/cba/Definitions/resources_definition_types.json +++ b/heat/vFW_CNF_CDS/templates/cba/Definitions/resources_definition_types.json @@ -328,6 +328,44 @@ } } }, + "k8s-rb-config-template-name": { + "tags": "k8s, cnf, config, k8s-rb-config-template-name", + "name": "k8s-rb-config-template-name", + "property": { + "description": "The name of configuration template for config-assign operation", + "type": "string" + }, + "group": "default", + "updated-by": "Rajewski, Lukasz ", + "sources": { + "input": { + "type": "source-input" + }, + "default": { + "type": "source-default", + "properties": {} + } + } + }, + "k8s-rb-config-template-source": { + "tags": "k8s, cnf, config, k8s-rb-config-template-source", + "name": "k8s-rb-config-template-source", + "property": { + "description": "The source of configuration template for config-assign operation", + "type": "string" + }, + "group": "default", + "updated-by": "Rajewski, Lukasz ", + "sources": { + "input": { + "type": "source-input" + }, + "default": { + "type": "source-default", + "properties": {} + } + } + }, "management-prefix-id": { "tags": "management-prefix-id", "name": "management-prefix-id", @@ -978,5 +1016,82 @@ } } } + }, + "vf-modules-list": { + "tags": "vf-modules-list", + "name": "vf-modules-list", + "property": { + "description": "List of vf-modules associated with vnf", + "type": "json" + }, + "group": "default", + "updated-by": "Lukasz Rajewski ", + "sources": { + "input": { + "type": "source-input" + }, + "default": { + "type": "source-default", + "properties": {} + }, + "aai-data": { + "type": "source-rest", + "properties": { + "verb": "GET", + "type": "JSON", + "url-path": "/aai/v19/network/generic-vnfs/generic-vnf/${vnf-id}?depth=1", + "path": "/vf-modules", + "input-key-mapping": { + "vnf-id": "vnf-id" + }, + "output-key-mapping": { + "vf-modules": "vf-module" + }, + "key-dependencies": [ + "vnf-id" + ] + } + }, + "sdnc": { + "type": "source-rest", + "properties": { + "verb": "GET", + "type": "JSON", + "url-path": "/restconf/config/GENERIC-RESOURCE-API:services/service/$service-instance-id/service-data/vnfs/vnf/$vnf-id/vnf-data/vf-modules", + "path": "/vf-modules", + "input-key-mapping": { + "service-instance-id": "service-instance-id", + "vnf-id": "vnf-id" + }, + "output-key-mapping": { + "vf-modules": "vf-module" + }, + "key-dependencies": [ + "service-instance-id", + "vnf-id" + ] + } + } + } + }, + "config-deploy-setup": { + "tags": "config-deploy-setup", + "name": "config-deploy-setup", + "property": { + "description": "Configuration Input setup for config-deploy operation", + "type": "json" + }, + "group": "default", + "updated-by": "Lukasz Rajewski ", + "sources": { + "capability": { + "type": "source-capability", + "properties": { + "script-type": "kotlin", + "script-class-reference": "org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts.ConfigDeploySetup", + "instance-dependencies": [] + } + } + } } } diff --git a/heat/vFW_CNF_CDS/templates/cba/Definitions/vFW_CNF_CDS.json b/heat/vFW_CNF_CDS/templates/cba/Definitions/vFW_CNF_CDS.json index 9053c9b2..6c71ca22 100644 --- a/heat/vFW_CNF_CDS/templates/cba/Definitions/vFW_CNF_CDS.json +++ b/heat/vFW_CNF_CDS/templates/cba/Definitions/vFW_CNF_CDS.json @@ -37,6 +37,20 @@ "resolution-key": { "get_input": "resolution-key" } + }, + "simple-status-properties": { + "resolution-key": { + "get_input": "resolution-key" + }, + "config-deploy-setup": { + "get_attribute": [ + "config-setup-process", + "", + "assignment-map", + "config-deploy", + "config-deploy-setup" + ] + } } }, "topology_template": { @@ -100,12 +114,24 @@ }, "config-assign": { "steps": { - "config-assign": { - "description": "Create a message", - "target": "config-assign-process", + "config-setup": { + "description": "Gather necessary input for config template upload", + "target": "config-setup-process", "activities": [ { - "call_operation": "" + "call_operation": "ResourceResolutionComponent.process" + } + ], + "on_success": [ + "config-template" + ] + }, + "config-template": { + "description": "Generate and upload K8s config template", + "target": "k8s-config-template", + "activities": [ + { + "call_operation": "K8sConfigTemplateComponent.process" } ] } @@ -128,9 +154,38 @@ }, "config-deploy": { "steps": { - "config-deploy": { - "description": "Run kotlin script", - "target": "config-deploy-process" + "config-setup": { + "description": "Gather necessary input for config init and status verification", + "target": "config-setup-process", + "activities": [ + { + "call_operation": "ResourceResolutionComponent.process" + } + ], + "on_success": [ + "config-apply" + ] + }, + "config-apply": { + "description": "Activate K8s config template", + "target": "k8s-config-apply", + "activities": [ + { + "call_operation": "K8sConfigTemplateComponent.process" + } + ], + "on_success": [ + "status-verification-script" + ] + }, + "status-verification-script": { + "description": "Simple status verification script", + "target": "simple-status-check", + "activities": [ + { + "call_operation": "ComponentScriptExecutor.process" + } + ] } }, "inputs": { @@ -241,7 +296,90 @@ } } }, - "config-assign-process": { + "k8s-config-template": { + "type": "component-k8s-config-template", + "interfaces": { + "K8sConfigTemplateComponent": { + "operations": { + "process": { + "inputs": { + "artifact-prefix-names": [ + "helm_vpkg" + ], + "resource-assignment-map": { + "get_attribute": [ + "config-setup-process", + "", + "assignment-map", + "config-deploy", + "config-deploy-setup" + ] + } + } + } + } + } + }, + "artifacts": { + "ssh-service-config": { + "type": "artifact-k8sprofile-content", + "file": "Templates/k8s-configs/ssh-service.tar.gz" + }, + "ssh-service-config-customizable": { + "type": "artifact-k8sprofile-content", + "file": "Templates/k8s-configs/ssh-service-config" + }, + "ssh-service-config-customizable-mapping": { + "type": "artifact-mapping-resource", + "file": "Templates/k8s-configs/ssh-service-config/ssh-service-mapping.json" + } + } + }, + "k8s-config-apply": { + "type": "component-k8s-config-value", + "interfaces": { + "K8sConfigValueComponent": { + "operations": { + "process": { + "inputs": { + "artifact-prefix-names": [ + "helm_vpkg" + ], + "resource-assignment-map": { + "get_attribute": [ + "config-setup-process", + "", + "assignment-map", + "config-deploy", + "config-deploy-setup" + ] + } + } + } + } + } + } + }, + "simple-status-check": { + "type": "component-script-executor", + "interfaces": { + "ComponentScriptExecutor": { + "operations": { + "process": { + "inputs": { + "script-type": "kotlin", + "script-class-reference": "org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts.SimpleStatusCheck", + "instance-dependencies": [ + "blueprintPropertiesService" + ], + "dynamic-properties": "*simple-status-properties" + } + } + } + } + } + }, + "config-setup-process": { "type": "component-resource-resolution", "interfaces": { "ResourceResolutionComponent": { @@ -251,9 +389,9 @@ "resolution-key": { "get_input": "resolution-key" }, - "store-result": true, + "store-result": false, "artifact-prefix-names": [ - "cnf" + "config-deploy" ] }, "outputs": { @@ -270,13 +408,13 @@ } }, "artifacts": { - "cnf-template": { + "config-deploy-template": { "type": "artifact-template-velocity", - "file": "Templates/cnf-template.vtl" + "file": "Templates/config-setup-template.vtl" }, - "cnf-mapping": { + "config-deploy-mapping": { "type": "artifact-mapping-resource", - "file": "Templates/cnf-mapping.json" + "file": "Templates/config-setup-mapping.json" } } }, -- cgit 1.2.3-korg