K8sPlugin Instance API Handlers 99/117699/2
authorLukasz Rajewski <lukasz.rajewski@orange.com>
Wed, 10 Feb 2021 21:07:29 +0000 (22:07 +0100)
committerKAPIL SINGAL <ks220y@att.com>
Wed, 10 Feb 2021 21:44:13 +0000 (21:44 +0000)
Issue-ID: CCSDK-3146
Signed-off-by: Lukasz Rajewski <lukasz.rajewski@orange.com>
Change-Id: I404957d5e782b8943bbe0d8bc501bbe88d524483

12 files changed:
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sAbstractRestClientService.kt
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sPluginApi.kt
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/K8sDefinitionRestClient.kt [moved from ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sDefinitionRestClient.kt with 70% similarity]
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/K8sUploadFileRestClientService.kt [moved from ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/K8sUploadFileRestClientService.kt with 89% similarity]
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfile.kt [moved from ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/profile/upload/K8sProfile.kt with 94% similarity]
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/definition/profile/K8sProfileUploadComponent.kt [moved from ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/profile/upload/K8sProfileUploadComponent.kt with 98% similarity]
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sPluginInstanceApi.kt [new file with mode: 0644]
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstance.kt [new file with mode: 0644]
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceGvk.kt [new file with mode: 0644]
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceRequest.kt [new file with mode: 0644]
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceRestClient.kt [new file with mode: 0644]
ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/k8s/instance/K8sRbInstanceStatus.kt [new file with mode: 0644]

index 69f6473..14f14f6 100644 (file)
@@ -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"
         }
index 2c58645..211bc5a 100644 (file)
@@ -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",
@@ -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");
  * 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"
@@ -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> {
@@ -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 (file)
index 0000000..3faaac0
--- /dev/null
@@ -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 (file)
index 0000000..d3acde0
--- /dev/null
@@ -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 (file)
index 0000000..8bfe5f2
--- /dev/null
@@ -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 (file)
index 0000000..388d5e3
--- /dev/null
@@ -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 (file)
index 0000000..4c4da62
--- /dev/null
@@ -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 (file)
index 0000000..e618689
--- /dev/null
@@ -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()
+    }
+}