aboutsummaryrefslogtreecommitdiffstats
path: root/ms/controllerblueprints/modules/service/src/main/kotlin/org
diff options
context:
space:
mode:
authorBrinda Santh <brindasanth@in.ibm.com>2019-08-29 16:46:22 -0400
committerBrinda Santh <brindasanth@in.ibm.com>2019-08-29 23:43:47 -0400
commitb8539cca6f2bc572801640b3fcefe83dcecf5ef5 (patch)
tree73fd650fa51807d664528ba53f53a4602aec2c30 /ms/controllerblueprints/modules/service/src/main/kotlin/org
parent0fbfc6eab2d42c8ee2f8601db43813a4e33ffc4d (diff)
Refactor Blueprint model controller to designer api.
Change-Id: I6e729aab24262f6bdef4b92febf9f65a4819d142 Issue-ID: CCSDK-1663 Signed-off-by: Brinda Santh <brindasanth@in.ibm.com>
Diffstat (limited to 'ms/controllerblueprints/modules/service/src/main/kotlin/org')
-rw-r--r--ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/BlueprintModelController.kt109
-rw-r--r--ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/BluePrintModelHandler.kt335
2 files changed, 0 insertions, 444 deletions
diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/BlueprintModelController.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/BlueprintModelController.kt
deleted file mode 100644
index a214f961e..000000000
--- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/BlueprintModelController.kt
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright © 2019 Bell Canada Intellectual Property.
- * Modifications Copyright © 2019 IBM.
- *
- * 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.controllerblueprints.service.controller
-
-import kotlinx.coroutines.runBlocking
-import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException
-import org.onap.ccsdk.cds.controllerblueprints.service.domain.BlueprintModelSearch
-import org.onap.ccsdk.cds.controllerblueprints.service.handler.BluePrintModelHandler
-import org.springframework.core.io.Resource
-import org.springframework.http.MediaType
-import org.springframework.http.ResponseEntity
-import org.springframework.http.codec.multipart.FilePart
-import org.springframework.web.bind.annotation.*
-
-/**
- * BlueprintModelController Purpose: Handle controllerBlueprint API request
- *
- * @author Vinal Patel
- * @version 1.0
- */
-@RestController
-@RequestMapping("/api/v1/blueprint-model")
-open class BlueprintModelController(private val bluePrintModelHandler: BluePrintModelHandler) {
-
- @PostMapping("", produces = [MediaType.APPLICATION_JSON_VALUE], consumes = [MediaType.MULTIPART_FORM_DATA_VALUE])
- @ResponseBody
- @Throws(BluePrintException::class)
- fun saveBlueprint(@RequestPart("file") filePart: FilePart): BlueprintModelSearch = runBlocking {
- bluePrintModelHandler.saveBlueprintModel(filePart)
- }
-
- @GetMapping("", produces = [MediaType.APPLICATION_JSON_VALUE])
- @ResponseBody
- fun allBlueprintModel(): List<BlueprintModelSearch> {
- return this.bluePrintModelHandler.allBlueprintModel()
- }
-
- @DeleteMapping("/{id}")
- @Throws(BluePrintException::class)
- fun deleteBlueprint(@PathVariable(value = "id") id: String) {
- this.bluePrintModelHandler.deleteBlueprintModel(id)
- }
-
- @GetMapping("/by-name/{name}/version/{version}", produces = [MediaType.APPLICATION_JSON_VALUE])
- @ResponseBody
- @Throws(BluePrintException::class)
- fun getBlueprintByNameAndVersion(@PathVariable(value = "name") name: String,
- @PathVariable(value = "version") version: String): BlueprintModelSearch {
- return this.bluePrintModelHandler.getBlueprintModelSearchByNameAndVersion(name, version)
- }
-
- @GetMapping("/download/by-name/{name}/version/{version}", produces = [MediaType.APPLICATION_JSON_VALUE])
- @ResponseBody
- @Throws(BluePrintException::class)
- fun downloadBlueprintByNameAndVersion(@PathVariable(value = "name") name: String,
- @PathVariable(value = "version") version: String): ResponseEntity<Resource> {
- return this.bluePrintModelHandler.downloadBlueprintModelFileByNameAndVersion(name, version)
- }
-
- @GetMapping("/{id}", produces = [MediaType.APPLICATION_JSON_VALUE])
- @ResponseBody
- @Throws(BluePrintException::class)
- fun getBlueprintModel(@PathVariable(value = "id") id: String): BlueprintModelSearch {
- return this.bluePrintModelHandler.getBlueprintModelSearch(id)
- }
-
- @GetMapping("/download/{id}", produces = [MediaType.APPLICATION_JSON_VALUE])
- @ResponseBody
- @Throws(BluePrintException::class)
- fun downloadBluePrint(@PathVariable(value = "id") id: String): ResponseEntity<Resource> {
- return this.bluePrintModelHandler.downloadBlueprintModelFile(id)
- }
-
- @PostMapping("/enrich", produces = [MediaType.APPLICATION_JSON_VALUE], consumes = [MediaType
- .MULTIPART_FORM_DATA_VALUE])
- @ResponseBody
- @Throws(BluePrintException::class)
- fun enrichBlueprint(@RequestPart("file") file: FilePart): ResponseEntity<Resource> = runBlocking {
- bluePrintModelHandler.enrichBlueprint(file)
- }
-
- @PostMapping("/publish", produces = [MediaType.APPLICATION_JSON_VALUE])
- @ResponseBody
- @Throws(BluePrintException::class)
- fun publishBlueprint(@RequestPart("file") file: FilePart): BlueprintModelSearch = runBlocking {
- bluePrintModelHandler.publishBlueprint(file)
- }
-
- @GetMapping("/search/{tags}", produces = [MediaType.APPLICATION_JSON_VALUE])
- @ResponseBody
- fun searchBlueprintModels(@PathVariable(value = "tags") tags: String): List<BlueprintModelSearch> {
- return this.bluePrintModelHandler.searchBlueprintModels(tags)
- }
-}
diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/BluePrintModelHandler.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/BluePrintModelHandler.kt
deleted file mode 100644
index f40da68f6..000000000
--- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/BluePrintModelHandler.kt
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * Copyright © 2017-2018 AT&T Intellectual Property.
- * Modifications Copyright © 2019 Bell Canada.
- * Modifications Copyright © 2019 IBM.
- *
- * 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.controllerblueprints.service.handler
-
-import org.onap.ccsdk.cds.controllerblueprints.core.*
-import org.onap.ccsdk.cds.controllerblueprints.core.config.BluePrintLoadConfiguration
-import org.onap.ccsdk.cds.controllerblueprints.core.data.ErrorCode
-import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintCatalogService
-import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintEnhancerService
-import org.onap.ccsdk.cds.controllerblueprints.service.domain.BlueprintModel
-import org.onap.ccsdk.cds.controllerblueprints.service.domain.BlueprintModelSearch
-import org.onap.ccsdk.cds.controllerblueprints.service.repository.ControllerBlueprintModelContentRepository
-import org.onap.ccsdk.cds.controllerblueprints.service.repository.ControllerBlueprintModelRepository
-import org.onap.ccsdk.cds.controllerblueprints.service.repository.ControllerBlueprintModelSearchRepository
-import org.onap.ccsdk.cds.controllerblueprints.service.utils.BluePrintEnhancerUtils
-import org.slf4j.LoggerFactory
-import org.springframework.core.io.ByteArrayResource
-import org.springframework.core.io.Resource
-import org.springframework.http.HttpHeaders
-import org.springframework.http.MediaType
-import org.springframework.http.ResponseEntity
-import org.springframework.http.codec.multipart.FilePart
-import org.springframework.stereotype.Service
-import org.springframework.transaction.annotation.Transactional
-import java.io.File
-import java.io.IOException
-import java.util.*
-
-/**
- * BlueprintModelHandler Purpose: Handler service to handle the request from BlurPrintModelRest
- *
- * @author Brinda Santh
- * @version 1.0
- */
-
-@Service
-open class BluePrintModelHandler(private val controllerBlueprintsCatalogService: BluePrintCatalogService,
- private val bluePrintLoadConfiguration: BluePrintLoadConfiguration,
- private val blueprintModelSearchRepository: ControllerBlueprintModelSearchRepository,
- private val blueprintModelRepository: ControllerBlueprintModelRepository,
- private val blueprintModelContentRepository: ControllerBlueprintModelContentRepository,
- private val bluePrintEnhancerService: BluePrintEnhancerService) {
-
- private val log = LoggerFactory.getLogger(BluePrintModelHandler::class.java)!!
-
- /**
- * This is a getAllBlueprintModel method to retrieve all the BlueprintModel in Database
- *
- * @return List<BlueprintModelSearch> list of the controller blueprint archives
- </BlueprintModelSearch> */
- open fun allBlueprintModel(): List<BlueprintModelSearch> {
- return blueprintModelSearchRepository.findAll()
- }
-
- /**
- * This is a saveBlueprintModel method
- *
- * @param filePart filePart
- * @return Mono<BlueprintModelSearch>
- * @throws BluePrintException BluePrintException
- </BlueprintModelSearch> */
- @Throws(BluePrintException::class)
- open suspend fun saveBlueprintModel(filePart: FilePart): BlueprintModelSearch {
- val saveId = UUID.randomUUID().toString()
- val blueprintArchive = normalizedPathName(bluePrintLoadConfiguration.blueprintArchivePath, saveId)
- try {
- //Recreate the Dir
- normalizedFile(bluePrintLoadConfiguration.blueprintArchivePath, saveId).reCreateDirs()
- val deCompressedFile = normalizedFile(blueprintArchive, "cba.zip")
- // Copy the File Part to Local File
- BluePrintEnhancerUtils.copyFromFilePart(filePart, deCompressedFile)
- // Save the Copied file to Database
- val blueprintId = controllerBlueprintsCatalogService.saveToDatabase(saveId, deCompressedFile, false)
- // Check and Return the Saved File
- val blueprintModelSearch = blueprintModelSearchRepository.findById(blueprintId).get()
- log.info("Save($saveId) successful for blueprint(${blueprintModelSearch.artifactName}) " +
- "version(${blueprintModelSearch.artifactVersion})")
- return blueprintModelSearch
- } catch (e: IOException) {
- throw BluePrintException(ErrorCode.IO_FILE_INTERRUPT.value,
- "Error in Save CBA: ${e.message}", e)
- } finally {
- deleteDir(blueprintArchive)
- }
- }
-
-
- /**
- * This is a searchBlueprintModels method
- *
- * @param tags tags
- * @return List<BlueprintModelSearch>
- </BlueprintModelSearch> */
- open fun searchBlueprintModels(tags: String): List<BlueprintModelSearch> {
- return blueprintModelSearchRepository.findByTagsContainingIgnoreCase(tags)
- }
-
- /**
- * This is a getBlueprintModelSearchByNameAndVersion method
- *
- * @param name name
- * @param version version
- * @return BlueprintModelSearch
- * @throws BluePrintException BluePrintException
- */
- @Throws(BluePrintException::class)
- open fun getBlueprintModelSearchByNameAndVersion(name: String, version: String): BlueprintModelSearch {
- val blueprintModelSearch: BlueprintModelSearch
- val dbBlueprintModel = blueprintModelSearchRepository
- .findByArtifactNameAndArtifactVersion(name, version)
- if (dbBlueprintModel.isPresent) {
- blueprintModelSearch = dbBlueprintModel.get()
- } else {
- throw BluePrintException(ErrorCode.RESOURCE_NOT_FOUND.value,
- String.format(BLUEPRINT_MODEL_NAME_VERSION_FAILURE_MSG, name, version))
- }
- return blueprintModelSearch
- }
-
- /**
- * This is a downloadBlueprintModelFileByNameAndVersion method to download a Blueprint by Name and Version
- *
- * @param name name
- * @param version version
- * @return ResponseEntity<Resource>
- * @throws BluePrintException BluePrintException
- </Resource> */
- @Throws(BluePrintException::class)
- open fun downloadBlueprintModelFileByNameAndVersion(name: String,
- version: String): ResponseEntity<Resource> {
- val blueprintModel: BlueprintModel
- try {
- blueprintModel = getBlueprintModelByNameAndVersion(name, version)
- } catch (e: BluePrintException) {
- throw BluePrintException(ErrorCode.RESOURCE_NOT_FOUND.value, String.format("Error while " + "downloading the CBA file: %s", e.message), e)
- }
-
- val fileName = blueprintModel.id + ".zip"
- val file = blueprintModel.blueprintModelContent.content
- return prepareResourceEntity(fileName, file)
- }
-
- /**
- * This is a downloadBlueprintModelFile method to find the target file to download and return a file resource
- *
- * @return ResponseEntity<Resource>
- * @throws BluePrintException BluePrintException
- </Resource> */
- @Throws(BluePrintException::class)
- open fun downloadBlueprintModelFile(id: String): ResponseEntity<Resource> {
- val blueprintModel: BlueprintModel
- try {
- blueprintModel = getBlueprintModel(id)
- } catch (e: BluePrintException) {
- throw BluePrintException(ErrorCode.RESOURCE_NOT_FOUND.value, String.format("Error while " + "downloading the CBA file: %s", e.message), e)
- }
-
- val fileName = blueprintModel.id + ".zip"
- val file = blueprintModel.blueprintModelContent.content
- return prepareResourceEntity(fileName, file)
- }
-
- /**
- * @return ResponseEntity<Resource>
- </Resource> */
- private fun prepareResourceEntity(fileName: String, file: ByteArray): ResponseEntity<Resource> {
- return ResponseEntity.ok()
- .contentType(MediaType.parseMediaType("text/plain"))
- .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"$fileName\"")
- .body(ByteArrayResource(file))
- }
-
- /**
- * This is a getBlueprintModel method
- *
- * @param id id
- * @return BlueprintModel
- * @throws BluePrintException BluePrintException
- */
- @Throws(BluePrintException::class)
- open fun getBlueprintModel(id: String): BlueprintModel {
- val blueprintModel: BlueprintModel
- val dbBlueprintModel = blueprintModelRepository.findById(id)
- if (dbBlueprintModel.isPresent) {
- blueprintModel = dbBlueprintModel.get()
- } else {
- val msg = String.format(BLUEPRINT_MODEL_ID_FAILURE_MSG, id)
- throw BluePrintException(ErrorCode.RESOURCE_NOT_FOUND.value, msg)
- }
- return blueprintModel
- }
-
- /**
- * This is a getBlueprintModelByNameAndVersion method
- *
- * @param name name
- * @param version version
- * @return BlueprintModel
- * @throws BluePrintException BluePrintException
- */
- @Throws(BluePrintException::class)
- open fun getBlueprintModelByNameAndVersion(name: String, version: String): BlueprintModel {
- val blueprintModel = blueprintModelRepository
- .findByArtifactNameAndArtifactVersion(name, version)
- if (blueprintModel != null) {
- return blueprintModel
- } else {
- val msg = String.format(BLUEPRINT_MODEL_NAME_VERSION_FAILURE_MSG, name, version)
- throw BluePrintException(ErrorCode.RESOURCE_NOT_FOUND.value, msg)
- }
- }
-
- /**
- * This is a getBlueprintModelSearch method
- *
- * @param id id
- * @return BlueprintModelSearch
- * @throws BluePrintException BluePrintException
- */
- @Throws(BluePrintException::class)
- open fun getBlueprintModelSearch(id: String): BlueprintModelSearch {
- val blueprintModelSearch: BlueprintModelSearch
- val dbBlueprintModel = blueprintModelSearchRepository.findById(id)
- if (dbBlueprintModel.isPresent) {
- blueprintModelSearch = dbBlueprintModel.get()
- } else {
- val msg = String.format(BLUEPRINT_MODEL_ID_FAILURE_MSG, id)
- throw BluePrintException(ErrorCode.RESOURCE_NOT_FOUND.value, msg)
- }
-
- return blueprintModelSearch
- }
-
- /**
- * This is a deleteBlueprintModel method
- *
- * @param id id
- * @throws BluePrintException BluePrintException
- */
- @Transactional
- @Throws(BluePrintException::class)
- open fun deleteBlueprintModel(id: String) {
- val dbBlueprintModel = blueprintModelRepository.findById(id)
- if (dbBlueprintModel.isPresent) {
- blueprintModelContentRepository.deleteByBlueprintModel(dbBlueprintModel.get())
- blueprintModelRepository.delete(dbBlueprintModel.get())
- } else {
- val msg = String.format(BLUEPRINT_MODEL_ID_FAILURE_MSG, id)
- throw BluePrintException(ErrorCode.RESOURCE_NOT_FOUND.value, msg)
- }
- }
-
- /**
- * This is a CBA enrichBlueprint method
- * Save the Zip File in archive location and extract the cba content.
- * Populate the Enhancement Location
- * Enhance the CBA content
- * Compress the Enhanced Content
- * Return back the the compressed content back to the caller.
- *
- * @param filePart filePart
- * @return ResponseEntity<Resource>
- * @throws BluePrintException BluePrintException
- */
- @Throws(BluePrintException::class)
- open suspend fun enrichBlueprint(filePart: FilePart): ResponseEntity<Resource> {
- val enhanceId = UUID.randomUUID().toString()
- val blueprintArchive = normalizedPathName(bluePrintLoadConfiguration.blueprintArchivePath, enhanceId)
- val blueprintWorkingDir = normalizedPathName(bluePrintLoadConfiguration.blueprintWorkingPath, enhanceId)
- try {
- BluePrintEnhancerUtils.decompressFilePart(filePart, blueprintArchive, blueprintWorkingDir)
-
- // Enhance the Blue Prints
- bluePrintEnhancerService.enhance(blueprintWorkingDir)
-
- return BluePrintEnhancerUtils.compressToFilePart(blueprintWorkingDir, blueprintArchive)
-
- } catch (e: IOException) {
- throw BluePrintException(ErrorCode.IO_FILE_INTERRUPT.value,
- "Error in Enriching CBA: ${e.message}", e)
- } finally {
- BluePrintEnhancerUtils.cleanEnhancer(blueprintArchive, blueprintWorkingDir)
- }
- }
-
- /**
- * This is a publishBlueprintModel method to change the status published to YES
- *
- * @param filePart filePart
- * @return BlueprintModelSearch
- * @throws BluePrintException BluePrintException
- */
- @Throws(BluePrintException::class)
- open suspend fun publishBlueprint(filePart: FilePart): BlueprintModelSearch {
- val publishId = UUID.randomUUID().toString()
- val blueprintArchive = bluePrintLoadConfiguration.blueprintArchivePath.plus(File.separator).plus(publishId)
- val blueprintWorkingDir = bluePrintLoadConfiguration.blueprintWorkingPath.plus(File.separator).plus(publishId)
- try {
- val compressedFilePart = BluePrintEnhancerUtils
- .extractCompressFilePart(filePart, blueprintArchive, blueprintWorkingDir)
-
- val blueprintId = controllerBlueprintsCatalogService.saveToDatabase(publishId, compressedFilePart, true)
-
- return blueprintModelSearchRepository.findById(blueprintId).get()
-
- } catch (e: Exception) {
- throw BluePrintException(ErrorCode.IO_FILE_INTERRUPT.value,
- "Error in Publishing CBA: ${e.message}", e)
- } finally {
- BluePrintEnhancerUtils.cleanEnhancer(blueprintArchive, blueprintWorkingDir)
- }
- }
-
- companion object {
-
- private const val BLUEPRINT_MODEL_ID_FAILURE_MSG = "failed to get blueprint model id(%s) from repo"
- private const val BLUEPRINT_MODEL_NAME_VERSION_FAILURE_MSG = "failed to get blueprint model by name(%s)" + " and version(%s) from repo"
- }
-}