single /enrichandupload endpoint. 47/109947/1
authorOleg Mitsura <oleg.mitsura@amdocs.com>
Thu, 9 Jul 2020 15:19:44 +0000 (11:19 -0400)
committerOleg Mitsura <omitsura@gmail.com>
Thu, 9 Jul 2020 19:49:18 +0000 (19:49 +0000)
Issue-ID: CCSDK-2540

rev1. initial commit
rev2. spacing

Signed-off-by: Oleg Mitsura <oleg.mitsura@amdocs.com>
Change-Id: I14c8ffa42214faf064d8697b00190dee80f5da1c
(cherry picked from commit 90b49b479b13ffb17baf6de0ca73d1442da9c423)

ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/BlueprintModelController.kt
ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/handler/BluePrintModelHandler.kt

index 1f01d1c..63d6d44 100644 (file)
@@ -178,6 +178,17 @@ open class BlueprintModelController(private val bluePrintModelHandler: BluePrint
         bluePrintModelHandler.enrichBlueprint(file)
     }
 
+    @PostMapping(
+        "/enrichandpublish", produces = [MediaType.APPLICATION_JSON_VALUE], consumes = [MediaType
+        .MULTIPART_FORM_DATA_VALUE]
+    )
+    @ResponseBody
+    @Throws(BluePrintException::class)
+    @PreAuthorize("hasRole('USER')")
+    suspend fun enrichAndPubishlueprint(@RequestPart("file") file: FilePart): BlueprintModelSearch = mdcWebCoroutineScope {
+        bluePrintModelHandler.enrichAndPublishBlueprint(file)
+    }
+
     @PostMapping("/publish", produces = [MediaType.APPLICATION_JSON_VALUE])
     @ResponseBody
     @Throws(BluePrintException::class)
index 48ca912..c6c8e96 100644 (file)
@@ -440,6 +440,7 @@ open class BluePrintModelHandler(
 
     /**
      * This is a publishBlueprintModel method to change the status published to YES
+     * NOTE: this method is meant for enriched blueprints only.
      *
      * @param filePart filePart
      * @return BlueprintModelSearch
@@ -460,6 +461,31 @@ open class BluePrintModelHandler(
         }
     }
 
+    /**
+     * Enrich and publish the blueprint.
+     * NOTE: this method is meant for the unenriched vs publishBlueprint(filePart)
+     *       which is used for enriched blueprints.
+     *
+     * @param filePart filePart
+     * @return BlueprintModelSearch
+     * @throws BluePrintException BluePrintException
+     */
+    @Throws(BluePrintException::class)
+    open suspend fun enrichAndPublishBlueprint(filePart: FilePart): BlueprintModelSearch {
+        try {
+            val enhancedByteArray = enrichBlueprintFileSource(filePart)
+            return upload(enhancedByteArray, true)
+        } catch (e: BluePrintProcessorException) {
+            e.http(ErrorCatalogCodes.IO_FILE_INTERRUPT)
+            val errorMsg = "Error while enhancing and uploading the CBA package."
+            throw e.updateErrorMessage(DesignerApiDomains.DESIGNER_API, errorMsg,
+                "Wrong CBA file provided, please verify the source CBA.")
+        } catch (e: Exception) {
+            throw httpProcessorException(ErrorCatalogCodes.IO_FILE_INTERRUPT, DesignerApiDomains.DESIGNER_API,
+                "EnrichBlueprint: ${e.message}", e.errorCauseOrDefault())
+        }
+    }
+
     /** Common CBA Save and Publish function for RestController and GRPC Handler, the [fileSource] may be
      * byteArray or File Part type.*/
     open suspend fun upload(fileSource: Any, validate: Boolean): BlueprintModelSearch {