import com.fasterxml.jackson.databind.ObjectMapper
import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.profile.K8sProfile
import com.fasterxml.jackson.module.kotlin.readValue
+import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.K8sDefinitionRestClient.Companion.getK8sDefinitionRestClient
import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.K8sConnectionPluginConfiguration
import org.onap.ccsdk.cds.blueprintsprocessor.functions.k8s.definition.template.K8sTemplate
import org.onap.ccsdk.cds.blueprintsprocessor.rest.service.BlueprintWebClientService
-import org.onap.ccsdk.cds.controllerblueprints.core.BlueprintProcessorException
+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.DELETE
import org.springframework.http.HttpMethod.GET
import org.springframework.http.HttpMethod.POST
+import org.springframework.http.HttpMethod.PUT
import java.nio.file.Path
class K8sPluginDefinitionApi(
private val objectMapper = ObjectMapper()
fun hasDefinition(definition: String, definitionVersion: String): Boolean {
- val rbDefinitionService = K8sDefinitionRestClient(
- k8sConfiguration,
- definition,
- definitionVersion
- )
try {
+ val rbDefinitionService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
GET.name,
"",
return result.status in 200..299
} catch (e: Exception) {
log.error("Caught exception trying to get k8s rb definition")
- throw BlueprintProcessorException("${e.message}")
+ throw BluePrintProcessorException("${e.message}")
}
}
fun hasProfile(definition: String, definitionVersion: String, profileName: String): Boolean {
- val rbDefinitionService = K8sDefinitionRestClient(
- k8sConfiguration,
- definition,
- definitionVersion
- )
try {
+ val rbDefinitionService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
GET.name,
"/profile/$profileName",
return result.status in 200..299
} catch (e: Exception) {
log.error("Caught exception trying to get k8s rb profile")
- throw BlueprintProcessorException("${e.message}")
+ throw BluePrintProcessorException("${e.message}")
+ }
+ }
+
+ fun getProfile(definition: String, definitionVersion: String, profileName: String): K8sProfile? {
+ try {
+ val rbDefinitionService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
+ val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
+ GET.name,
+ "/profile/$profileName",
+ ""
+ )
+ log.debug(result.toString())
+ return if (result.status in 200..299) {
+ val parsedObject: K8sProfile? = JacksonUtils.readValue(result.body, K8sProfile::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 profile")
+ throw BluePrintProcessorException("${e.message}")
}
}
fun createProfile(definition: String, definitionVersion: String, profile: K8sProfile) {
- val rbDefinitionService = K8sDefinitionRestClient(
- k8sConfiguration,
- definition,
- definitionVersion
- )
val profileJsonString: String = objectMapper.writeValueAsString(profile)
try {
+ val rbDefinitionService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
POST.name,
"/profile",
}
} catch (e: Exception) {
log.error("Caught exception trying to create k8s rb profile ${profile.profileName}")
- throw BlueprintProcessorException("${e.message}")
+ throw BluePrintProcessorException("${e.message}")
+ }
+ }
+
+ fun updateProfile(profile: K8sProfile) {
+ val profileJsonString: String = objectMapper.writeValueAsString(profile)
+ try {
+ val rbDefinitionService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ profile.rbName!!,
+ profile.rbVersion!!
+ )
+ val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
+ PUT.name,
+ "/profile/${profile.profileName}",
+ profileJsonString
+ )
+ if (result.status !in 200..299) {
+ throw Exception(result.body)
+ }
+ } catch (e: Exception) {
+ log.error("Caught exception trying to create k8s rb profile ${profile.profileName}")
+ throw BluePrintProcessorException("${e.message}")
+ }
+ }
+
+ fun deleteProfile(definition: String, definitionVersion: String, profileName: String) {
+ try {
+ val rbDefinitionService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
+ val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
+ DELETE.name,
+ "/profile/$profileName",
+ ""
+ )
+ log.debug(result.toString())
+ if (result.status !in 200..299) {
+ throw Exception(result.body)
+ }
+ } catch (e: Exception) {
+ log.error("Caught exception during get template")
+ throw BluePrintProcessorException("${e.message}")
}
}
fun uploadProfileContent(definition: String, definitionVersion: String, profile: K8sProfile, filePath: Path) {
- val fileUploadService = K8sUploadFileRestClientService(
- k8sConfiguration,
- definition,
- definitionVersion
- )
try {
+ val fileUploadService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
val result: BlueprintWebClientService.WebClientResponse<String> = fileUploadService.uploadBinaryFile(
"/profile/${profile.profileName}/content",
filePath
log.debug("Profile uploaded properly")
} catch (e: Exception) {
log.error("Caught exception trying to upload k8s rb profile ${profile.profileName}")
- throw BlueprintProcessorException("${e.message}")
+ throw BluePrintProcessorException("${e.message}")
}
}
fun createTemplate(definition: String, definitionVersion: String, template: K8sTemplate) {
- val rbDefinitionService = K8sDefinitionRestClient(k8sConfiguration, definition, definitionVersion)
val templateJsonString: String = objectMapper.writeValueAsString(template)
try {
+ val rbDefinitionService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
POST.name,
"/config-template",
}
} catch (e: Exception) {
log.error("Caught exception during create template")
- throw BlueprintProcessorException("${e.message}")
+ throw BluePrintProcessorException("${e.message}")
}
}
fun uploadConfigTemplateContent(definition: String, definitionVersion: String, template: K8sTemplate, filePath: Path) {
- val fileUploadService = K8sUploadFileRestClientService(k8sConfiguration, definition, definitionVersion)
try {
+ val fileUploadService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
val result: BlueprintWebClientService.WebClientResponse<String> = fileUploadService.uploadBinaryFile(
"/config-template/${template.templateName}/content",
filePath
}
} catch (e: Exception) {
log.error("Caught exception trying to upload k8s rb template ${template.templateName}")
- throw BlueprintProcessorException("${e.message}")
+ throw BluePrintProcessorException("${e.message}")
}
}
fun deleteTemplate(definition: String, definitionVersion: String, templateName: String) {
- val rbDefinitionService = K8sDefinitionRestClient(k8sConfiguration, definition, definitionVersion)
try {
+ val rbDefinitionService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
val result: BlueprintWebClientService.WebClientResponse<String> = rbDefinitionService.exchangeResource(
DELETE.name,
"/config-template/$templateName",
}
} catch (e: Exception) {
log.error("Caught exception during get template")
- throw BlueprintProcessorException("${e.message}")
+ throw BluePrintProcessorException("${e.message}")
}
}
fun getTemplate(definition: String, definitionVersion: String, templateName: String): K8sTemplate {
- val rbDefinitionService = K8sDefinitionRestClient(k8sConfiguration, definition, definitionVersion)
try {
+ val rbDefinitionService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
val result: BlueprintWebClientService.WebClientResponse<String> = getTemplateRequest(rbDefinitionService, templateName)
log.debug(result.toString())
return objectMapper.readValue(result.body)
} catch (e: Exception) {
log.error("Caught exception during get template")
- throw BlueprintProcessorException("${e.message}")
+ throw BluePrintProcessorException("${e.message}")
}
}
fun hasTemplate(definition: String, definitionVersion: String, templateName: String): Boolean {
- val rbDefinitionService = K8sDefinitionRestClient(k8sConfiguration, definition, definitionVersion)
try {
- val result: BlueprintWebClientService.WebClientResponse<String> = getTemplateRequest(rbDefinitionService, templateName)
+ val interceptedService = getK8sDefinitionRestClient(
+ k8sConfiguration,
+ definition,
+ definitionVersion
+ )
+ val result: BlueprintWebClientService.WebClientResponse<String> = getTemplateRequest(interceptedService, templateName)
log.debug(result.toString())
return result.status in 200..299
} catch (e: Exception) {
log.error("Caught exception during get template")
- throw BlueprintProcessorException("${e.message}")
+ throw BluePrintProcessorException("${e.message}")
}
}
- private fun getTemplateRequest(rbDefinitionService: K8sDefinitionRestClient, templateName: String): BlueprintWebClientService.WebClientResponse<String> {
+ private fun getTemplateRequest(rbDefinitionService: BlueprintWebClientService, templateName: String): BlueprintWebClientService.WebClientResponse<String> {
return rbDefinitionService.exchangeResource(
GET.name,
"/config-template/$templateName",