Add draft and publish grpc upload options. 43/94943/1
authorBrinda Santh <brindasanth@in.ibm.com>
Wed, 4 Sep 2019 15:14:39 +0000 (11:14 -0400)
committerBrinda Santh <brindasanth@in.ibm.com>
Wed, 4 Sep 2019 15:14:39 +0000 (11:14 -0400)
Change-Id: Id1476f1cb449c4070a7ef53a918b62d26da26391
Issue-ID: CCSDK-1682
Signed-off-by: Brinda Santh <brindasanth@in.ibm.com>
ms/blueprintsprocessor/modules/commons/db-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/service/BlueprintProcessorCatalogServiceImpl.kt
ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/BluePrintManagementGRPCHandler.kt
ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/ExecutionServiceHandler.kt
ms/blueprintsprocessor/modules/inbounds/selfservice-api/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/selfservice/api/BluePrintManagementGRPCHandlerTest.kt

index 63c44d2..9ce45d1 100755 (executable)
@@ -127,7 +127,7 @@ class BlueprintProcessorCatalogServiceImpl(bluePrintRuntimeValidatorService: Blu
         blueprintModel.id = metadata[BluePrintConstants.PROPERTY_BLUEPRINT_PROCESS_ID]
         blueprintModel.artifactType = ApplicationConstants.ASDC_ARTIFACT_TYPE_SDNC_MODEL
         blueprintModel.published = metadata[BluePrintConstants.PROPERTY_BLUEPRINT_VALID]
-                ?: BluePrintConstants.FLAG_Y
+                ?: BluePrintConstants.FLAG_N
         blueprintModel.artifactName = artifactName
         blueprintModel.artifactVersion = artifactVersion
         blueprintModel.updatedBy = metadata[BluePrintConstants.METADATA_TEMPLATE_AUTHOR]!!
index 451f827..0116680 100644 (file)
@@ -24,21 +24,19 @@ import kotlinx.coroutines.runBlocking
 import org.onap.ccsdk.cds.blueprintsprocessor.selfservice.api.utils.currentTimestamp
 import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader
 import org.onap.ccsdk.cds.controllerblueprints.common.api.Status
+import org.onap.ccsdk.cds.controllerblueprints.core.*
 import org.onap.ccsdk.cds.controllerblueprints.core.config.BluePrintLoadConfiguration
-import org.onap.ccsdk.cds.controllerblueprints.core.deleteDir
 import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintCatalogService
-import org.onap.ccsdk.cds.controllerblueprints.core.normalizedFile
-import org.onap.ccsdk.cds.controllerblueprints.core.reCreateDirs
-import org.onap.ccsdk.cds.controllerblueprints.management.api.BluePrintManagementOutput
-import org.onap.ccsdk.cds.controllerblueprints.management.api.BluePrintManagementServiceGrpc
-import org.onap.ccsdk.cds.controllerblueprints.management.api.BluePrintRemoveInput
-import org.onap.ccsdk.cds.controllerblueprints.management.api.BluePrintUploadInput
+import org.onap.ccsdk.cds.controllerblueprints.core.scripts.BluePrintCompileCache
+import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintFileUtils
+import org.onap.ccsdk.cds.controllerblueprints.management.api.*
 import org.slf4j.LoggerFactory
 import org.springframework.security.access.prepost.PreAuthorize
 import org.springframework.stereotype.Service
 import java.io.File
 import java.util.*
 
+// TODO("move to management-api or designer-api module")
 @Service
 open class BluePrintManagementGRPCHandler(private val bluePrintLoadConfiguration: BluePrintLoadConfiguration,
                                           private val blueprintsProcessorCatalogService: BluePrintCatalogService)
@@ -53,19 +51,48 @@ open class BluePrintManagementGRPCHandler(private val bluePrintLoadConfiguration
 
             log.info("request(${request.commonHeader.requestId})")
             val uploadId = UUID.randomUUID().toString()
+            val blueprintArchive = normalizedPathName(bluePrintLoadConfiguration.blueprintArchivePath, uploadId)
+            val blueprintWorking = normalizedPathName(bluePrintLoadConfiguration.blueprintWorkingPath, uploadId)
             try {
-                val cbaFile = normalizedFile(bluePrintLoadConfiguration.blueprintArchivePath, uploadId, "cba-zip")
+                val cbaFile = normalizedFile(blueprintArchive, "cba.zip")
 
                 saveToDisk(request, cbaFile)
 
-                val blueprintId = blueprintsProcessorCatalogService.saveToDatabase(uploadId, cbaFile)
-                responseObserver.onNext(successStatus("Successfully uploaded CBA($blueprintId)...", request.commonHeader))
+                val uploadAction = request.actionIdentifiers?.actionName.emptyTONull()
+                        ?: UploadAction.DRAFT.toString()
+
+                when (uploadAction) {
+                    UploadAction.DRAFT.toString() -> {
+                        val blueprintId = blueprintsProcessorCatalogService.saveToDatabase(uploadId, cbaFile, false)
+                        responseObserver.onNext(successStatus("Successfully uploaded CBA($blueprintId)...",
+                                request.commonHeader))
+                    }
+                    UploadAction.PUBLISH.toString() -> {
+                        val blueprintId = blueprintsProcessorCatalogService.saveToDatabase(uploadId, cbaFile, true)
+                        responseObserver.onNext(successStatus("Successfully uploaded CBA($blueprintId)...",
+                                request.commonHeader))
+                    }
+                    UploadAction.VALIDATE.toString() -> {
+                        //TODO("Not Implemented")
+                        responseObserver.onError(failStatus("Not Implemented",
+                                BluePrintProcessorException("Not Implemented")))
+                    }
+                    UploadAction.ENRICH.toString() -> {
+                        //TODO("Not Implemented")
+                        responseObserver.onError(failStatus("Not Implemented",
+                                BluePrintProcessorException("Not Implemented")))
+                    }
+                }
                 responseObserver.onCompleted()
             } catch (e: Exception) {
                 responseObserver.onError(failStatus("request(${request.commonHeader.requestId}): Failed to upload CBA", e))
             } finally {
-                deleteDir(bluePrintLoadConfiguration.blueprintArchivePath, uploadId)
-                deleteDir(bluePrintLoadConfiguration.blueprintWorkingPath, uploadId)
+                // Clean blueprint script cache
+                val cacheKey = BluePrintFileUtils
+                        .compileCacheKey(normalizedPathName(bluePrintLoadConfiguration.blueprintWorkingPath, uploadId))
+                BluePrintCompileCache.cleanClassLoader(cacheKey)
+                deleteNBDir(blueprintArchive)
+                deleteNBDir(blueprintWorking)
             }
         }
     }
