diff options
author | Lukasz Rajewski <lukasz.rajewski@orange.com> | 2021-03-24 19:15:31 +0100 |
---|---|---|
committer | Lukasz Rajewski <lukasz.rajewski@orange.com> | 2021-03-28 22:21:25 +0200 |
commit | 06bf0ac45889ffe00fc6e27e68ffa15c2f519e6f (patch) | |
tree | ecf4c17542c62ee6c0433edcbccac5707370a8f1 /heat/vFW_CNF_CDS/templates/cba | |
parent | d2c5f361fa3a246dfa23c2c582ec498322a97282 (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>
Diffstat (limited to 'heat/vFW_CNF_CDS/templates/cba')
26 files changed, 726 insertions, 43 deletions
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> |