diff options
4 files changed, 53 insertions, 1 deletions
diff --git a/components/model-catalog/definition-type/starter-type/node_type/component-k8s-profile-upload.json b/components/model-catalog/definition-type/starter-type/node_type/component-k8s-profile-upload.json index d7b4bb990..f98fd4eb6 100644 --- a/components/model-catalog/definition-type/starter-type/node_type/component-k8s-profile-upload.json +++ b/components/model-catalog/definition-type/starter-type/node_type/component-k8s-profile-upload.json @@ -37,6 +37,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, diff --git a/components/model-catalog/resource-dictionary/starter-dictionary/k8s-rb-profile-k8s-version.json b/components/model-catalog/resource-dictionary/starter-dictionary/k8s-rb-profile-k8s-version.json new file mode 100644 index 000000000..2b8eef5cd --- /dev/null +++ b/components/model-catalog/resource-dictionary/starter-dictionary/k8s-rb-profile-k8s-version.json @@ -0,0 +1,39 @@ +{ + "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" + ] + } + } + } +} diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfile.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfile.kt index dcaf48710..69c835543 100644 --- a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfile.kt +++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfile.kt @@ -32,6 +32,9 @@ class K8sProfile { @get:JsonProperty("profile-name") var profileName: String? = null + @get:JsonProperty("kubernetes-version") + var kubernetesVersion: String? = null + @get:JsonProperty("namespace") var namespace: String? = "default" diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfileUploadComponent.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfileUploadComponent.kt index 201895cc6..5e853d05f 100644 --- a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfileUploadComponent.kt +++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfileUploadComponent.kt @@ -65,6 +65,7 @@ open class K8sProfileUploadComponent( const val INPUT_K8S_DEFINITION_NAME = "k8s-rb-definition-name" const val INPUT_K8S_DEFINITION_VERSION = "k8s-rb-definition-version" const val INPUT_K8S_PROFILE_NAMESPACE = "k8s-rb-profile-namespace" + const val INPUT_K8S_PROFILE_K8S_VERSION = "k8s-rb-profile-k8s-version" const val INPUT_K8S_PROFILE_SOURCE = "k8s-rb-profile-source" const val INPUT_RESOURCE_ASSIGNMENT_MAP = "resource-assignment-map" const val INPUT_ARTIFACT_PREFIX_NAMES = "artifact-prefix-names" @@ -85,6 +86,7 @@ open class K8sProfileUploadComponent( INPUT_K8S_DEFINITION_NAME, INPUT_K8S_DEFINITION_VERSION, INPUT_K8S_PROFILE_NAMESPACE, + INPUT_K8S_PROFILE_K8S_VERSION, INPUT_K8S_PROFILE_SOURCE, INPUT_ARTIFACT_PREFIX_NAMES ) @@ -130,7 +132,7 @@ open class K8sProfileUploadComponent( if ((profileName == null) || (definitionName == null) || (definitionVersion == null)) { log.warn("Prefix $prefix does not have required data for us to continue.") } else if (!api.hasDefinition(definitionName, definitionVersion)) { - log.warn("K8s RB Definition ($definitionName/$definitionVersion) not found ") + throw BlueprintProcessorException("K8s RB Definition ($definitionName/$definitionVersion) not found ") } else if (profileName == "") { log.warn("K8s rb profile name is empty! Either define profile name to use or choose default") } else if (api.hasProfile(definitionName, definitionVersion, profileName)) { @@ -139,6 +141,7 @@ open class K8sProfileUploadComponent( log.info("Uploading K8s Profile..") outputPrefixStatuses.put(prefix, OUTPUT_ERROR) val profileNamespace: String? = prefixInputParamsMap[INPUT_K8S_PROFILE_NAMESPACE]?.returnNullIfMissing()?.asText() + val profileK8sVersion: String? = prefixInputParamsMap[INPUT_K8S_PROFILE_K8S_VERSION]?.returnNullIfMissing()?.asText() var profileSource: String? = prefixInputParamsMap[INPUT_K8S_PROFILE_SOURCE]?.returnNullIfMissing()?.asText() if (profileNamespace == null) throw BlueprintProcessorException("Profile $profileName namespace is missing") @@ -158,6 +161,8 @@ open class K8sProfileUploadComponent( profile.rbName = definitionName profile.rbVersion = definitionVersion profile.namespace = profileNamespace + if (profileK8sVersion != null) + profile.kubernetesVersion = profileK8sVersion val profileFilePath: Path = prepareProfileFile(profileName, profileSource, artifact.file) api.createProfile(definitionName, definitionVersion, profile) api.uploadProfileContent(definitionName, definitionVersion, profile, profileFilePath) |