index 9dd04bf..2f88780 100644 (file)
@@ -49,6 +49,7 @@ class ExecutionServiceHandler(private val bluePrintLoadConfiguration: BluePrintL
 
     private val log = LoggerFactory.getLogger(ExecutionServiceHandler::class.toString())
 
+    //TODO("Remove from self service api and move to designer api module")
     suspend fun upload(filePart: FilePart): String {
         val saveId = UUID.randomUUID().toString()
         val blueprintArchive = normalizedPathName(bluePrintLoadConfiguration.blueprintArchivePath, saveId)
@@ -74,6 +75,7 @@ class ExecutionServiceHandler(private val bluePrintLoadConfiguration: BluePrintL
         }
     }
 
+    //TODO("Remove from self service api and move to designer api module")
     suspend fun remove(name: String, version: String) {
         blueprintsProcessorCatalogService.deleteFromDatabase(name, version)
     }
index e084c60..ea05e88 100644 (file)
@@ -25,13 +25,11 @@ import org.junit.Test
 import org.junit.runner.RunWith
 import org.onap.ccsdk.cds.blueprintsprocessor.selfservice.api.messaginglib.MessagingControllerTest
 import org.onap.ccsdk.cds.blueprintsprocessor.selfservice.api.messaginglib.ProducerConfiguration
+import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers
 import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader
 import org.onap.ccsdk.cds.controllerblueprints.core.deleteDir
 import org.onap.ccsdk.cds.controllerblueprints.core.normalizedFile
-import org.onap.ccsdk.cds.controllerblueprints.management.api.BluePrintManagementServiceGrpc
-import org.onap.ccsdk.cds.controllerblueprints.management.api.BluePrintRemoveInput
-import org.onap.ccsdk.cds.controllerblueprints.management.api.BluePrintUploadInput
-import org.onap.ccsdk.cds.controllerblueprints.management.api.FileChunk
+import org.onap.ccsdk.cds.controllerblueprints.management.api.*
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration
 import org.springframework.context.annotation.ComponentScan
@@ -75,7 +73,7 @@ class BluePrintManagementGRPCHandlerTest {
     fun `test upload blueprint`() {
         val blockingStub = BluePrintManagementServiceGrpc.newBlockingStub(grpcServerRule.channel)
         val id = "123_upload"
-        val req = createUploadInputRequest(id)
+        val req = createUploadInputRequest(id, UploadAction.PUBLISH.toString())
         val output = blockingStub.uploadBlueprint(req)
 
         assertEquals(200, output.status.code)
@@ -87,7 +85,7 @@ class BluePrintManagementGRPCHandlerTest {
     fun `test delete blueprint`() {
         val blockingStub = BluePrintManagementServiceGrpc.newBlockingStub(grpcServerRule.channel)
         val id = "123_delete"
-        val req = createUploadInputRequest(id)
+        val req = createUploadInputRequest(id, UploadAction.DRAFT.toString())
 
         var output = blockingStub.uploadBlueprint(req)
         assertEquals(200, output.status.code)
@@ -99,7 +97,7 @@ class BluePrintManagementGRPCHandlerTest {
         assertEquals(200, output.status.code)
     }
 
-    private fun createUploadInputRequest(id: String): BluePrintUploadInput {
+    private fun createUploadInputRequest(id: String, action: String): BluePrintUploadInput {
         val file = normalizedFile("./src/test/resources/test-cba.zip")
         assertTrue(file.exists(), "couldnt get file ${file.absolutePath}")
 
@@ -110,11 +108,18 @@ class BluePrintManagementGRPCHandlerTest {
                 .setRequestId(id)
                 .setSubRequestId("1234-56").build()
 
+        val actionIdentifier = ActionIdentifiers.newBuilder()
+                .setActionName(action)
+                .setBlueprintName("sample")
+                .setBlueprintVersion("1.0.0")
+                .build()
+
         val fileChunk = FileChunk.newBuilder().setChunk(ByteString.copyFrom(file.inputStream().readBytes()))
                 .build()
 
         return BluePrintUploadInput.newBuilder()
                 .setCommonHeader(commonHeader)
+                .setActionIdentifiers(actionIdentifier)
                 .setFileChunk(fileChunk)
                 .build()
     }