aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukasz Rajewski <lukasz.rajewski@orange.com>2021-02-10 22:07:29 +0100
committerKAPIL SINGAL <ks220y@att.com>2021-02-10 21:44:13 +0000
commitc99c15f6f91fb296f2b44c6406795ac0583d632d (patch)
tree3966b649680394a7b6ee6be6586b3390c6a75308
parentf75967d281b724e014d39a1c318e03e89f4e3b46 (diff)
K8sPlugin Instance API Handlers
Issue-ID: CCSDK-3146 Signed-off-by: Lukasz Rajewski <lukasz.rajewski@orange.com> Change-Id: I404957d5e782b8943bbe0d8bc501bbe88d524483
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sAbstractRestClientService.kt38
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sPluginApi.kt32
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/K8sDefinitionRestClient.kt (renamed from ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sDefinitionRestClient.kt)13
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/K8sUploadFileRestClientService.kt (renamed from ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sUploadFileRestClientService.kt)9
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfile.kt (renamed from ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/profile/upload/K8sProfile.kt)2
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfileUploadComponent.kt (renamed from ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/profile/upload/K8sProfileUploadComponent.kt)8
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sPluginInstanceApi.kt136
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstance.kt77
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceGvk.kt48
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceRequest.kt56
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceRestClient.kt36
-rw-r--r--ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceStatus.kt73
12 files changed, 487 insertions, 41 deletions
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sAbstractRestClientService.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sAbstractRestClientService.kt
index 69f647387..14f14f61b 100644
--- a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sAbstractRestClientService.kt
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sAbstractRestClientService.kt
@@ -1,7 +1,7 @@
/*
* Copyright © 2017-2018 AT&T Intellectual Property.
* Modifications Copyright © 2019 IBM.
- * Modifications Copyright © 2020 Orange.
+ * Modifications Copyright © 2021 Orange.
* Modifications Copyright © 2020 Deutsche Telekom AG.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -29,17 +29,25 @@ import org.springframework.http.MediaType.APPLICATION_JSON_VALUE
import java.nio.charset.Charset
import java.util.Base64
-abstract class K8sAbstractRestClientService(val username: String, val password: String) : BlueprintWebClientService {
+abstract class K8sAbstractRestClientService(
+ private val k8sConfiguration: K8sConnectionPluginConfiguration
+) : BlueprintWebClientService {
- private val restClientProperties: BasicAuthRestClientProperties = getBasicAuthRestClientProperties()
+ protected val baseUrl: String = k8sConfiguration.getProperties().url
+ private var restClientProperties: BasicAuthRestClientProperties? = null
private fun getBasicAuthRestClientProperties(): BasicAuthRestClientProperties {
- val basicAuthRestClientProperties = BasicAuthRestClientProperties()
- basicAuthRestClientProperties.username = username
- basicAuthRestClientProperties.password = password
- basicAuthRestClientProperties.url = apiUrl()
- basicAuthRestClientProperties.additionalHeaders = getHeaders()
- return basicAuthRestClientProperties
+ return if (restClientProperties != null)
+ restClientProperties!!
+ else {
+ val basicAuthRestClientProperties = BasicAuthRestClientProperties()
+ basicAuthRestClientProperties.username = k8sConfiguration.getProperties().username
+ basicAuthRestClientProperties.password = k8sConfiguration.getProperties().password
+ basicAuthRestClientProperties.url = apiUrl()
+ basicAuthRestClientProperties.additionalHeaders = getHeaders()
+ restClientProperties = basicAuthRestClientProperties
+ return basicAuthRestClientProperties
+ }
}
private fun getHeaders(): HashMap<String, String> {
@@ -58,8 +66,8 @@ abstract class K8sAbstractRestClientService(val username: String, val password:
override fun defaultHeaders(): Map<String, String> {
val encodedCredentials = setBasicAuth(
- restClientProperties.username,
- restClientProperties.password
+ getBasicAuthRestClientProperties().username,
+ getBasicAuthRestClientProperties().password
)
return mapOf(
CONTENT_TYPE to APPLICATION_JSON_VALUE,
@@ -69,18 +77,18 @@ abstract class K8sAbstractRestClientService(val username: String, val password:
}
override fun host(uri: String): String {
- return restClientProperties.url + uri
+ return getBasicAuthRestClientProperties().url + uri
}
override fun convertToBasicHeaders(headers: Map<String, String>): Array<BasicHeader> {
val customHeaders: MutableMap<String, String> = headers.toMutableMap()
// inject additionalHeaders
- customHeaders.putAll(verifyAdditionalHeaders(restClientProperties))
+ customHeaders.putAll(verifyAdditionalHeaders(getBasicAuthRestClientProperties()))
if (!headers.containsKey(AUTHORIZATION)) {
val encodedCredentials = setBasicAuth(
- restClientProperties.username,
- restClientProperties.password
+ getBasicAuthRestClientProperties().username,
+ getBasicAuthRestClientProperties().password
)
customHeaders[AUTHORIZATION] = "Basic $encodedCredentials"
}
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sPluginApi.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sPluginApi.kt
index 2c58645c8..211bc5abe 100644
--- a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sPluginApi.kt
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sPluginApi.kt
@@ -20,7 +20,9 @@
package org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s
import com.fasterxml.jackson.databind.ObjectMapper
-import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.profile.upload.K8sProfile
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.K8sDefinitionRestClient
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.K8sUploadFileRestClientService
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.profile.K8sProfile
import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BlueprintWebClientService
import org.onap.ccsdk.cds.controllerblueprints.core.BlueprintProcessorException
import org.slf4j.LoggerFactory
@@ -29,15 +31,17 @@ import org.springframework.http.HttpMethod.POST
import java.nio.file.Path
class K8sPluginApi(
- private val username: String,
- private val password: String,
- private val baseUrl: String
+ private val k8sConfiguration: K8sConnectionPluginConfiguration
) {
private val log = LoggerFactory.getLogger(K8sPluginApi::class.java)!!
private val objectMapper = ObjectMapper()
fun hasDefinition(definition: String, definitionVersion: String): Boolean {
- val rbDefinitionService = K8sDefinitionRestClient(username, password, baseUrl, definition, definitionVersion)
+ val rbDefinitionService = K8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
try {
val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
GET.name,
@@ -53,7 +57,11 @@ class K8sPluginApi(
}
fun hasProfile(definition: String, definitionVersion: String, profileName: String): Boolean {
- val rbDefinitionService = K8sDefinitionRestClient(username, password, baseUrl, definition, definitionVersion)
+ val rbDefinitionService = K8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
try {
val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
GET.name,
@@ -69,7 +77,11 @@ class K8sPluginApi(
}
fun createProfile(definition: String, definitionVersion: String, profile: K8sProfile) {
- val rbDefinitionService = K8sDefinitionRestClient(username, password, baseUrl, definition, definitionVersion)
+ val rbDefinitionService = K8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
val profileJsonString: String = objectMapper.writeValueAsString(profile)
try {
val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
@@ -87,7 +99,11 @@ class K8sPluginApi(
}
fun uploadProfileContent(definition: String, definitionVersion: String, profile: K8sProfile, filePath: Path) {
- val fileUploadService = K8sUploadFileRestClientService(username, password, baseUrl, definition, definitionVersion)
+ val fileUploadService = K8sUploadFileRestClientService(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
try {
val result: BlueprintWebClientService.WebClientResponse<String> = fileUploadService.uploadBinaryFile(
"/profile/${profile.profileName}/content",
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sDefinitionRestClient.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/K8sDefinitionRestClient.kt
index 0daa276ec..0c95fe3b6 100644
--- a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sDefinitionRestClient.kt
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/K8sDefinitionRestClient.kt
@@ -1,7 +1,7 @@
/*
* Copyright © 2017-2018 AT&T Intellectual Property.
* Modifications Copyright © 2019 IBM.
- * Modifications Copyright © 2020 Orange.
+ * Modifications Copyright © 2021 Orange.
* Modifications Copyright © 2020 Deutsche Telekom AG.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,15 +17,16 @@
* limitations under the License.
*/
-package org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s
+package org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition
+
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.K8sAbstractRestClientService
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.K8sConnectionPluginConfiguration
open class K8sDefinitionRestClient(
- username: String,
- password: String,
- private val baseUrl: String,
+ k8sConfiguration: K8sConnectionPluginConfiguration,
private val definition: String,
private val definitionVersion: String
-) : K8sAbstractRestClientService(username, password) {
+) : K8sAbstractRestClientService(k8sConfiguration) {
override fun apiUrl(): String {
return "$baseUrl/v1/rb/definition/$definition/$definitionVersion"
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sUploadFileRestClientService.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/K8sUploadFileRestClientService.kt
index ac545cfe5..e44c4eb04 100644
--- a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sUploadFileRestClientService.kt
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/K8sUploadFileRestClientService.kt
@@ -17,7 +17,7 @@
* limitations under the License.
*/
-package org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s
+package org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition
import org.apache.commons.io.IOUtils
import org.apache.http.client.ClientProtocolException
@@ -25,6 +25,7 @@ import org.apache.http.client.entity.EntityBuilder
import org.apache.http.client.methods.HttpPost
import org.apache.http.client.methods.HttpUriRequest
import org.apache.http.message.BasicHeader
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.K8sConnectionPluginConfiguration
import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BlueprintWebClientService
import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.RestLoggerService
import java.io.IOException
@@ -33,12 +34,10 @@ import java.nio.file.Files
import java.nio.file.Path
class K8sUploadFileRestClientService(
- username: String,
- password: String,
- baseUrl: String,
+ k8sConfiguration: K8sConnectionPluginConfiguration,
definition: String,
definitionVersion: String
-) : K8sDefinitionRestClient(username, password, baseUrl, definition, definitionVersion) {
+) : K8sDefinitionRestClient(k8sConfiguration, definition, definitionVersion) {
@Throws(IOException::class, ClientProtocolException::class)
private fun performHttpCall(httpUriRequest: HttpUriRequest): BlueprintWebClientService.WebClientResponse<String> {
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/profile/upload/K8sProfile.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfile.kt
index c9ddf4846..dcaf48710 100644
--- a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/profile/upload/K8sProfile.kt
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfile.kt
@@ -17,7 +17,7 @@
* limitations under the License.
*/
-package org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.profile.upload
+package org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.profile
import com.fasterxml.jackson.annotation.JsonProperty
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/profile/upload/K8sProfileUploadComponent.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfileUploadComponent.kt
index fb42fa7c5..47fe6d957 100644
--- a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/profile/upload/K8sProfileUploadComponent.kt
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfileUploadComponent.kt
@@ -17,7 +17,7 @@
* limitations under the License.
*/
-package org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.profile.upload
+package org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.profile
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.node.ArrayNode
@@ -125,11 +125,7 @@ open class K8sProfileUploadComponent(
val k8sProfileUploadConfiguration = K8sConnectionPluginConfiguration(bluePrintPropertiesService)
// Creating API connector
- var api = K8sPluginApi(
- k8sProfileUploadConfiguration.getProperties().username,
- k8sProfileUploadConfiguration.getProperties().password,
- k8sProfileUploadConfiguration.getProperties().url
- )
+ var api = K8sPluginApi(k8sProfileUploadConfiguration)
if ((profileName == null) || (definitionName == null) || (definitionVersion == null)) {
log.warn("Prefix $prefix does not have required data for us to continue.")
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sPluginInstanceApi.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sPluginInstanceApi.kt
new file mode 100644
index 000000000..3faaac00d
--- /dev/null
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sPluginInstanceApi.kt
@@ -0,0 +1,136 @@
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2019 IBM.
+ * Modifications Copyright © 2021 Orange.
+ * Modifications Copyright © 2020 Deutsche Telekom AG.
+ *
+ * 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.functions.k8s.instance
+
+import com.fasterxml.jackson.databind.JsonNode
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.K8sConnectionPluginConfiguration
+import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BlueprintWebClientService
+import org.onap.ccsdk.cds.controllerblueprints.core.BlueprintProcessorException
+import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
+import org.slf4j.LoggerFactory
+import org.springframework.http.HttpMethod.GET
+
+class K8sPluginInstanceApi(
+ private val k8sConfiguration: K8sConnectionPluginConfiguration
+) {
+ private val log = LoggerFactory.getLogger(K8sPluginInstanceApi::class.java)!!
+
+ fun getAllInstances(): List<K8sRbInstance>? {
+ val rbInstanceService = K8sRbInstanceRestClient(k8sConfiguration)
+ try {
+ val result: BlueprintWebClientService.WebClientResponse<String> = rbInstanceService.exchangeResource(
+ GET.name,
+ "",
+ ""
+ )
+ log.debug(result.toString())
+ return if (result.status in 200..299) {
+ val parsedObject: List<K8sRbInstance> = JacksonUtils.readValue(result.body)
+ parsedObject
+ } else if (result.status == 500 && result.body.contains("Did not find any objects with tag"))
+ null
+ else
+ throw BlueprintProcessorException(result.body)
+ } catch (e: Exception) {
+ log.error("Caught exception trying to get k8s rb instance")
+ throw BlueprintProcessorException("${e.message}")
+ }
+ }
+
+ fun getInstanceById(instanceId: String): K8sRbInstance? {
+ val rbInstanceService = K8sRbInstanceRestClient(k8sConfiguration, instanceId)
+ try {
+ val result: BlueprintWebClientService.WebClientResponse<String> = rbInstanceService.exchangeResource(
+ GET.name,
+ "",
+ ""
+ )
+ log.debug(result.toString())
+ return if (result.status in 200..299) {
+ val instance: JsonNode = JacksonUtils.jsonNode(result.body)
+ val parsedObject: K8sRbInstance? = JacksonUtils.readValue(result.body, K8sRbInstance::class.java)
+ parsedObject
+ } else if (result.status == 500 && result.body.contains("Error finding master table"))
+ null
+ else
+ throw BlueprintProcessorException(result.body)
+ } catch (e: Exception) {
+ log.error("Caught exception trying to get k8s rb instance")
+ throw BlueprintProcessorException("${e.message}")
+ }
+ }
+
+ fun getInstanceByRequestProperties(
+ rbDefinitionName: String,
+ rbDefinitionVersion: String,
+ rbProfileName: String
+ ): K8sRbInstance? {
+ val rbInstanceService = K8sRbInstanceRestClient(k8sConfiguration)
+ try {
+ val result: BlueprintWebClientService.WebClientResponse<String> = rbInstanceService.exchangeResource(
+ GET.name,
+ "",
+ ""
+ )
+ log.debug(result.toString())
+ return if (result.status in 200..299) {
+ val parsedObject: List<K8sRbInstance> = JacksonUtils.readValue(result.body)
+ var instance: K8sRbInstance? = null
+ parsedObject.forEach {
+ if (it.request?.rbName == rbDefinitionName && it.request?.rbVersion == rbDefinitionVersion &&
+ it.request?.profileName == rbProfileName
+ )
+ instance = it
+ }
+ instance
+ } else if (result.status == 500 && result.body.contains("Did not find any objects with tag"))
+ null
+ else
+ throw BlueprintProcessorException(result.body)
+ } catch (e: Exception) {
+ log.error("Caught exception trying to get k8s rb instance")
+ throw BlueprintProcessorException("${e.message}")
+ }
+ }
+
+ fun getInstanceStatus(instanceId: String): K8sRbInstanceStatus? {
+ val rbInstanceService = K8sRbInstanceRestClient(k8sConfiguration, instanceId)
+ try {
+ val result: BlueprintWebClientService.WebClientResponse<String> = rbInstanceService.exchangeResource(
+ GET.name,
+ "/status",
+ ""
+ )
+ log.debug(result.toString())
+ return if (result.status in 200..299) {
+ val parsedObject: K8sRbInstanceStatus? = JacksonUtils.readValue(
+ result.body, K8sRbInstanceStatus::class.java
+ )
+ parsedObject
+ } else if (result.status == 500 && result.body.contains("Error finding master table"))
+ null
+ else
+ throw BlueprintProcessorException(result.body)
+ } catch (e: Exception) {
+ log.error("Caught exception trying to get k8s rb instance")
+ throw BlueprintProcessorException("${e.message}")
+ }
+ }
+}
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstance.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstance.kt
new file mode 100644
index 000000000..d3acde015
--- /dev/null
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstance.kt
@@ -0,0 +1,77 @@
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2019 IBM.
+ * Modifications Copyright © 2021 Orange.
+ * Modifications Copyright © 2020 Deutsche Telekom AG.
+ *
+ * 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.functions.k8s.instance
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+class K8sRbInstance {
+
+ @get:JsonProperty("id")
+ var id: String? = null
+
+ @get:JsonProperty("namespace")
+ var namespace: String? = "default"
+
+ @get:JsonProperty("request")
+ var request: K8sRbInstanceRequest? = null
+
+ @get:JsonProperty("release-name")
+ var releaseName: String? = null
+
+ @get:JsonProperty("resources")
+ var resources: List<K8sRbInstanceResource>? = null
+
+ override fun toString(): String {
+ return "$id:$releaseName:$namespace"
+ }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ return true
+ }
+
+ override fun hashCode(): Int {
+ return javaClass.hashCode()
+ }
+}
+
+class K8sRbInstanceResource {
+
+ @get:JsonProperty("Name")
+ var name: String? = null
+
+ @get:JsonProperty("GVK")
+ var gvk: K8sRbInstanceGvk? = null
+
+ override fun toString(): String {
+ return "$name"
+ }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ return true
+ }
+
+ override fun hashCode(): Int {
+ return javaClass.hashCode()
+ }
+}
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceGvk.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceGvk.kt
new file mode 100644
index 000000000..8bfe5f241
--- /dev/null
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceGvk.kt
@@ -0,0 +1,48 @@
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2019 IBM.
+ * Modifications Copyright © 2020 Orange.
+ * Modifications Copyright © 2020 Deutsche Telekom AG.
+ *
+ * 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.functions.k8s.instance
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+class K8sRbInstanceGvk {
+
+ @get:JsonProperty("Group")
+ var group: String? = null
+
+ @get:JsonProperty("Kind")
+ var kind: String? = null
+
+ @get:JsonProperty("Version")
+ var version: String? = null
+
+ override fun toString(): String {
+ return "$group:$kind:$version"
+ }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ return true
+ }
+
+ override fun hashCode(): Int {
+ return javaClass.hashCode()
+ }
+}
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceRequest.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceRequest.kt
new file mode 100644
index 000000000..388d5e33b
--- /dev/null
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceRequest.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2019 IBM.
+ * Modifications Copyright © 2020 Orange.
+ * Modifications Copyright © 2020 Deutsche Telekom AG.
+ *
+ * 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.functions.k8s.instance
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+class K8sRbInstanceRequest {
+
+ @get:JsonProperty("labels")
+ var labels: Map<String, String>? = null
+
+ @get:JsonProperty("cloud-region")
+ var cloudRegion: String? = null
+
+ @get:JsonProperty("override-values")
+ var overrideValues: Map<String, String>? = null
+
+ @get:JsonProperty("release-name")
+ var releaseName: String? = null
+
+ @get:JsonProperty("rb-name")
+ var rbName: String? = null
+
+ @get:JsonProperty("rb-version")
+ var rbVersion: String? = null
+
+ @get:JsonProperty("profile-name")
+ var profileName: String? = null
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ return true
+ }
+
+ override fun hashCode(): Int {
+ return javaClass.hashCode()
+ }
+}
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceRestClient.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceRestClient.kt
new file mode 100644
index 000000000..4c4da6200
--- /dev/null
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceRestClient.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2019 IBM.
+ * Modifications Copyright © 2020 Orange.
+ * Modifications Copyright © 2020 Deutsche Telekom AG.
+ *
+ * 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.functions.k8s.instance
+
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.K8sAbstractRestClientService
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.K8sConnectionPluginConfiguration
+
+open class K8sRbInstanceRestClient(
+ k8sConfiguration: K8sConnectionPluginConfiguration,
+ private val instanceId: String = ""
+) : K8sAbstractRestClientService(k8sConfiguration) {
+
+ override fun apiUrl(): String {
+ return if (instanceId != "")
+ "$baseUrl/v1/instance/$instanceId"
+ else
+ "$baseUrl/v1/instance"
+ }
+}
diff --git a/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceStatus.kt b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceStatus.kt
new file mode 100644
index 000000000..e61868984
--- /dev/null
+++ b/ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceStatus.kt
@@ -0,0 +1,73 @@
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2019 IBM.
+ * Modifications Copyright © 2020 Orange.
+ * Modifications Copyright © 2020 Deutsche Telekom AG.
+ *
+ * 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.functions.k8s.instance
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+class K8sRbInstanceStatus {
+
+ @get:JsonProperty("request")
+ var request: K8sRbInstanceRequest? = null
+
+ @get:JsonProperty("resourceCount")
+ var resourceCount: Int = 0
+
+ @get:JsonProperty("ready")
+ var ready: Boolean = false
+
+ @get:JsonProperty("resourcesStatus")
+ var resourcesStatus: List<K8sRbInstanceResourceStatus>? = null
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ return true
+ }
+
+ override fun hashCode(): Int {
+ return javaClass.hashCode()
+ }
+}
+
+class K8sRbInstanceResourceStatus {
+
+ @get:JsonProperty("name")
+ var name: String? = null
+
+ @get:JsonProperty("GVK")
+ var gvk: K8sRbInstanceGvk? = null
+
+ @get:JsonProperty("status")
+ var status: Map<String, Object>? = null
+
+ override fun toString(): String {
+ return "$name"
+ }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ return true
+ }
+
+ override fun hashCode(): Int {
+ return javaClass.hashCode()
+ }
+}