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>
}
@JsonProperty(value = "property")
var property: PropertyDefinition? = null
+ @JsonProperty(value = "max-occurrence")
+ var maxOccurrence: Int? = null
+
@JsonProperty("input-param")
var inputParameter: Boolean = false
@JsonProperty("dependencies")
var dependencies: MutableList<String>? = null
+ @JsonProperty("templating-constants")
+ var templatingConstants: MutableMap<String, String>? = null
+
@JsonProperty("version")
var version: Int = 0
@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 """
[
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)
interface ResourceSource : Serializable
open class ResourceSourceMapping {
+
lateinit var resourceSourceMappings: MutableMap<String, String>
}