summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKAPIL SINGAL <ks220y@att.com>2020-12-08 19:18:57 +0000
committerGerrit Code Review <gerrit@onap.org>2020-12-08 19:18:57 +0000
commit1820eb337ff812fff26a0cc8d70bb88c5d678873 (patch)
tree499784b82590c8faca44baa7891f4f8092d7b091
parent35a812c143311e382dba1d070c27712f506e84d5 (diff)
parenta4b721c3e9c4aa7c5342304a061dc5634935acd0 (diff)
Merge "CDS add Swagger annotations for BP Model API"
-rwxr-xr-xms/blueprintsprocessor/application/pom.xml6
-rw-r--r--ms/blueprintsprocessor/modules/commons/db-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/primary/domain/BlueprintModelSearch.kt20
-rw-r--r--ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/BlueprintModelController.kt221
-rw-r--r--ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/DesignerApiData.kt8
4 files changed, 219 insertions, 36 deletions
diff --git a/ms/blueprintsprocessor/application/pom.xml b/ms/blueprintsprocessor/application/pom.xml
index 1f2bffa18..2b144338a 100755
--- a/ms/blueprintsprocessor/application/pom.xml
+++ b/ms/blueprintsprocessor/application/pom.xml
@@ -334,10 +334,12 @@
<apiSource>
<springmvc>true</springmvc>
<locations>
- <location>org.onap.ccsdk.cds.blueprintsprocessor.designer.api</location>
+ <location>org.onap.ccsdk.cds.blueprintsprocessor.designer.api.BlueprintModelController</location>
+ <!-- These locations are not implemented yet
<location>org.onap.ccsdk.cds.blueprintsprocessor.resource.api</location>
<location>org.onap.ccsdk.cds.blueprintsprocessor.configs.api</location>
<location>org.onap.ccsdk.cds.blueprintsprocessor.healthapi</location>
+ -->
</locations>
<schemes>
<scheme>http</scheme>
@@ -370,7 +372,7 @@
</securityDefinitions>
<outputFormats>json,yaml</outputFormats>
<swaggerDirectory>${basedir}/../../../docs/api-reference/media</swaggerDirectory>
- <swaggerFileName>cds-bp-api-swagger</swaggerFileName>
+ <swaggerFileName>cds-bp-processor-api-swagger</swaggerFileName>
<jsonExampleValues>true</jsonExampleValues>
<operationIdFormat>{{className}}_{{methodName}}_{{httpMethod}}.{{packageName}}</operationIdFormat>
</apiSource>
diff --git a/ms/blueprintsprocessor/modules/commons/db-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/primary/domain/BlueprintModelSearch.kt b/ms/blueprintsprocessor/modules/commons/db-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/primary/domain/BlueprintModelSearch.kt
index e6373d9b8..734bf3689 100644
--- a/ms/blueprintsprocessor/modules/commons/db-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/primary/domain/BlueprintModelSearch.kt
+++ b/ms/blueprintsprocessor/modules/commons/db-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/primary/domain/BlueprintModelSearch.kt
@@ -19,6 +19,9 @@ package org.onap.ccsdk.cds.blueprintsprocessor.db.primary.domain
import com.fasterxml.jackson.annotation.JsonFormat
import com.fasterxml.jackson.annotation.JsonTypeInfo
import com.fasterxml.jackson.annotation.JsonTypeName
+import com.fasterxml.jackson.databind.annotation.JsonSerialize
+import io.swagger.annotations.ApiModel
+import io.swagger.annotations.ApiModelProperty
import org.springframework.data.annotation.LastModifiedDate
import java.io.Serializable
import java.util.Date
@@ -41,43 +44,60 @@ import javax.persistence.TemporalType
@Table(name = "BLUEPRINT_MODEL")
@JsonTypeName("blueprintModel")
@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
+@ApiModel
class BlueprintModelSearch : Serializable {
+ @ApiModelProperty(
+ value = "ID of Blueprint model, is automatically created by CDS",
+ example = "\"658f9a48-7f54-41ba-ae18-c69f26f3dc94\"",
+ required = true
+ )
@Id
@Column(name = "blueprint_model_id")
var id: String? = null
+ @ApiModelProperty(value = "Artifact UUID, usually null", example = "null", required = false)
@Column(name = "artifact_uuid")
var artifactUUId: String? = null
+ @JsonSerialize
+ @ApiModelProperty(value = "Artifact Type, usually null", example = "\"SDNC_MODEL\"", required = false)
@Column(name = "artifact_type")
var artifactType: String? = null
+ @ApiModelProperty(value = "Artifact Version, usually 1.0.0", example = "\"1.0.0\"", required = true)
@Column(name = "artifact_version", nullable = false)
var artifactVersion: String? = null
+ @ApiModelProperty(value = "Artifact Description, usually empty", example = "\"\"", required = false)
@Lob
@Column(name = "artifact_description")
var artifactDescription: String? = null
+ @ApiModelProperty(value = "Internal Version of CBA, usually null", example = "null", required = false)
@Column(name = "internal_version")
var internalVersion: Int? = null
+ @ApiModelProperty(value = "Datetime of the creation of CBA in CDS", example = "\"2020-11-19T10:34:56.000Z\"", required = true)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
@LastModifiedDate
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "creation_date")
var createdDate = Date()
+ @ApiModelProperty(value = "Artifact Name, defined in Metadata", example = "\"pnf_netconf\"", required = true)
@Column(name = "artifact_name", nullable = false)
var artifactName: String? = null
+ @ApiModelProperty(value = "Artifact Name, defined in Metadata", example = "\"pnf_netconf\"", required = true)
@Column(name = "published", nullable = false)
var published: String? = null
+ @ApiModelProperty(value = "Name of publisher, defined in Metadata", example = "\"Deutsche Telekom AG\"", required = true)
@Column(name = "updated_by", nullable = false)
var updatedBy: String? = null
+ @ApiModelProperty(value = "Tags to identify the CBA, defined in Metadata", example = "\"test\"", required = true)
@Lob
@Column(name = "tags", nullable = false)
var tags: String? = null
diff --git a/ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/BlueprintModelController.kt b/ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/BlueprintModelController.kt
index 0fadec30c..167e4358d 100644
--- a/ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/BlueprintModelController.kt
+++ b/ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/BlueprintModelController.kt
@@ -19,7 +19,10 @@
package org.onap.ccsdk.cds.blueprintsprocessor.designer.api
import io.swagger.annotations.ApiOperation
+import io.swagger.annotations.Api
import io.swagger.annotations.ApiParam
+import io.swagger.annotations.ApiResponse
+import io.swagger.annotations.ApiResponses
import org.jetbrains.annotations.NotNull
import org.onap.ccsdk.cds.blueprintsprocessor.db.primary.domain.BlueprintModelSearch
import org.onap.ccsdk.cds.blueprintsprocessor.designer.api.handler.BluePrintModelHandler
@@ -55,28 +58,64 @@ import org.springframework.web.bind.annotation.RestController
*/
@RestController
@RequestMapping("/api/v1/blueprint-model")
+@Api(
+ value = "Blueprint Model Catalog API",
+ description = "Manages all blueprint models which are available in CDS"
+)
open class BlueprintModelController(private val bluePrintModelHandler: BluePrintModelHandler) {
@PostMapping(
path = arrayOf("/bootstrap"), produces = arrayOf(MediaType.APPLICATION_JSON_VALUE),
consumes = arrayOf(MediaType.APPLICATION_JSON_VALUE)
)
+ @ApiOperation(
+ value = "Bootstrap CDS",
+ notes = "Loads all Model Types, Resource Dictionaries and Blueprint Models which are included in CDS by default. " +
+ "Before starting to work with CDS, bootstrap should be called to load all the basic models that each orginization might support. " +
+ "Parameter values can be set as `false` to skip loading e.g. the Resource Dictionaries but this is not recommended."
+ )
+ @ApiResponses(
+ ApiResponse(code = 200, message = "OK"),
+ ApiResponse(code = 500, message = "Internal Server Error")
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
- suspend fun bootstrap(@RequestBody bootstrapRequest: BootstrapRequest): Unit = mdcWebCoroutineScope {
+ suspend fun bootstrap(
+ @ApiParam(required = true, value = "Specifies which elements to load")
+ @RequestBody bootstrapRequest: BootstrapRequest
+ ): Unit = mdcWebCoroutineScope {
bluePrintModelHandler.bootstrapBlueprint(bootstrapRequest)
}
- @PostMapping("", produces = [MediaType.APPLICATION_JSON_VALUE], consumes = [MediaType.MULTIPART_FORM_DATA_VALUE])
+ @PostMapping(produces = [MediaType.APPLICATION_JSON_VALUE], consumes = [MediaType.MULTIPART_FORM_DATA_VALUE])
+ @ApiOperation(
+ value = "Save a Blueprint Model",
+ notes = "Saves a blueprint model by the given CBA zip file input. There is no validation of the attached CBA happening when this API is called."
+ )
+ @ApiResponses(
+ ApiResponse(code = 200, message = "OK"),
+ ApiResponse(code = 500, message = "Internal Server Error")
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
- suspend fun saveBlueprint(@RequestPart("file") filePart: FilePart): BlueprintModelSearch = mdcWebCoroutineScope {
+ suspend fun saveBlueprint(
+ @ApiParam(name = "file", value = "CBA file to be uploaded (example: cba.zip)", required = true)
+ @RequestPart("file") filePart: FilePart
+ ): BlueprintModelSearch = mdcWebCoroutineScope {
bluePrintModelHandler.saveBlueprintModel(filePart)
}
- @GetMapping("", produces = [MediaType.APPLICATION_JSON_VALUE])
+ @GetMapping(produces = [MediaType.APPLICATION_JSON_VALUE])
+ @ApiOperation(
+ value = "List all Blueprint Models",
+ notes = "Lists all meta-data of blueprint models which are saved in CDS."
+ )
+ @ApiResponses(
+ ApiResponse(code = 200, message = "OK"),
+ ApiResponse(code = 500, message = "Internal Server Error")
+ )
@ResponseBody
@PreAuthorize("hasRole('USER')")
fun allBlueprintModel(): List<BlueprintModelSearch> {
@@ -84,13 +123,18 @@ open class BlueprintModelController(private val bluePrintModelHandler: BluePrint
}
@GetMapping("/paged", produces = [MediaType.APPLICATION_JSON_VALUE])
+ @ApiOperation(
+ value = "Get Blueprints ordered",
+ notes = "Lists all blueprint models which are saved in CDS in an ordered mode.",
+ nickname = "BlueprintModelController_allBlueprintModelPaged_GET.org.onap.ccsdk.cds.blueprintsprocessor.designer.api"
+ )
@ResponseBody
@PreAuthorize("hasRole('USER')")
fun allBlueprintModel(
- @RequestParam(defaultValue = "20") limit: Int,
- @RequestParam(defaultValue = "0") offset: Int,
- @RequestParam(defaultValue = "DATE") sort: BlueprintSortByOption,
- @RequestParam(defaultValue = "ASC") sortType: String
+ @ApiParam(value = "Maximum number of returned blueprint models") @RequestParam(defaultValue = "20") limit: Int,
+ @ApiParam(value = "Offset") @RequestParam(defaultValue = "0") offset: Int,
+ @ApiParam(value = "Order of returned blueprint models") @RequestParam(defaultValue = "DATE") sort: BlueprintSortByOption,
+ @ApiParam(value = "Ascend or descend ordering") @RequestParam(defaultValue = "ASC") sortType: String
): Page<BlueprintModelSearch> {
val pageRequest = PageRequest.of(
offset, limit,
@@ -100,22 +144,39 @@ open class BlueprintModelController(private val bluePrintModelHandler: BluePrint
}
@GetMapping("meta-data/{keyword}", produces = [MediaType.APPLICATION_JSON_VALUE])
+ @ApiOperation(
+ value = "Search for Blueprints by a Keyword",
+ notes = "Lists all blueprint models by a matching keyword in any of the meta-data of the blueprint models. " +
+ "Blueprint models are just returned if a whole keyword is matching, not just parts of it. Not case-sensitive. " +
+ "Used by CDS UI."
+ )
@ResponseBody
@PreAuthorize("hasRole('USER')")
- suspend fun allBlueprintModelMetaData(@NotNull @PathVariable(value = "keyword") keyWord: String): List<BlueprintModelSearch> =
+ suspend fun allBlueprintModelMetaData(
+ @NotNull
+ @ApiParam(value = "Keyword to search for in blueprint model meta-data", required = true, example = "pnf_netconf")
+ @PathVariable(value = "keyword") keyWord: String
+ ): List<BlueprintModelSearch> =
mdcWebCoroutineScope {
bluePrintModelHandler.searchBluePrintModelsByKeyWord(keyWord)
}
@GetMapping("/paged/meta-data/{keyword}", produces = [MediaType.APPLICATION_JSON_VALUE])
+ @ApiOperation(
+ value = "Search for Blueprints by a Keyword in an ordered mode",
+ notes = "Lists all blueprint models by a matching keyword in any of the meta-data of the blueprint models in an ordered mode. " +
+ "Blueprint models are just returned if a whole keyword is matching, not just parts of it. Not case-sensitive. " +
+ "Used by CDS UI."
+ )
@ResponseBody
@PreAuthorize("hasRole('USER')")
fun allBlueprintModelMetaDataPaged(
+ @ApiParam(value = "Keyword to search for in blueprint model meta-data", required = true, example = "pnf_netconf")
@NotNull @PathVariable(value = "keyword") keyWord: String,
- @RequestParam(defaultValue = "20") limit: Int,
- @RequestParam(defaultValue = "0") offset: Int,
- @RequestParam(defaultValue = "DATE") sort: BlueprintSortByOption,
- @RequestParam(defaultValue = "ASC") sortType: String
+ @ApiParam(value = "Maximum number of returned blueprint models") @RequestParam(defaultValue = "20") limit: Int,
+ @ApiParam(value = "Offset") @RequestParam(defaultValue = "0") offset: Int,
+ @ApiParam(value = "Order of returned blueprint models") @RequestParam(defaultValue = "DATE") sort: BlueprintSortByOption,
+ @ApiParam(value = "Ascend or descend ordering") @RequestParam(defaultValue = "ASC") sortType: String
): Page<BlueprintModelSearch> {
val pageRequest = PageRequest.of(
offset, limit,
@@ -125,19 +186,38 @@ open class BlueprintModelController(private val bluePrintModelHandler: BluePrint
}
@DeleteMapping("/{id}")
+ @ApiOperation(
+ value = "Delete a Blueprint Model by ID",
+ notes = "Delete a blueprint model by its ID. ID is the internally created ID of blueprint, not the name of blueprint."
+ )
+ @ApiResponses(
+ ApiResponse(code = 200, message = "OK"),
+ ApiResponse(code = 404, message = "RESOURCE_NOT_FOUND")
+ )
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
- suspend fun deleteBlueprint(@PathVariable(value = "id") id: String) = mdcWebCoroutineScope {
+ suspend fun deleteBlueprint(
+ @ApiParam(value = "ID of the blueprint model to delete", required = true, example = "67ec1f96-ab55-4b81-aff9-23ee0ed1d7a4")
+ @PathVariable(value = "id") id: String
+ ) = mdcWebCoroutineScope {
bluePrintModelHandler.deleteBlueprintModel(id)
}
@GetMapping("/by-name/{name}/version/{version}", produces = [MediaType.APPLICATION_JSON_VALUE])
+ @ApiOperation(
+ value = "Get a Blueprint Model by Name and Version",
+ notes = "Get Meta-Data of a Blueprint Model by its name and version."
+ )
+ @ApiResponses(
+ ApiResponse(code = 200, message = "OK"),
+ ApiResponse(code = 404, message = "Not Found")
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
suspend fun getBlueprintByNameAndVersion(
- @PathVariable(value = "name") name: String,
- @PathVariable(value = "version") version: String
+ @ApiParam(value = "Name of the blueprint model", required = true, example = "pnf_netconf") @PathVariable(value = "name") name: String,
+ @ApiParam(value = "Version of the blueprint model", required = true, example = "1.0.0") @PathVariable(value = "version") version: String
): ResponseEntity<BlueprintModelSearch> = mdcWebCoroutineScope {
val bluePrintModel: BlueprintModelSearch? =
bluePrintModelHandler.getBlueprintModelSearchByNameAndVersion(name, version)
@@ -148,29 +228,59 @@ open class BlueprintModelController(private val bluePrintModelHandler: BluePrint
}
@GetMapping("/download/by-name/{name}/version/{version}", produces = [MediaType.APPLICATION_JSON_VALUE])
+ @ApiOperation(
+ value = "Download a Blueprint Model",
+ notes = "Gets the CBA of a blueprint model by its name and version. Response can be saved to a file to download the CBA."
+ )
+ @ApiResponses(
+ ApiResponse(code = 200, message = "OK"),
+ ApiResponse(code = 404, message = "Not Found")
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
suspend fun downloadBlueprintByNameAndVersion(
- @PathVariable(value = "name") name: String,
- @PathVariable(value = "version") version: String
+ @ApiParam(value = "Name of the blueprint model", required = true, example = "pnf_netconf") @PathVariable(value = "name") name: String,
+ @ApiParam(value = "Version of the blueprint model", required = true, example = "1.0.0") @PathVariable(value = "version") version: String
): ResponseEntity<Resource> = mdcWebCoroutineScope {
bluePrintModelHandler.downloadBlueprintModelFileByNameAndVersion(name, version)
}
@GetMapping("/{id}", produces = [MediaType.APPLICATION_JSON_VALUE])
+ @ApiOperation(
+ value = "Get a Blueprint Model by ID",
+ notes = "Get meta-data of a blueprint model by its internally created ID."
+ )
+ @ApiResponses(
+ ApiResponse(code = 200, message = "OK"),
+ ApiResponse(code = 404, message = "Not Found")
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
- suspend fun getBlueprintModel(@PathVariable(value = "id") id: String): BlueprintModelSearch = mdcWebCoroutineScope {
+ suspend fun getBlueprintModel(
+ @ApiParam(value = "ID of the blueprint model to search for", required = true, example = "67ec1f96-ab55-4b81-aff9-23ee0ed1d7a4")
+ @PathVariable(value = "id") id: String
+ ): BlueprintModelSearch = mdcWebCoroutineScope {
bluePrintModelHandler.getBlueprintModelSearch(id)
}
@GetMapping("/download/{id}", produces = [MediaType.APPLICATION_JSON_VALUE])
+ @ApiOperation(
+ value = "Download a Blueprint Model by ID",
+ notes = "Gets the CBA of a blueprint model by its ID. Response can be saved to a file to download the CBA."
+ )
+ @ApiResponses(
+ ApiResponse(code = 200, message = "OK"),
+ ApiResponse(code = 404, message = "Not Found")
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
- suspend fun downloadBluePrint(@PathVariable(value = "id") id: String): ResponseEntity<Resource> =
+ suspend fun downloadBluePrint(
+ @ApiParam(value = "ID of the blueprint model to download", required = true, example = "67ec1f96-ab55-4b81-aff9-23ee0ed1d7a4")
+ @PathVariable(value = "id") id: String
+ ): ResponseEntity<Resource> =
mdcWebCoroutineScope {
bluePrintModelHandler.downloadBlueprintModelFile(id)
}
@@ -182,10 +292,18 @@ open class BlueprintModelController(private val bluePrintModelHandler: BluePrint
.MULTIPART_FORM_DATA_VALUE
]
)
+ @ApiOperation(
+ value = "Enrich a Blueprint Model",
+ notes = "Enriches the attached CBA and returns the enriched CBA zip file in the response. " +
+ "The enrichment process will complete the package by providing all the definition of types used."
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
- suspend fun enrichBlueprint(@RequestPart("file") file: FilePart): ResponseEntity<Resource> = mdcWebCoroutineScope {
+ suspend fun enrichBlueprint(
+ @ApiParam(name = "file", value = "CBA zip file to be uploaded (example: cba_unenriched.zip)", required = true)
+ @RequestPart("file") file: FilePart
+ ): ResponseEntity<Resource> = mdcWebCoroutineScope {
bluePrintModelHandler.enrichBlueprint(file)
}
@@ -196,41 +314,68 @@ open class BlueprintModelController(private val bluePrintModelHandler: BluePrint
.MULTIPART_FORM_DATA_VALUE
]
)
+ @ApiOperation(
+ value = "Enrich and publish a Blueprint Model",
+ notes = "Enriches the attached CBA, validates it and saves it in CDS if validation was successful."
+ )
+ @ApiResponses(
+ ApiResponse(code = 200, message = "OK"),
+ ApiResponse(code = 503, message = "Service Unavailable")
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
- suspend fun enrichAndPubishlueprint(@RequestPart("file") file: FilePart): BlueprintModelSearch = mdcWebCoroutineScope {
+ suspend fun enrichAndPubishlueprint(
+ @ApiParam(name = "file", value = "Unenriched CBA zip file to be uploaded (example: cba_unenriched.zip)", required = true)
+ @RequestPart("file") file: FilePart
+ ): BlueprintModelSearch = mdcWebCoroutineScope {
bluePrintModelHandler.enrichAndPublishBlueprint(file)
}
- @PostMapping("/publish", produces = [MediaType.APPLICATION_JSON_VALUE])
+ @PostMapping("/publish", produces = [MediaType.APPLICATION_JSON_VALUE], consumes = [MediaType.MULTIPART_FORM_DATA_VALUE])
+ @ApiOperation(
+ value = "Publish a Blueprint Model",
+ notes = "Validates the attached CBA file and saves it in CDS if validation was successful. CBA needs to be already enriched."
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
- suspend fun publishBlueprint(@RequestPart("file") file: FilePart): BlueprintModelSearch = mdcWebCoroutineScope {
+ suspend fun publishBlueprint(
+ @ApiParam(name = "file", value = "Enriched CBA zip file to be uploaded (example: cba_enriched.zip)", required = true)
+ @RequestPart("file") file: FilePart
+ ): BlueprintModelSearch = mdcWebCoroutineScope {
bluePrintModelHandler.publishBlueprint(file)
}
@GetMapping("/search/{tags}", produces = [MediaType.APPLICATION_JSON_VALUE])
+ @ApiOperation(
+ value = "Search for a Blueprint by Tag",
+ notes = "Searches for all blueprint models which contain the specified input parameter in their tags. " +
+ "Blueprint models which contain just parts of the searched word in their tags are also returned."
+ )
@ResponseBody
@PreAuthorize("hasRole('USER')")
- suspend fun searchBlueprintModels(@PathVariable(value = "tags") tags: String): List<BlueprintModelSearch> =
+ suspend fun searchBlueprintModels(
+ @ApiParam(value = "Tag to search for", example = "test", required = true)
+ @PathVariable(value = "tags") tags: String
+ ): List<BlueprintModelSearch> =
mdcWebCoroutineScope {
bluePrintModelHandler.searchBlueprintModels(tags)
}
@DeleteMapping("/name/{name}/version/{version}")
@ApiOperation(
- value = "Delete a CBA",
- notes = "Delete the CBA package identified by its name and version.",
- nickname = "BlueprintModelController_deleteBlueprint_1_DELETE.org.onap.ccsdk.cds.blueprintsprocessor.designer.api",
+ value = "Delete a Blueprint Model by Name",
+ notes = "Deletes a blueprint model identified by its name and version from CDS.",
+ // to avoid duplicate operation IDs
+ nickname = "BlueprintModelController_deleteBlueprintByName_DELETE.org.onap.ccsdk.cds.blueprintsprocessor.designer.api",
produces = MediaType.APPLICATION_JSON_VALUE
)
@PreAuthorize("hasRole('USER')")
suspend fun deleteBlueprint(
- @ApiParam(value = "Name of the CBA.", required = true)
+ @ApiParam(value = "Name of the blueprint model", required = true, example = "pnf_netconf")
@PathVariable(value = "name") name: String,
- @ApiParam(value = "Version of the CBA.", required = true)
+ @ApiParam(value = "Version of the blueprint model", required = true, example = "1.0.0")
@PathVariable(value = "version") version: String
) = mdcWebCoroutineScope {
bluePrintModelHandler.deleteBlueprintModel(name, version)
@@ -244,6 +389,11 @@ open class BlueprintModelController(private val bluePrintModelHandler: BluePrint
),
consumes = arrayOf(MediaType.APPLICATION_JSON_VALUE)
)
+ @ApiOperation(
+ value = "Get Workflow Specification",
+ notes = "Get the workflow of a blueprint identified by Blueprint and workflow name. " +
+ "Inputs, outputs and data types of workflow is returned."
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
@@ -256,18 +406,21 @@ open class BlueprintModelController(private val bluePrintModelHandler: BluePrint
@GetMapping(
path = arrayOf(
- "/workflows/blueprint-name/{name}/version/{version" +
- "}"
+ "/workflows/blueprint-name/{name}/version/{version}"
),
produces = arrayOf(MediaType.APPLICATION_JSON_VALUE)
)
+ @ApiOperation(
+ value = "Get Workflows of a Blueprint",
+ notes = "Get all available workflows of a Blueprint identified by its name and version."
+ )
@ResponseBody
@Throws(BluePrintException::class)
@PreAuthorize("hasRole('USER')")
suspend fun getWorkflowList(
- @ApiParam(value = "Name of the CBA.", required = true)
+ @ApiParam(value = "Name of the blueprint model", example = "pnf_netconf", required = true)
@PathVariable(value = "name") name: String,
- @ApiParam(value = "Version of the CBA.", required = true)
+ @ApiParam(value = "Version of the blueprint model", example = "1.0.0", required = true)
@PathVariable(value = "version") version: String
): ResponseEntity<String> = mdcWebCoroutineScope {
var json = bluePrintModelHandler.getWorkflowNames(name, version)
diff --git a/ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/DesignerApiData.kt b/ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/DesignerApiData.kt
index 1d32b9493..741a9115c 100644
--- a/ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/DesignerApiData.kt
+++ b/ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/DesignerApiData.kt
@@ -17,6 +17,8 @@
package org.onap.ccsdk.cds.blueprintsprocessor.designer.api
+import io.swagger.annotations.ApiModel
+import io.swagger.annotations.ApiModelProperty
import org.onap.ccsdk.cds.blueprintsprocessor.designer.api.domain.ResourceDictionary
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants.DATA_TYPE_JSON
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants.DEFAULT_VERSION_NUMBER
@@ -27,8 +29,11 @@ import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceAssignment
class BootstrapRequest {
+ @ApiModelProperty(value = "Specifies if default model types should be loaded", example = "true", required = true)
var loadModelType: Boolean = false
+ @ApiModelProperty(value = "Specifies if default data dictionaries should be loaded", example = "true", required = true)
var loadResourceDictionary: Boolean = false
+ @ApiModelProperty(value = "Specifies if default blueprint models should be loaded", example = "true", required = true)
var loadCBA: Boolean = false
}
@@ -39,11 +44,14 @@ class WorkFlowsResponse {
var workflows: MutableSet<String> = mutableSetOf()
}
+@ApiModel
class WorkFlowSpecRequest {
+ @ApiModelProperty(value = "Name of the BLueprint", example = "\"pnf_netconf\"", required = true)
lateinit var blueprintName: String
var version: String = DEFAULT_VERSION_NUMBER
var returnContent: String = DATA_TYPE_JSON
+ @ApiModelProperty(value = "Name of the Workflow", example = "\"config-assign\"", required = true)
lateinit var workflowName: String
var specType: String = TOSCA_SPEC
}