2 * Copyright © 2019 IBM.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution
19 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
20 import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeTemplate
21 import org.onap.ccsdk.cds.controllerblueprints.core.dsl.PropertyDefinitionBuilder
22 import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceDefinition
24 /** Resource Definition DSL **/
25 fun BluePrintTypes.resourceDefinition(name: String,
26 block: ResourceDefinitionBuilder.() -> Unit): ResourceDefinition {
27 return ResourceDefinitionBuilder(name).apply(block).build()
30 class ResourceDefinitionBuilder(private val name: String) {
31 private val resourceDefinition = ResourceDefinition()
33 fun updatedBy(updatedBy: String) {
34 resourceDefinition.updatedBy = updatedBy
37 fun tags(tags: String) {
38 resourceDefinition.tags = tags
41 fun property(id: String, type: String, required: Boolean, description: String? = "") {
42 resourceDefinition.property = PropertyDefinitionBuilder(id, type, required, description).build()
45 fun property(id: String, type: String, required: Boolean, description: String? = "",
46 block: PropertyDefinitionBuilder.() -> Unit) {
47 resourceDefinition.property = PropertyDefinitionBuilder(id, type, required, description).apply(block).build()
50 fun sources(block: ResourceDefinitionSourcesBuilder.() -> Unit) {
51 resourceDefinition.sources = ResourceDefinitionSourcesBuilder().apply(block).build()
54 fun sources(sources: MutableMap<String, NodeTemplate>) {
55 resourceDefinition.sources = sources
58 fun build(): ResourceDefinition {
59 resourceDefinition.name = name
60 return resourceDefinition
64 class ResourceDefinitionSourcesBuilder {
65 var sources: MutableMap<String, NodeTemplate> = hashMapOf()
67 fun source(source: NodeTemplate) {
68 sources[source.id!!] = source
71 fun sourceInput(id: String, description: String, block: SourceInputNodeTemplateBuilder.() -> Unit) {
72 sources[id] = SourceInputNodeTemplateBuilder(id, description).apply(block).build()
75 fun sourceDefault(id: String, description: String, block: SourceDefaultNodeTemplateBuilder.() -> Unit) {
76 sources[id] = SourceDefaultNodeTemplateBuilder(id, description).apply(block).build()
79 fun sourceDb(id: String, description: String, block: SourceDbNodeTemplateBuilder.() -> Unit) {
80 sources[id] = SourceDbNodeTemplateBuilder(id, description).apply(block).build()
83 fun sourceRest(id: String, description: String, block: SourceRestNodeTemplateBuilder.() -> Unit) {
84 sources[id] = SourceRestNodeTemplateBuilder(id, description).apply(block).build()
87 fun sourceCapability(id: String, description: String, block: SourceCapabilityNodeTemplateBuilder.() -> Unit) {
88 sources[id] = SourceCapabilityNodeTemplateBuilder(id, description).apply(block).build()
91 fun build(): MutableMap<String, NodeTemplate> {