Templating constants added to ResourceAssignment
[ccsdk/cds.git] / ms / blueprintsprocessor / modules / blueprints / resource-dict / src / main / kotlin / org / onap / ccsdk / cds / controllerblueprints / resource / dict / ResourceDefinition.kt
index a746aba..50330fa 100644 (file)
@@ -19,28 +19,38 @@ package org.onap.ccsdk.cds.controllerblueprints.resource.dict
 
 import com.fasterxml.jackson.annotation.JsonFormat
 import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.databind.JsonNode
+import io.swagger.annotations.ApiModel
+import io.swagger.annotations.ApiModelProperty
 import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeTemplate
 import org.onap.ccsdk.cds.controllerblueprints.core.data.PropertyDefinition
 import java.io.Serializable
 import java.util.Date
 
+@ApiModel
 open class ResourceDefinition {
 
     @JsonProperty(value = "name", required = true)
+    @ApiModelProperty(value = "Name", required = true, example = "\"default-source\"")
     lateinit var name: String
 
     @JsonProperty(value = "property", required = true)
+    @ApiModelProperty(value = "Property", required = true)
     lateinit var property: PropertyDefinition
 
     var tags: String? = null
 
-    @JsonProperty(value = "group")
-    lateinit var group: String
+    /** The default group for Resource Definition is "default" */
+    @JsonProperty(value = "group", required = true)
+    @ApiModelProperty(value = "Group", required = true, example = "\"default\"")
+    var group: String = "default"
 
     @JsonProperty(value = "updated-by")
+    @ApiModelProperty(value = "Updated by", required = true, example = "\"example@onap.com\"")
     lateinit var updatedBy: String
 
     @JsonProperty(value = "sources", required = true)
+    @ApiModelProperty(value = "Sources", required = true, example = "\"sources\"")
     lateinit var sources: MutableMap<String, NodeTemplate>
 }
 
@@ -52,6 +62,9 @@ open class ResourceAssignment {
     @JsonProperty(value = "property")
     var property: PropertyDefinition? = null
 
+    @JsonProperty(value = "max-occurrence")
+    var maxOccurrence: Int? = null
+
     @JsonProperty("input-param")
     var inputParameter: Boolean = false
 
@@ -70,6 +83,9 @@ open class ResourceAssignment {
     @JsonProperty("dependencies")
     var dependencies: MutableList<String>? = null
 
+    @JsonProperty("templating-constants")
+    var templatingConstants: MutableMap<String, String>? = null
+
     @JsonProperty("version")
     var version: Int = 0
 
@@ -86,6 +102,9 @@ open class ResourceAssignment {
     @JsonProperty("updated-by")
     var updatedBy: String? = null
 
+    /** input & output key-mapping with their resolved values **/
+    var keyIdentifiers: MutableList<KeyIdentifier> = mutableListOf()
+
     override fun toString(): String {
         return """
             [
@@ -96,10 +115,39 @@ open class ResourceAssignment {
                 dictionaryName = $dictionaryName
                 dictionarySource = $dictionarySource
             ]
-            """.trimIndent()
+        """.trimIndent()
     }
 }
 
+data class KeyIdentifier(val name: String, val value: JsonNode)
+data class DictionaryMetadataEntry(val name: String, val value: String)
+
+/**
+ * Data class for exposing summary of resource resolution
+ */
+data class ResolutionSummary(
+    val name: String,
+    val value: JsonNode,
+    val required: Boolean,
+    val type: String,
+    @JsonProperty("key-identifiers")
+    val keyIdentifiers: MutableList<KeyIdentifier>,
+    @JsonProperty("dictionary-description")
+    val dictionaryDescription: String,
+    @JsonProperty("dictionary-metadata")
+    val dictionaryMetadata: MutableList<DictionaryMetadataEntry>,
+    @JsonProperty("dictionary-name")
+    val dictionaryName: String,
+    @JsonProperty("dictionary-source")
+    val dictionarySource: String,
+    @JsonProperty("request-payload")
+    val requestPayload: JsonNode,
+    @JsonProperty("status")
+    val status: String,
+    @JsonProperty("message")
+    val message: String
+)
+
 /**
  * Interface for Source Definitions (ex Input Source,
  * Default Source, Database Source, Rest Sources, etc)
@@ -107,5 +155,6 @@ open class ResourceAssignment {
 interface ResourceSource : Serializable
 
 open class ResourceSourceMapping {
+
     lateinit var resourceSourceMappings: MutableMap<String, String>
 }