aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukasz Rajewski <lukasz.rajewski@orange.com>2021-03-24 19:15:31 +0100
committerLukasz Rajewski <lukasz.rajewski@orange.com>2021-03-28 22:21:25 +0200
commit06bf0ac45889ffe00fc6e27e68ffa15c2f519e6f (patch)
treeecf4c17542c62ee6c0433edcbccac5707370a8f1
parentd2c5f361fa3a246dfa23c2c582ec498322a97282 (diff)
Real vFW CNF config-assign and config-deploy
Implementation of vFW CNF config-assign and config-deploy with utilization of CDS native components for configuration API Change-Id: I016b186e1fcad0bf1285292f2e93e12a1d96b63e Issue-ID: INT-1868 Signed-off-by: Lukasz Rajewski <lukasz.rajewski@orange.com>
-rwxr-xr-xheat/vFW_CNF_CDS/automation/config.py17
-rw-r--r--[-rwxr-xr-x]heat/vFW_CNF_CDS/automation/create_k8s_region.py15
-rwxr-xr-xheat/vFW_CNF_CDS/automation/instantiate.py7
-rwxr-xr-xheat/vFW_CNF_CDS/templates/cba-dev/enrich.sh1
-rwxr-xr-xheat/vFW_CNF_CDS/templates/cba-dev/run-vf-base-ra.sh2
-rwxr-xr-xheat/vFW_CNF_CDS/templates/cba-dev/run-vf-pkg-ra.sh3
-rwxr-xr-xheat/vFW_CNF_CDS/templates/cba-dev/run-vnf-config.sh2
-rwxr-xr-xheat/vFW_CNF_CDS/templates/cba-dev/run-vnf-ra.sh3
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Definitions/artifact_types.json5
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Definitions/data_types.json19
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Definitions/node_types.json15
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Definitions/resources_definition_types.json96
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Definitions/vFW_CNF_CDS.json86
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/CollectorScript.kt51
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/ConfigDeploy.kt6
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/ConfigDeploySetup.kt38
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/SimpleErrorCheck.kt41
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/SimpleStatusCheck.kt12
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/TOSCA-Metadata/TOSCA.meta2
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/base_template-mapping.json58
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/base_template-template.vtl26
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-config/ssh-service-mapping.json2
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-values/ssh-service-mapping.json14
-rwxr-xr-xheat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-values/values.yaml.vtl3
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/k8s-profiles/vfw-cnf-cds-vpkg-profile/ssh-service-mapping.json2
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/vfw-mapping.json58
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/vfw-template.vtl28
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/vnf-mapping.json13
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/vnf-template.vtl8
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/vpkg-mapping.json58
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/vpkg-template.vtl28
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/vsn-mapping.json58
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/Templates/vsn-template.vtl28
-rw-r--r--heat/vFW_CNF_CDS/templates/cba/pom.xml14
34 files changed, 756 insertions, 63 deletions
diff --git a/heat/vFW_CNF_CDS/automation/config.py b/heat/vFW_CNF_CDS/automation/config.py
index 96b098dd..a7aae02c 100755
--- a/heat/vFW_CNF_CDS/automation/config.py
+++ b/heat/vFW_CNF_CDS/automation/config.py
@@ -19,10 +19,10 @@ class Config:
#### REGION DETAILS ####
COMPLEX_ID = "complex"
CLOUD_OWNER = "k8sCloudOwner"
- CLOUD_REGION = "k8s-region-1"
+ CLOUD_REGION = "kud-1"
AVAILABILITY_ZONE_NAME = "k8s-availability-zone"
HYPERVISOR_TYPE = "k8s"
- TENANT_NAME = "k8s-tenant-1"
+ TENANT_NAME = "kud-1"
K8S_NAMESPACE = "vfirewall"
CUSTOMER_RESOURCE_DEFINITIONS = []
# Uncomment, if you want to run on non KUD k8s cluster
@@ -41,6 +41,7 @@ class Config:
PROFILE_NAME = "vfw-cnf-cds-base-profile"
PROFILE_SOURCE = PROFILE_NAME
+ RELEASE_NAME = "vfw-1"
VENDOR = "vendor_cnf"
SERVICENAME = "vfw_k8s_demo_CNF"
@@ -50,7 +51,9 @@ class Config:
SDNC_ARTIFACT_NAME = "vnf"
# INSERT PARAMS FOR VNF HERE AS "name" : "value" PAIR
- VNF_PARAM_LIST = {}
+ VNF_PARAM_LIST = {
+ "k8s-rb-profile-namespace": K8S_NAMESPACE
+ }
VF_MODULE_PREFIX = ""
if NATIVE:
@@ -60,22 +63,22 @@ class Config:
VF_MODULE_PREFIX + "base_template": {
"k8s-rb-profile-name": PROFILE_NAME,
"k8s-rb-profile-source": PROFILE_SOURCE,
- "k8s-rb-profile-namespace": K8S_NAMESPACE
+ "k8s-rb-instance-release-name": RELEASE_NAME + "-base"
},
VF_MODULE_PREFIX + "vfw": {
"k8s-rb-profile-name": PROFILE_NAME,
"k8s-rb-profile-source": PROFILE_SOURCE,
- "k8s-rb-profile-namespace": K8S_NAMESPACE
+ "k8s-rb-instance-release-name": RELEASE_NAME + "-vfw"
},
VF_MODULE_PREFIX + "vpkg": {
"k8s-rb-profile-name": PROFILE_NAME,
"k8s-rb-profile-source": PROFILE_SOURCE,
- "k8s-rb-profile-namespace": K8S_NAMESPACE
+ "k8s-rb-instance-release-name": RELEASE_NAME + "-vpkg"
},
VF_MODULE_PREFIX + "vsn": {
"k8s-rb-profile-name": PROFILE_NAME,
"k8s-rb-profile-source": PROFILE_SOURCE,
- "k8s-rb-profile-namespace": K8S_NAMESPACE
+ "k8s-rb-instance-release-name": RELEASE_NAME + "-vsn"
}
}
diff --git a/heat/vFW_CNF_CDS/automation/create_k8s_region.py b/heat/vFW_CNF_CDS/automation/create_k8s_region.py
index cfbec8cc..ca680cf1 100755..100644
--- a/heat/vFW_CNF_CDS/automation/create_k8s_region.py
+++ b/heat/vFW_CNF_CDS/automation/create_k8s_region.py
@@ -21,7 +21,7 @@ from uuid import uuid4
from config import Config
from k8s_client import K8sClient
-from so_db_adapter import SoDBAdapter
+from so_db_adapter import SoDBUpdate
from onapsdk.aai.business import Customer
from onapsdk.aai.cloud_infrastructure import Complex, CloudRegion
from onapsdk.msb.k8s import ConnectivityInfo
@@ -118,10 +118,9 @@ except:
#### Add region to SO db ####
logger.info("******** SO Database *******")
-so_db_adapter = SoDBAdapter(cloud_region_id=Config.CLOUD_REGION,
- complex_id=Config.COMPLEX_ID,
- onap_kubeconfig_path=Config.ONAP_KUBECONFIG_PATH)
-is_region_in_so = so_db_adapter.check_region_in_db()
-
-if not is_region_in_so:
- so_db_adapter.add_region_to_so_db()
+result = SoDBUpdate.add_region_to_so_db(cloud_region_id=Config.CLOUD_REGION,
+ complex_id=Config.COMPLEX_ID)
+if result.status_code == 201:
+ logger.info("Region in SO db created successfully")
+else:
+ logger.error("Creating region in SO db failed")
diff --git a/heat/vFW_CNF_CDS/automation/instantiate.py b/heat/vFW_CNF_CDS/automation/instantiate.py
index 7363c479..bfc68aa1 100755
--- a/heat/vFW_CNF_CDS/automation/instantiate.py
+++ b/heat/vFW_CNF_CDS/automation/instantiate.py
@@ -146,7 +146,12 @@ for vnf in service.vnfs:
profile_name = Config.VF_MODULE_PARAM_LIST[vf_module_label]["k8s-rb-profile-name"]
try:
profile = definition.get_profile_by_name(profile_name)
- if profile.namespace != Config.VF_MODULE_PARAM_LIST[vf_module_label]["k8s-rb-profile-namespace"]:
+ namespace = None
+ if "k8s-rb-profile-namespace" in Config.VNF_PARAM_LIST:
+ namespace = Config.VNF_PARAM_LIST["k8s-rb-profile-namespace"]
+ if "k8s-rb-profile-namespace" in Config.VF_MODULE_PARAM_LIST[vf_module_label]:
+ namespace = Config.VF_MODULE_PARAM_LIST[vf_module_label]["k8s-rb-profile-namespace"]
+ if namespace != None and profile.namespace != namespace:
profile.delete()
logger.info("Profile: " + profile_name + " for " + vf_module.name + " deleted")
else:
diff --git a/heat/vFW_CNF_CDS/templates/cba-dev/enrich.sh b/heat/vFW_CNF_CDS/templates/cba-dev/enrich.sh
index 1db994b6..632cb89f 100755
--- a/heat/vFW_CNF_CDS/templates/cba-dev/enrich.sh
+++ b/heat/vFW_CNF_CDS/templates/cba-dev/enrich.sh
@@ -19,4 +19,5 @@
curl --location --request POST 'http://127.0.0.1:8081/api/v1/blueprint-model/enrich' \
--header 'Authorization: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==' \
+-o 'cba.zip' \
--form 'file=@../package_native/CBA.zip' | jq
diff --git a/heat/vFW_CNF_CDS/templates/cba-dev/run-vf-base-ra.sh b/heat/vFW_CNF_CDS/templates/cba-dev/run-vf-base-ra.sh
index f40760f2..3046cfd8 100755
--- a/heat/vFW_CNF_CDS/templates/cba-dev/run-vf-base-ra.sh
+++ b/heat/vFW_CNF_CDS/templates/cba-dev/run-vf-base-ra.sh
@@ -32,7 +32,7 @@ curl --location --request POST 'http://localhost:8081/api/v1/execution-service/p
},
"actionIdentifiers": {
"blueprintName": "vFW_CNF_CDS",
- "blueprintVersion": "7.0.0",
+ "blueprintVersion": "8.0.0",
"actionName": "resource-assignment",
"mode": "sync"
},
diff --git a/heat/vFW_CNF_CDS/templates/cba-dev/run-vf-pkg-ra.sh b/heat/vFW_CNF_CDS/templates/cba-dev/run-vf-pkg-ra.sh
index 09283293..a80238db 100755
--- a/heat/vFW_CNF_CDS/templates/cba-dev/run-vf-pkg-ra.sh
+++ b/heat/vFW_CNF_CDS/templates/cba-dev/run-vf-pkg-ra.sh
@@ -32,7 +32,7 @@ curl --location --request POST 'http://localhost:8081/api/v1/execution-service/p
},
"actionIdentifiers": {
"blueprintName": "vFW_CNF_CDS",
- "blueprintVersion": "7.0.0",
+ "blueprintVersion": "8.0.0",
"actionName": "resource-assignment",
"mode": "sync"
},
@@ -60,6 +60,7 @@ curl --location --request POST 'http://localhost:8081/api/v1/execution-service/p
"k8s-rb-profile-name": "vfw-cnf-cds-base-profile",
"k8s-rb-profile-source": "vfw-cnf-cds-base-profile",
"k8s-rb-profile-namespace": "vfirewall",
+ "k8s-rb-profile-k8s-version": "1.18.9",
"k8s-rb-config-template-name": "ssh-service-config",
"k8s-rb-config-template-source": "ssh-service-config",
"management-prefix-id" : 3
diff --git a/heat/vFW_CNF_CDS/templates/cba-dev/run-vnf-config.sh b/heat/vFW_CNF_CDS/templates/cba-dev/run-vnf-config.sh
index 1461475e..d8a7ca19 100755
--- a/heat/vFW_CNF_CDS/templates/cba-dev/run-vnf-config.sh
+++ b/heat/vFW_CNF_CDS/templates/cba-dev/run-vnf-config.sh
@@ -32,7 +32,7 @@ curl --location --request POST 'http://localhost:8081/api/v1/execution-service/p
},
"actionIdentifiers": {
"blueprintName": "vFW_CNF_CDS",
- "blueprintVersion": "7.0.0",
+ "blueprintVersion": "8.0.0",
"actionName": "'config-$ACTION'",
"mode": "sync"
},
diff --git a/heat/vFW_CNF_CDS/templates/cba-dev/run-vnf-ra.sh b/heat/vFW_CNF_CDS/templates/cba-dev/run-vnf-ra.sh
index 1e24a7a2..2d64bac7 100755
--- a/heat/vFW_CNF_CDS/templates/cba-dev/run-vnf-ra.sh
+++ b/heat/vFW_CNF_CDS/templates/cba-dev/run-vnf-ra.sh
@@ -31,7 +31,7 @@ curl --location --request POST 'http://localhost:8081/api/v1/execution-service/p
},
"actionIdentifiers": {
"blueprintName": "vFW_CNF_CDS",
- "blueprintVersion": "7.0.0",
+ "blueprintVersion": "8.0.0",
"actionName": "resource-assignment",
"mode": "sync"
},
@@ -49,6 +49,7 @@ curl --location --request POST 'http://localhost:8081/api/v1/execution-service/p
"vnf-id": "51274ece-55ca-4cbc-b7c4-0da0dcc65d38",
"vnf_name": "sample-vnf-name",
"k8s-rb-profile-namespace": "vfw-namespace",
+ "k8s-rb-profile-k8s-version": "1.18.9",
"int_private1_net_cidr" : "192.168.10.0/24",
"int_private2_net_cidr" : "192.168.20.0/24",
"onap_private_net_cidr" : "10.0.0.0/16",
diff --git a/heat/vFW_CNF_CDS/templates/cba/Definitions/artifact_types.json b/heat/vFW_CNF_CDS/templates/cba/Definitions/artifact_types.json
index 77d0eb19..4211156e 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Definitions/artifact_types.json
+++ b/heat/vFW_CNF_CDS/templates/cba/Definitions/artifact_types.json
@@ -20,6 +20,11 @@
"description": "K8s Profile Folder Artifact",
"version": "1.0.0",
"derived_from": "tosca.artifacts.Implementation"
+ },
+ "artifact-k8sconfig-content": {
+ "description": "K8s Config Folder Artifact",
+ "version": "1.0.0",
+ "derived_from": "tosca.artifacts.Implementation"
}
}
}
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 5fb59cf5..23ae1649 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Definitions/data_types.json
+++ b/heat/vFW_CNF_CDS/templates/cba/Definitions/data_types.json
@@ -57,17 +57,24 @@
},
"k8s-rb-profile-namespace": {
"description": "K8s namespace to create helm chart for specified profile",
- "type": "string",
- "default": "default"
+ "type": "string"
},
"k8s-rb-profile-name": {
"description": "Profile name used in multicloud/k8s plugin to identify Helm chart(s) where this mapping is providing override values.",
"type": "string"
},
+ "k8s-rb-instance-release-name": {
+ "description": "Name of the release for the helm package instance in k8s",
+ "type": "string"
+ },
"k8s-rb-profile-source": {
"description": "The source folder or file relative to 'Templates/k8s-profiles' folder",
"type": "string"
},
+ "k8s-rb-profile-k8s-version": {
+ "description": "Profile k8s version used in multicloud/k8s plugin",
+ "type": "string"
+ },
"k8s-rb-config-template-name": {
"description": "The name of configuration template for config-assign operation",
"type": "string"
@@ -76,6 +83,14 @@
"description": "The source of configuration template for config-assign operation",
"type": "string"
},
+ "k8s-rb-config-name": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string"
+ },
+ "k8s-rb-config-value-source": {
+ "description": "The source of configuration values for config-deploy 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 95db7aec..c191f164 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Definitions/node_types.json
+++ b/heat/vFW_CNF_CDS/templates/cba/Definitions/node_types.json
@@ -210,6 +210,11 @@
"required": false,
"type": "string"
},
+ "k8s-rb-profile-k8s-version": {
+ "description": "a K8s cluster version for the profile",
+ "required": false,
+ "type": "string"
+ },
"k8s-rb-profile-source": {
"description": "Source (tgz/folder) for the template in CBA",
"required": false,
@@ -325,12 +330,12 @@
"operations": {
"process": {
"inputs": {
- "k8s-template-name": {
+ "k8s-rb-config-template-name": {
"description": "K8s template name",
"required": false,
"type": "string"
},
- "k8s-config-name": {
+ "k8s-rb-config-name": {
"description": "K8s config name",
"required": false,
"type": "string"
@@ -340,12 +345,12 @@
"required": false,
"type": "string"
},
- "k8s-rb-template-value-source": {
+ "k8s-rb-config-value-source": {
"description": "Location of value source in CBA",
"required": false,
"type": "string"
},
- "k8s-operation-type": {
+ "k8s-config-operation-type": {
"required": false,
"type": "string",
"constraints": [
@@ -353,7 +358,7 @@
"valid_values": [
"create",
"update",
- "rollback"
+ "delete"
]
}
],
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 6277e01b..9975878b 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
@@ -270,6 +270,25 @@
}
}
},
+ "k8s-rb-instance-release-name": {
+ "tags": "k8s, cnf, profile, k8s-rb-instance-release-name",
+ "name": "k8s-rb-instance-release-name",
+ "property": {
+ "description": "Name of the release for the helm package instance in k8s",
+ "type": "string"
+ },
+ "group": "default",
+ "updated-by": "Rajewski, Lukasz <lukasz.rajewski@orange.com>",
+ "sources": {
+ "input": {
+ "type": "source-input"
+ },
+ "default": {
+ "type": "source-default",
+ "properties": {}
+ }
+ }
+ },
"k8s-rb-profile-namespace": {
"tags": "k8s, cnf, profile, namespace, k8s-rb-profile-namespace",
"name": "k8s-rb-profile-namespace",
@@ -309,6 +328,45 @@
}
}
},
+ "k8s-rb-profile-k8s-version": {
+ "tags": "k8s, cnf, profile, k8s version, k8s-rb-profile-k8s-version",
+ "name": "k8s-rb-profile-k8s-version",
+ "property": {
+ "description": "Profile k8s version used in multicloud/k8s plugin",
+ "type": "string"
+ },
+ "group": "default",
+ "updated-by": "Rajewski, Lukasz <lukasz.rajewski@orange.com>",
+ "sources": {
+ "input": {
+ "type": "source-input"
+ },
+ "default": {
+ "type": "source-default",
+ "properties": {}
+ },
+ "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/vnf-topology/vnf-parameters-data/param/k8s-rb-profile-k8s-version",
+ "path": "/param/0/value",
+ "input-key-mapping": {
+ "service-instance-id": "service-instance-id",
+ "vnf-id": "vnf-id"
+ },
+ "output-key-mapping": {
+ "k8s-rb-profile-k8s-version": "value"
+ },
+ "key-dependencies": [
+ "service-instance-id",
+ "vnf-id"
+ ]
+ }
+ }
+ }
+ },
"k8s-rb-profile-source": {
"tags": "k8s, cnf, profile, k8s-rb-profile-source",
"name": "k8s-rb-profile-source",
@@ -366,6 +424,44 @@
}
}
},
+ "k8s-rb-config-value-source": {
+ "tags": "k8s, cnf, config, k8s-rb-config-value-source",
+ "name": "k8s-rb-config-value-source",
+ "property": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string"
+ },
+ "group": "default",
+ "updated-by": "Rajewski, Lukasz <lukasz.rajewski@orange.com>",
+ "sources": {
+ "input": {
+ "type": "source-input"
+ },
+ "default": {
+ "type": "source-default",
+ "properties": {}
+ }
+ }
+ },
+ "k8s-rb-config-name": {
+ "tags": "k8s, cnf, config, k8s-rb-config-name",
+ "name": "k8s-rb-config-name",
+ "property": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string"
+ },
+ "group": "default",
+ "updated-by": "Rajewski, Lukasz <lukasz.rajewski@orange.com>",
+ "sources": {
+ "input": {
+ "type": "source-input"
+ },
+ "default": {
+ "type": "source-default",
+ "properties": {}
+ }
+ }
+ },
"management-prefix-id": {
"tags": "management-prefix-id",
"name": "management-prefix-id",
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 6c71ca22..c17caca2 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
@@ -5,7 +5,7 @@
"author-email": "lukasz.rajewski@orange.com",
"user-groups": "ADMIN, OPERATION",
"template_name": "vFW_CNF_CDS",
- "template_version": "7.0.0",
+ "template_version": "8.0.0",
"template_tags": "Samuli Silvius, Lukasz Rajewski, vFW_CNF_CDS",
"template_type": "DEFAULT"
},
@@ -164,6 +164,9 @@
],
"on_success": [
"config-apply"
+ ],
+ "on_failure": [
+ "handle_error"
]
},
"config-apply": {
@@ -185,7 +188,29 @@
{
"call_operation": "ComponentScriptExecutor.process"
}
+ ],
+ "on_success": [
+ "collect-results"
+ ],
+ "on_failure": [
+ "handle_error"
+ ]
+ },
+ "handle_error": {
+ "description": "Simple error verification script",
+ "target": "simple-error-check",
+ "activities": [
+ {
+ "call_operation": "ComponentScriptExecutor.process"
+ }
+ ],
+ "on_success": [
+ "collect-results"
]
+ },
+ "collect-results": {
+ "description": "Final collection of results",
+ "target": "collect-results"
}
},
"inputs": {
@@ -322,11 +347,11 @@
},
"artifacts": {
"ssh-service-config": {
- "type": "artifact-k8sprofile-content",
+ "type": "artifact-k8sconfig-content",
"file": "Templates/k8s-configs/ssh-service.tar.gz"
},
"ssh-service-config-customizable": {
- "type": "artifact-k8sprofile-content",
+ "type": "artifact-k8sconfig-content",
"file": "Templates/k8s-configs/ssh-service-config"
},
"ssh-service-config-customizable-mapping": {
@@ -345,6 +370,7 @@
"artifact-prefix-names": [
"helm_vpkg"
],
+ "k8s-config-operation-type": "create",
"resource-assignment-map": {
"get_attribute": [
"config-setup-process",
@@ -358,6 +384,20 @@
}
}
}
+ },
+ "artifacts": {
+ "ssh-service-default": {
+ "type": "artifact-k8sconfig-content",
+ "file": "Templates/k8s-configs/ssh-service-config/values.yaml"
+ },
+ "ssh-service-config": {
+ "type": "artifact-k8sconfig-content",
+ "file": "Templates/k8s-configs/ssh-service-values/values.yaml.vtl"
+ },
+ "ssh-service-config-mapping": {
+ "type": "artifact-mapping-resource",
+ "file": "Templates/k8s-configs/ssh-service-values/ssh-service-mapping.json"
+ }
}
},
"simple-status-check": {
@@ -379,6 +419,25 @@
}
}
},
+ "simple-error-check": {
+ "type": "component-script-executor",
+ "interfaces": {
+ "ComponentScriptExecutor": {
+ "operations": {
+ "process": {
+ "inputs": {
+ "script-type": "kotlin",
+ "script-class-reference": "org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts.SimpleErrorCheck",
+ "instance-dependencies": [
+ "blueprintPropertiesService"
+ ],
+ "dynamic-properties": "*simple-status-properties"
+ }
+ }
+ }
+ }
+ }
+ },
"config-setup-process": {
"type": "component-resource-resolution",
"interfaces": {
@@ -433,6 +492,27 @@
}
}
}
+ },
+ "collect-results": {
+ "type": "component-script-executor",
+ "interfaces": {
+ "ComponentScriptExecutor": {
+ "operations": {
+ "process": {
+ "implementation": {
+ "primary": "component-script",
+ "timeout": 180,
+ "operation_host": "SELF"
+ },
+ "inputs": {
+ "script-type": "kotlin",
+ "script-class-reference": "org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts.CollectorScript"
+ },
+ "outputs": {}
+ }
+ }
+ }
+ }
}
}
}
diff --git a/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/CollectorScript.kt b/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/CollectorScript.kt
new file mode 100644
index 00000000..a9de1972
--- /dev/null
+++ b/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/CollectorScript.kt
@@ -0,0 +1,51 @@
+/*
+ * Copyright © 2021 Bell Canada.
+ *
+ * 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.JsonNode
+import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractScriptComponentFunction
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.ComponentScriptExecutor
+import org.onap.ccsdk.cds.controllerblueprints.core.BlueprintProcessorException
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonNode
+import org.onap.ccsdk.cds.controllerblueprints.core.logger
+
+open class CollectorScript : AbstractScriptComponentFunction() {
+
+ private val log = logger(CollectorScript::class)
+
+ override suspend fun processNB(executionRequest: ExecutionServiceInput) {
+ bluePrintRuntimeService.bluePrintContext()
+ .serviceTemplate.topologyTemplate!!.nodeTemplates!!
+ .keys.filter { it.startsWith("execute-script") }
+ .associateWith { responseData(it) }
+ .let { it.asJsonNode() }
+ .also { log.info("Collected results: $it") }
+ .let { setAttribute(ComponentScriptExecutor.ATTRIBUTE_RESPONSE_DATA, it) }
+ }
+
+ private fun responseData(nodeTemplateName: String): JsonNode? {
+ return try {
+ bluePrintRuntimeService.getNodeTemplateAttributeValue(nodeTemplateName,
+ ComponentScriptExecutor.ATTRIBUTE_RESPONSE_DATA)
+ } catch (exception: BlueprintProcessorException) { null }
+ }
+
+ override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) {
+ addError(runtimeException.message ?: "Failed without error message")
+ }
+}
diff --git a/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/ConfigDeploy.kt b/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/ConfigDeploy.kt
index 861cdf66..96b3c515 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/ConfigDeploy.kt
+++ b/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/ConfigDeploy.kt
@@ -30,11 +30,11 @@ open class ConfigDeploy : AbstractScriptComponentFunction() {
}
override suspend fun processNB(executionRequest: ExecutionServiceInput) {
- val resolution_key = getDynamicProperties("resolution-key").asText()
- log.info("Got the resolution_key: $resolution_key from config-deploy going to retrieve the data from DB")
+ val resolutionKey = getDynamicProperties("resolution-key").asText()
+ log.info("Got the resolution_key: $resolutionKey from config-deploy going to retrieve the data from DB")
val prefix = "config-deploy" // used in the config-assign resolution
- val payload = storedContentFromResolvedArtifactNB(resolution_key, prefix)
+ val payload = storedContentFromResolvedArtifactNB(resolutionKey, prefix)
log.info("cnf configuration data from DB : \n$payload\n")
println("Run config-deploy")
diff --git a/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/ConfigDeploySetup.kt b/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/ConfigDeploySetup.kt
index 2e6ec816..f04813df 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/ConfigDeploySetup.kt
+++ b/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/ConfigDeploySetup.kt
@@ -19,6 +19,8 @@ package org.onap.ccsdk.cds.blueprintsprocessor.services.execution.scripts
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.node.ObjectNode
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.template.K8sConfigTemplateComponent
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.template.K8sConfigValueComponent
import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.processor.ResourceAssignmentProcessor
import org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.utils.ResourceAssignmentUtils
import org.onap.ccsdk.cds.controllerblueprints.core.BlueprintProcessorException
@@ -33,12 +35,12 @@ open class ConfigDeploySetup() : ResourceAssignmentProcessor() {
return "ConfigDeploySetup"
}
- override suspend fun processNB(resourceAssignment: ResourceAssignment) {
+ override suspend fun processNB(executionRequest: ResourceAssignment) {
var retValue: ObjectNode? = null
try {
- if (resourceAssignment.name == "config-deploy-setup") {
+ if (executionRequest.name == "config-deploy-setup") {
val modulesSdnc = raRuntimeService.getResolutionStore("vf-modules-list-sdnc")["vf-modules"]
val modulesAai = raRuntimeService.getResolutionStore("vf-modules-list-aai")["vf-modules"]
val objectMapper = jacksonObjectMapper()
@@ -46,22 +48,30 @@ open class ConfigDeploySetup() : ResourceAssignmentProcessor() {
for (module in modulesSdnc) {
val modelTopology = module.at("/vf-module-data/vf-module-topology")
val moduleParameters = modelTopology.at("/vf-module-parameters/param")
- val label: String? = getParamValueByName(moduleParameters,"vf_module_label")
+ val label: String? = getParamValueByName(moduleParameters, "vf_module_label")
if (label != null) {
val modelInfo = modelTopology["onap-model-information"]
val moduleData: ObjectNode = objectMapper.createObjectNode()
result.put(label, moduleData)
- moduleData.put("k8s-rb-definition-name", modelInfo["model-invariant-uuid"].asText())
- moduleData.put("k8s-rb-definition-version", modelInfo["model-uuid"].asText())
- val templateName: String? = getParamValueByName(moduleParameters,"k8s-rb-config-template-name")
- val templateSource: String? = getParamValueByName(moduleParameters,"k8s-rb-config-template-source")
+ moduleData.put(K8sConfigTemplateComponent.INPUT_K8S_DEFINITION_NAME, modelInfo["model-invariant-uuid"].asText())
+ moduleData.put(K8sConfigTemplateComponent.INPUT_K8S_DEFINITION_VERSION, modelInfo["model-uuid"].asText())
+ val templateName: String? = getParamValueByName(moduleParameters, K8sConfigTemplateComponent.INPUT_K8S_TEMPLATE_NAME)
+ val templateSource: String? = getParamValueByName(moduleParameters, K8sConfigTemplateComponent.INPUT_K8S_TEMPLATE_SOURCE)
+ val configValueSource: String? = getParamValueByName(moduleParameters, K8sConfigValueComponent.INPUT_K8S_CONFIG_VALUE_SOURCE)
+ val configName: String? = getParamValueByName(moduleParameters, K8sConfigValueComponent.INPUT_K8S_RB_CONFIG_NAME)
+
if (templateName != null)
- moduleData.put("k8s-rb-config-template-name", templateName)
+ moduleData.put(K8sConfigTemplateComponent.INPUT_K8S_TEMPLATE_NAME, templateName)
if (templateSource != null)
- moduleData.put("k8s-rb-config-template-source", templateSource)
+ moduleData.put(K8sConfigTemplateComponent.INPUT_K8S_TEMPLATE_SOURCE, templateSource)
+ if (configValueSource != null)
+ moduleData.put(K8sConfigValueComponent.INPUT_K8S_CONFIG_VALUE_SOURCE, configValueSource)
+ if (configName != null)
+ moduleData.put(K8sConfigValueComponent.INPUT_K8S_RB_CONFIG_NAME, configName)
+
for (aaiModule in modulesAai) {
if (aaiModule["vf-module-id"].asText() == module["vf-module-id"].asText()) {
- moduleData.put("k8s-instance-id", aaiModule["heat-stack-id"].asText())
+ moduleData.put(K8sConfigValueComponent.INPUT_K8S_INSTANCE_ID, aaiModule["heat-stack-id"].asText())
break
}
}
@@ -69,12 +79,12 @@ open class ConfigDeploySetup() : ResourceAssignmentProcessor() {
}
retValue = result
}
- ResourceAssignmentUtils.setResourceDataValue(resourceAssignment, raRuntimeService, retValue)
+ ResourceAssignmentUtils.setResourceDataValue(executionRequest, raRuntimeService, retValue)
} catch (e: Exception) {
log.error(e.message, e)
- ResourceAssignmentUtils.setResourceDataValue(resourceAssignment, raRuntimeService, "ERROR")
+ ResourceAssignmentUtils.setResourceDataValue(executionRequest, raRuntimeService, "ERROR")
- throw BlueprintProcessorException("Failed in template key ($resourceAssignment) assignments, cause: ${e.message}", e)
+ throw BlueprintProcessorException("Failed in template key ($executionRequest) assignments, cause: ${e.message}", e)
}
}
@@ -87,7 +97,7 @@ open class ConfigDeploySetup() : ResourceAssignmentProcessor() {
return null
}
- override suspend fun recoverNB(runtimeException: RuntimeException, resourceAssignment: ResourceAssignment) {
+ override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ResourceAssignment) {
this.addError("${runtimeException.message}")
}
}
diff --git a/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/SimpleErrorCheck.kt b/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/SimpleErrorCheck.kt
new file mode 100644
index 00000000..8e4a58ab
--- /dev/null
+++ b/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/SimpleErrorCheck.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright © 2021 Orange
+ *
+ * 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 org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput
+import org.onap.ccsdk.cds.blueprintsprocessor.services.execution.AbstractScriptComponentFunction
+import org.slf4j.LoggerFactory
+
+open class SimpleErrorCheck : AbstractScriptComponentFunction() {
+
+ private val log = LoggerFactory.getLogger(SimpleErrorCheck::class.java)!!
+
+ override fun getName(): String {
+ return "SimpleErrorCheck"
+ }
+
+ override suspend fun processNB(executionRequest: ExecutionServiceInput) {
+ log.info("SIMPLE ERROR CHECK - START")
+
+ log.info("SIMPLE ERROR CHECK - END")
+ }
+
+ override suspend fun recoverNB(runtimeException: RuntimeException, executionRequest: ExecutionServiceInput) {
+ log.info("Executing Recovery")
+ this.addError("${runtimeException.message}")
+ }
+}
diff --git a/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/SimpleStatusCheck.kt b/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/SimpleStatusCheck.kt
index c775bb19..90330644 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/SimpleStatusCheck.kt
+++ b/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/SimpleStatusCheck.kt
@@ -44,16 +44,16 @@ open class SimpleStatusCheck : AbstractScriptComponentFunction() {
val k8sConfiguration = K8sConnectionPluginConfiguration(bluePrintPropertiesService)
- var instanceApi = K8sPluginInstanceApi(k8sConfiguration)
+ val instanceApi = K8sPluginInstanceApi(k8sConfiguration)
var checkCount: Int = 30 // in the future to be read in from the input
- while(checkCount > 0) {
+ while (checkCount > 0) {
var continueCheck = false
configValueSetup.fields().forEach { it ->
val vfModuleName = it.key
val instanceName = it.value.get("k8s-instance-id").asText()
- var instanceStatus: K8sRbInstanceStatus? = instanceApi.getInstanceStatus(instanceName)
+ val instanceStatus: K8sRbInstanceStatus? = instanceApi.getInstanceStatus(instanceName)
instanceStatus?.resourcesStatus?.forEach {
if (it.gvk?.kind == "Pod") {
var version = it.gvk?.version!!
@@ -61,11 +61,11 @@ open class SimpleStatusCheck : AbstractScriptComponentFunction() {
version = "${it.gvk?.group}/$version"
// val podStatus = instanceApi.queryInstanceStatus(instanceName, it.gvk?.kind!!, version, it.name, null)
// log.info(podStatus.toString())
- var podState = it.status?.get("status") as Map<String, Object>
+ val podState = it.status?.get("status") as Map<String, Object>
- if ((podState?.get("phase") as String) != "Running") {
+ if ((podState["phase"] as String) != "Running") {
continueCheck = true
- log.info("Pod ${it?.name} [$vfModuleName] has invalid state ${(podState?.get("phase"))}")
+ log.info("Pod ${it.name} [$vfModuleName] has invalid state ${(podState["phase"])}")
}
}
}
diff --git a/heat/vFW_CNF_CDS/templates/cba/TOSCA-Metadata/TOSCA.meta b/heat/vFW_CNF_CDS/templates/cba/TOSCA-Metadata/TOSCA.meta
index fd11bfbc..d9020e5e 100644
--- a/heat/vFW_CNF_CDS/templates/cba/TOSCA-Metadata/TOSCA.meta
+++ b/heat/vFW_CNF_CDS/templates/cba/TOSCA-Metadata/TOSCA.meta
@@ -3,6 +3,6 @@ CSAR-Version: 1.0
Created-By: Samuli Silvius <s.silvius@partner.samsung.com>
Entry-Definitions: Definitions/vFW_CNF_CDS.json
Template-Name: vFW_CNF_CDS
-Template-Version: 7.0.0
+Template-Version: 8.0.0
Template-Type: DEFAULT
Template-Tags: Samuli Silvius, Lukasz Rajewski, vFW_CNF_CDS
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/base_template-mapping.json b/heat/vFW_CNF_CDS/templates/cba/Templates/base_template-mapping.json
index d25f7417..686f418f 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/base_template-mapping.json
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/base_template-mapping.json
@@ -146,7 +146,26 @@
"input-param": false,
"dictionary-name": "k8s-rb-profile-namespace",
"dictionary-source": "sdnc",
- "dependencies": []
+ "dependencies": [
+ "service-instance-id",
+ "vnf-id"
+ ]
+ },
+ {
+ "name": "k8s-rb-profile-k8s-version",
+ "property": {
+ "description": "K8s cluster version to create helm chart for specified RB profile",
+ "type": "string",
+ "required": false,
+ "default": "1.18.9"
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-profile-k8s-version",
+ "dictionary-source": "sdnc",
+ "dependencies": [
+ "service-instance-id",
+ "vnf-id"
+ ]
},
{
"name": "k8s-rb-profile-name",
@@ -162,6 +181,19 @@
"dependencies": []
},
{
+ "name": "k8s-rb-instance-release-name",
+ "property": {
+ "description": "Name of the release for the helm package instance in k8s",
+ "type": "string",
+ "required": false,
+ "default": "base"
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-instance-release-name",
+ "dictionary-source": "default",
+ "dependencies": []
+ },
+ {
"name": "k8s-rb-definition-name",
"property": {
"description": "RB Name identifier of Helm chart(s) in k8s plugin",
@@ -230,5 +262,29 @@
"dictionary-name": "k8s-rb-config-template-source",
"dictionary-source": "default",
"dependencies": []
+ },
+ {
+ "name": "k8s-rb-config-name",
+ "property": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string",
+ "required": false
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-config-name",
+ "dictionary-source": "default",
+ "dependencies": []
+ },
+ {
+ "name": "k8s-rb-config-value-source",
+ "property": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string",
+ "required": false
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-config-value-source",
+ "dictionary-source": "default",
+ "dependencies": []
}
]
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/base_template-template.vtl b/heat/vFW_CNF_CDS/templates/cba/Templates/base_template-template.vtl
index a6bc57b5..4d1b46a0 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/base_template-template.vtl
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/base_template-template.vtl
@@ -93,6 +93,10 @@
}
],
"resource-accumulator-resolved-data": [
+ {
+ "param-name": "vnf_name",
+ "param-value": "${vnf_name}"
+ },
##RB name
{
"param-name": "vf-module-model-invariant-uuid",
@@ -103,6 +107,12 @@
"param-name": "vf-module-model-version",
"param-value": "${vf-module-model-version}"
},
+##Release name
+ {
+ "param-name": "k8s-rb-instance-release-name",
+ "param-value": "${k8s-rb-instance-release-name}"
+ },
+##Profile name
{
"param-name": "k8s-rb-profile-name",
"param-value": "${k8s-rb-profile-name}"
@@ -118,6 +128,22 @@
{
"param-name": "onap_private_subnet_id",
"param-value": "management-network-subnet-1"
+ },
+ {
+ "param-name": "k8s-rb-config-template-name",
+ "param-value": "${k8s-rb-config-template-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-template-source",
+ "param-value": "${k8s-rb-config-template-source}"
+ },
+ {
+ "param-name": "k8s-rb-config-name",
+ "param-value": "${k8s-rb-config-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-value-source",
+ "param-value": "${k8s-rb-config-value-source}"
}
]
}
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-config/ssh-service-mapping.json b/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-config/ssh-service-mapping.json
index 47db31da..4fd287fc 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-config/ssh-service-mapping.json
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-config/ssh-service-mapping.json
@@ -4,7 +4,7 @@
"property": {
"description": "The number of node port for ssh service of vpg",
"type": "integer",
- "default": "0"
+ "default": 31922
},
"input-param": false,
"dictionary-name": "vpg-management-port",
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-values/ssh-service-mapping.json b/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-values/ssh-service-mapping.json
new file mode 100644
index 00000000..4fd287fc
--- /dev/null
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-values/ssh-service-mapping.json
@@ -0,0 +1,14 @@
+[
+ {
+ "name": "vpg-management-port",
+ "property": {
+ "description": "The number of node port for ssh service of vpg",
+ "type": "integer",
+ "default": 31922
+ },
+ "input-param": false,
+ "dictionary-name": "vpg-management-port",
+ "dictionary-source": "default",
+ "dependencies": []
+ }
+]
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-values/values.yaml.vtl b/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-values/values.yaml.vtl
new file mode 100755
index 00000000..f636e8f3
--- /dev/null
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-configs/ssh-service-values/values.yaml.vtl
@@ -0,0 +1,3 @@
+vnf_name: test-vnf
+vpg_name_0: test-vnf-vpg
+vpg_management_port: ${vpg-management-port}
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-profiles/vfw-cnf-cds-vpkg-profile/ssh-service-mapping.json b/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-profiles/vfw-cnf-cds-vpkg-profile/ssh-service-mapping.json
index 47db31da..d5ab945f 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-profiles/vfw-cnf-cds-vpkg-profile/ssh-service-mapping.json
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/k8s-profiles/vfw-cnf-cds-vpkg-profile/ssh-service-mapping.json
@@ -4,7 +4,7 @@
"property": {
"description": "The number of node port for ssh service of vpg",
"type": "integer",
- "default": "0"
+ "default": 0
},
"input-param": false,
"dictionary-name": "vpg-management-port",
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/vfw-mapping.json b/heat/vFW_CNF_CDS/templates/cba/Templates/vfw-mapping.json
index ac083882..f5d7ac05 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/vfw-mapping.json
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/vfw-mapping.json
@@ -146,7 +146,26 @@
"input-param": false,
"dictionary-name": "k8s-rb-profile-namespace",
"dictionary-source": "sdnc",
- "dependencies": []
+ "dependencies": [
+ "service-instance-id",
+ "vnf-id"
+ ]
+ },
+ {
+ "name": "k8s-rb-profile-k8s-version",
+ "property": {
+ "description": "K8s cluster version to create helm chart for specified RB profile",
+ "type": "string",
+ "required": false,
+ "default": "1.18.9"
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-profile-k8s-version",
+ "dictionary-source": "sdnc",
+ "dependencies": [
+ "service-instance-id",
+ "vnf-id"
+ ]
},
{
"name": "k8s-rb-profile-name",
@@ -162,6 +181,19 @@
"dependencies": []
},
{
+ "name": "k8s-rb-instance-release-name",
+ "property": {
+ "description": "Name of the release for the helm package instance in k8s",
+ "type": "string",
+ "required": false,
+ "default": "vfw"
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-instance-release-name",
+ "dictionary-source": "default",
+ "dependencies": []
+ },
+ {
"name": "k8s-rb-definition-name",
"property": {
"description": "RB Name identifier of Helm chart(s) in k8s plugin",
@@ -230,5 +262,29 @@
"dictionary-name": "k8s-rb-config-template-source",
"dictionary-source": "default",
"dependencies": []
+ },
+ {
+ "name": "k8s-rb-config-name",
+ "property": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string",
+ "required": false
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-config-name",
+ "dictionary-source": "default",
+ "dependencies": []
+ },
+ {
+ "name": "k8s-rb-config-value-source",
+ "property": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string",
+ "required": false
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-config-value-source",
+ "dictionary-source": "default",
+ "dependencies": []
}
]
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/vfw-template.vtl b/heat/vFW_CNF_CDS/templates/cba/Templates/vfw-template.vtl
index 55f9451c..4702f15c 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/vfw-template.vtl
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/vfw-template.vtl
@@ -98,7 +98,7 @@
"output-key-mapping": [
{
"resource-name": "vfw_name_0",
- "resource-value": "${vf_module_name}"
+ "resource-value": "${k8s-rb-instance-release-name}"
}
]
}
@@ -106,6 +106,10 @@
}
],
"resource-accumulator-resolved-data": [
+ {
+ "param-name": "vnf_name",
+ "param-value": "${vnf_name}"
+ },
##RB name
{
"param-name": "vf-module-model-invariant-uuid",
@@ -116,9 +120,31 @@
"param-name": "vf-module-model-version",
"param-value": "${vf-module-model-version}"
},
+##Release name
+ {
+ "param-name": "k8s-rb-instance-release-name",
+ "param-value": "${k8s-rb-instance-release-name}"
+ },
+##Profile name
{
"param-name": "k8s-rb-profile-name",
"param-value": "${k8s-rb-profile-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-template-name",
+ "param-value": "${k8s-rb-config-template-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-template-source",
+ "param-value": "${k8s-rb-config-template-source}"
+ },
+ {
+ "param-name": "k8s-rb-config-name",
+ "param-value": "${k8s-rb-config-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-value-source",
+ "param-value": "${k8s-rb-config-value-source}"
}
]
}
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/vnf-mapping.json b/heat/vFW_CNF_CDS/templates/cba/Templates/vnf-mapping.json
index c6411d71..b764a136 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/vnf-mapping.json
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/vnf-mapping.json
@@ -170,5 +170,18 @@
"dictionary-name": "k8s-rb-profile-namespace",
"dictionary-source": "default",
"dependencies": []
+ },
+ {
+ "name": "k8s-rb-profile-k8s-version",
+ "property": {
+ "description": "K8s cluster version to create helm chart for specified RB profile",
+ "type": "string",
+ "required": false,
+ "default": "1.18.9"
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-profile-k8s-version",
+ "dictionary-source": "default",
+ "dependencies": []
}
]
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/vnf-template.vtl b/heat/vFW_CNF_CDS/templates/cba/Templates/vnf-template.vtl
index 9e23665f..9f6e96ae 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/vnf-template.vtl
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/vnf-template.vtl
@@ -254,6 +254,14 @@
{
"param-name": "demo_artifacts_version",
"param-value": "${demo_artifacts_version}"
+ },
+ {
+ "param-name": "k8s-rb-profile-namespace",
+ "param-value": "${k8s-rb-profile-namespace}"
+ },
+ {
+ "param-name": "k8s-rb-profile-k8s-version",
+ "param-value": "${k8s-rb-profile-k8s-version}"
}
]
}
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/vpkg-mapping.json b/heat/vFW_CNF_CDS/templates/cba/Templates/vpkg-mapping.json
index 5156be32..9008c88f 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/vpkg-mapping.json
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/vpkg-mapping.json
@@ -146,7 +146,26 @@
"input-param": false,
"dictionary-name": "k8s-rb-profile-namespace",
"dictionary-source": "sdnc",
- "dependencies": []
+ "dependencies": [
+ "service-instance-id",
+ "vnf-id"
+ ]
+ },
+ {
+ "name": "k8s-rb-profile-k8s-version",
+ "property": {
+ "description": "K8s cluster version to create helm chart for specified RB profile",
+ "type": "string",
+ "required": false,
+ "default": "1.18.9"
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-profile-k8s-version",
+ "dictionary-source": "sdnc",
+ "dependencies": [
+ "service-instance-id",
+ "vnf-id"
+ ]
},
{
"name": "k8s-rb-profile-name",
@@ -162,6 +181,19 @@
"dependencies": []
},
{
+ "name": "k8s-rb-instance-release-name",
+ "property": {
+ "description": "Name of the release for the helm package instance in k8s",
+ "type": "string",
+ "required": false,
+ "default": "vpkg"
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-instance-release-name",
+ "dictionary-source": "default",
+ "dependencies": []
+ },
+ {
"name": "k8s-rb-definition-name",
"property": {
"description": "RB Name identifier of Helm chart(s) in k8s plugin",
@@ -230,5 +262,29 @@
"dictionary-name": "k8s-rb-config-template-source",
"dictionary-source": "default",
"dependencies": []
+ },
+ {
+ "name": "k8s-rb-config-name",
+ "property": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string",
+ "required": false
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-config-name",
+ "dictionary-source": "default",
+ "dependencies": []
+ },
+ {
+ "name": "k8s-rb-config-value-source",
+ "property": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string",
+ "required": false
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-config-value-source",
+ "dictionary-source": "default",
+ "dependencies": []
}
]
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/vpkg-template.vtl b/heat/vFW_CNF_CDS/templates/cba/Templates/vpkg-template.vtl
index 2a6b7985..da7b2718 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/vpkg-template.vtl
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/vpkg-template.vtl
@@ -98,7 +98,7 @@
"output-key-mapping": [
{
"resource-name": "vpg_name_0",
- "resource-value": "${vf_module_name}"
+ "resource-value": "${k8s-rb-instance-release-name}"
}
]
}
@@ -106,6 +106,10 @@
}
],
"resource-accumulator-resolved-data": [
+ {
+ "param-name": "vnf_name",
+ "param-value": "${vnf_name}"
+ },
##RB name
{
"param-name": "vf-module-model-invariant-uuid",
@@ -116,9 +120,31 @@
"param-name": "vf-module-model-version",
"param-value": "${vf-module-model-version}"
},
+##Release name
+ {
+ "param-name": "k8s-rb-instance-release-name",
+ "param-value": "${k8s-rb-instance-release-name}"
+ },
+##Profile name
{
"param-name": "k8s-rb-profile-name",
"param-value": "${k8s-rb-profile-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-template-name",
+ "param-value": "${k8s-rb-config-template-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-template-source",
+ "param-value": "${k8s-rb-config-template-source}"
+ },
+ {
+ "param-name": "k8s-rb-config-name",
+ "param-value": "${k8s-rb-config-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-value-source",
+ "param-value": "${k8s-rb-config-value-source}"
}
]
}
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/vsn-mapping.json b/heat/vFW_CNF_CDS/templates/cba/Templates/vsn-mapping.json
index d8bb571d..ead5e29c 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/vsn-mapping.json
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/vsn-mapping.json
@@ -146,7 +146,26 @@
"input-param": false,
"dictionary-name": "k8s-rb-profile-namespace",
"dictionary-source": "sdnc",
- "dependencies": []
+ "dependencies": [
+ "service-instance-id",
+ "vnf-id"
+ ]
+ },
+ {
+ "name": "k8s-rb-profile-k8s-version",
+ "property": {
+ "description": "K8s cluster version to create helm chart for specified RB profile",
+ "type": "string",
+ "required": false,
+ "default": "1.18.9"
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-profile-k8s-version",
+ "dictionary-source": "sdnc",
+ "dependencies": [
+ "service-instance-id",
+ "vnf-id"
+ ]
},
{
"name": "k8s-rb-profile-name",
@@ -162,6 +181,19 @@
"dependencies": []
},
{
+ "name": "k8s-rb-instance-release-name",
+ "property": {
+ "description": "Name of the release for the helm package instance in k8s",
+ "type": "string",
+ "required": false,
+ "default": "vsn"
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-instance-release-name",
+ "dictionary-source": "default",
+ "dependencies": []
+ },
+ {
"name": "k8s-rb-definition-name",
"property": {
"description": "RB Name identifier of Helm chart(s) in k8s plugin",
@@ -230,5 +262,29 @@
"dictionary-name": "k8s-rb-config-template-source",
"dictionary-source": "default",
"dependencies": []
+ },
+ {
+ "name": "k8s-rb-config-name",
+ "property": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string",
+ "required": false
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-config-name",
+ "dictionary-source": "default",
+ "dependencies": []
+ },
+ {
+ "name": "k8s-rb-config-value-source",
+ "property": {
+ "description": "The source of configuration values for config-deploy operation",
+ "type": "string",
+ "required": false
+ },
+ "input-param": false,
+ "dictionary-name": "k8s-rb-config-value-source",
+ "dictionary-source": "default",
+ "dependencies": []
}
]
diff --git a/heat/vFW_CNF_CDS/templates/cba/Templates/vsn-template.vtl b/heat/vFW_CNF_CDS/templates/cba/Templates/vsn-template.vtl
index 4768ab80..61ba0935 100644
--- a/heat/vFW_CNF_CDS/templates/cba/Templates/vsn-template.vtl
+++ b/heat/vFW_CNF_CDS/templates/cba/Templates/vsn-template.vtl
@@ -98,7 +98,7 @@
"output-key-mapping": [
{
"resource-name": "vsn_name_0",
- "resource-value": "${vf_module_name}"
+ "resource-value": "${k8s-rb-instance-release-name}"
}
]
}
@@ -106,6 +106,10 @@
}
],
"resource-accumulator-resolved-data": [
+ {
+ "param-name": "vnf_name",
+ "param-value": "${vnf_name}"
+ },
##RB name
{
"param-name": "vf-module-model-invariant-uuid",
@@ -116,9 +120,31 @@
"param-name": "vf-module-model-version",
"param-value": "${vf-module-model-version}"
},
+##Release name
+ {
+ "param-name": "k8s-rb-instance-release-name",
+ "param-value": "${k8s-rb-instance-release-name}"
+ },
+##Profile name
{
"param-name": "k8s-rb-profile-name",
"param-value": "${k8s-rb-profile-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-template-name",
+ "param-value": "${k8s-rb-config-template-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-template-source",
+ "param-value": "${k8s-rb-config-template-source}"
+ },
+ {
+ "param-name": "k8s-rb-config-name",
+ "param-value": "${k8s-rb-config-name}"
+ },
+ {
+ "param-name": "k8s-rb-config-value-source",
+ "param-value": "${k8s-rb-config-value-source}"
}
]
}
diff --git a/heat/vFW_CNF_CDS/templates/cba/pom.xml b/heat/vFW_CNF_CDS/templates/cba/pom.xml
index 26bf93e1..fdb149ee 100644
--- a/heat/vFW_CNF_CDS/templates/cba/pom.xml
+++ b/heat/vFW_CNF_CDS/templates/cba/pom.xml
@@ -17,6 +17,20 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.ccsdk.cds.blueprintsprocessor.modules</groupId>
+ <artifactId>processor-core</artifactId>
+ <version>1.1.1-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.ccsdk.cds.blueprintsprocessor.functions</groupId>
+ <artifactId>k8s-connection-plugin</artifactId>
+ <version>1.1.1-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
<parent>
<groupId>org.onap.ccsdk.cds.blueprintsprocessor</groupId>