diff options
author | Lukasz Rajewski <lukasz.rajewski@orange.com> | 2021-02-10 22:07:29 +0100 |
---|---|---|
committer | KAPIL SINGAL <ks220y@att.com> | 2021-02-10 21:44:13 +0000 |
commit | c99c15f6f91fb296f2b44c6406795ac0583d632d (patch) | |
tree | 3966b649680394a7b6ee6be6586b3390c6a75308 /ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main | |
parent | f75967d281b724e014d39a1c318e03e89f4e3b46 (diff) |
K8sPlugin Instance API Handlers
Issue-ID: CCSDK-3146
Signed-off-by: Lukasz Rajewski <lukasz.rajewski@orange.com>
Change-Id: I404957d5e782b8943bbe0d8bc501bbe88d524483
Diffstat (limited to 'ms/blueprintsprocessor/functions/k8s-connection-plugin/src/main')
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() + } +} |