Merge "TemplateResolutionService default #occurrence 0->1"
[ccsdk/cds.git] / ms / controllerblueprints / modules / blueprint-core / src / main / kotlin / org / onap / ccsdk / cds / controllerblueprints / core / dsl / BluePrintTemplateDSLBuilder.kt
index f19ae8e..93b6f4e 100644 (file)
@@ -32,6 +32,12 @@ class TopologyTemplateBuilder {
         nodeTemplates!![id] = NodeTemplateBuilder(id, type, description).apply(block).build()
     }
 
+    fun nodeTemplate(nodeTemplate: NodeTemplate) {
+        if (nodeTemplates == null)
+            nodeTemplates = hashMapOf()
+        nodeTemplates!![nodeTemplate.id!!] = nodeTemplate
+    }
+
     fun nodeTemplateOperation(nodeTemplateName: String, type: String, interfaceName: String, description: String,
                               operationBlock: OperationAssignmentBuilder.() -> Unit) {
         if (nodeTemplates == null)
@@ -48,6 +54,12 @@ class TopologyTemplateBuilder {
         workflows!![id] = WorkflowBuilder(id, description).apply(block).build()
     }
 
+    fun workflow(workflow: Workflow) {
+        if (workflows == null)
+            workflows = hashMapOf()
+        workflows!![workflow.id!!] = workflow
+    }
+
     //TODO("populate inputs, outputs")
     fun workflowNodeTemplate(actionName: String,
                              nodeTemplateType: String, description: String, block: NodeTemplateBuilder.() -> Unit) {
@@ -76,11 +88,18 @@ class NodeTemplateBuilder(private val id: String,
                           private val type: String,
                           private val description: String? = "") {
     private var nodeTemplate: NodeTemplate = NodeTemplate()
+    private var properties: MutableMap<String, JsonNode>? = null
     private var interfaces: MutableMap<String, InterfaceAssignment>? = null
     private var artifacts: MutableMap<String, ArtifactDefinition>? = null
     private var capabilities: MutableMap<String, CapabilityAssignment>? = null
     private var requirements: MutableMap<String, RequirementAssignment>? = null
 
+    fun properties(block: PropertiesAssignmentBuilder.() -> Unit) {
+        if (properties == null)
+            properties = hashMapOf()
+        properties = PropertiesAssignmentBuilder().apply(block).build()
+    }
+
     fun operation(interfaceName: String, description: String? = "",
                   block: OperationAssignmentBuilder.() -> Unit) {
         if (interfaces == null)
@@ -106,22 +125,35 @@ class NodeTemplateBuilder(private val id: String,
         artifacts!![id] = ArtifactDefinitionBuilder(id, type, file).apply(block).build()
     }
 
+    fun artifacts(artifacts: MutableMap<String, ArtifactDefinition>?) {
+        this.artifacts = artifacts
+    }
+
     fun capability(id: String, block: CapabilityAssignmentBuilder.() -> Unit) {
         if (capabilities == null)
             capabilities = hashMapOf()
         capabilities!![id] = CapabilityAssignmentBuilder(id).apply(block).build()
     }
 
+    fun capabilities(capabilities: MutableMap<String, CapabilityAssignment>?) {
+        this.capabilities = capabilities
+    }
+
     fun requirement(id: String, capability: String, node: String, relationship: String) {
         if (requirements == null)
             requirements = hashMapOf()
         requirements!![id] = RequirementAssignmentBuilder(id, capability, node, relationship).build()
     }
 
+    fun requirements(requirements: MutableMap<String, RequirementAssignment>?) {
+        this.requirements = requirements
+    }
+
     fun build(): NodeTemplate {
         nodeTemplate.id = id
         nodeTemplate.type = type
         nodeTemplate.description = description
+        nodeTemplate.properties = properties
         nodeTemplate.interfaces = interfaces
         nodeTemplate.artifacts = artifacts
         nodeTemplate.capabilities = capabilities
@@ -133,12 +165,27 @@ class NodeTemplateBuilder(private val id: String,
 class ArtifactDefinitionBuilder(private val id: String, private val type: String, private val file: String) {
 
     private var artifactDefinition: ArtifactDefinition = ArtifactDefinition()
-    // TODO()
+    private var properties: MutableMap<String, JsonNode>? = null
+
+    fun repository(repository: String) {
+        artifactDefinition.repository = repository
+    }
+
+    fun deployPath(deployPath: String) {
+        artifactDefinition.deployPath = deployPath
+    }
+
+    fun properties(block: PropertiesAssignmentBuilder.() -> Unit) {
+        if (properties == null)
+            properties = hashMapOf()
+        properties = PropertiesAssignmentBuilder().apply(block).build()
+    }
 
     fun build(): ArtifactDefinition {
         artifactDefinition.id = id
         artifactDefinition.type = type
         artifactDefinition.file = file
+        artifactDefinition.properties = properties
         return artifactDefinition
     }
 }
@@ -204,6 +251,10 @@ class OperationAssignmentBuilder(private val id: String,
 
     private var operationAssignment: OperationAssignment = OperationAssignment()
 
+    fun implementation(implementation: Implementation?) {
+        operationAssignment.implementation = implementation
+    }
+
     fun implementation(timeout: Int, operationHost: String? = BluePrintConstants.PROPERTY_SELF) {
         val implementation = Implementation().apply {
             this.operationHost = operationHost!!
@@ -212,10 +263,18 @@ class OperationAssignmentBuilder(private val id: String,
         operationAssignment.implementation = implementation
     }
 
+    fun inputs(inputs: MutableMap<String, JsonNode>?) {
+        operationAssignment.inputs = inputs
+    }
+
     fun inputs(block: PropertiesAssignmentBuilder.() -> Unit) {
         operationAssignment.inputs = PropertiesAssignmentBuilder().apply(block).build()
     }
 
+    fun outputs(outputs: MutableMap<String, JsonNode>?) {
+        operationAssignment.outputs = outputs
+    }
+
     fun outputs(block: PropertiesAssignmentBuilder.() -> Unit) {
         operationAssignment.outputs = PropertiesAssignmentBuilder().apply(block).build()
     }