Revert "Renaming Files having BluePrint to have Blueprint"
[ccsdk/cds.git] / ms / blueprintsprocessor / modules / blueprints / blueprint-validation / src / main / kotlin / org / onap / ccsdk / cds / controllerblueprints / validation / BluePrintTopologyTemplateValidatorImpl.kt
1 /*
2  * Copyright © 2017-2018 AT&T Intellectual Property.
3  * Modifications Copyright © 2018 IBM.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 package org.onap.ccsdk.cds.controllerblueprints.validation
19
20 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException
21 import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeTemplate
22 import org.onap.ccsdk.cds.controllerblueprints.core.data.PropertyDefinition
23 import org.onap.ccsdk.cds.controllerblueprints.core.data.TopologyTemplate
24 import org.onap.ccsdk.cds.controllerblueprints.core.data.Workflow
25 import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintTopologyTemplateValidator
26 import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintTypeValidatorService
27 import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintRuntimeService
28 import org.slf4j.LoggerFactory
29 import org.springframework.beans.factory.config.ConfigurableBeanFactory
30 import org.springframework.context.annotation.Scope
31 import org.springframework.stereotype.Service
32
33 @Service("default-topology-template-validator")
34 @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
35 open class BluePrintTopologyTemplateValidatorImpl(private val bluePrintTypeValidatorService: BluePrintTypeValidatorService) :
36     BluePrintTopologyTemplateValidator {
37
38     private val log = LoggerFactory.getLogger(BluePrintServiceTemplateValidatorImpl::class.toString())
39
40     lateinit var bluePrintRuntimeService: BluePrintRuntimeService<*>
41
42     override fun validate(bluePrintRuntimeService: BluePrintRuntimeService<*>, name: String, topologyTemplate: TopologyTemplate) {
43         log.trace("Validating Topology Template..")
44         this.bluePrintRuntimeService = bluePrintRuntimeService
45
46         // Validate Inputs
47         topologyTemplate.inputs?.let { validateInputs(topologyTemplate.inputs!!) }
48         // Validate Node Templates
49         topologyTemplate.nodeTemplates?.let { validateNodeTemplates(topologyTemplate.nodeTemplates!!) }
50         // Validate Workflow
51         topologyTemplate.workflows?.let { validateWorkflows(topologyTemplate.workflows!!) }
52     }
53
54     @Throws(BluePrintException::class)
55     fun validateInputs(inputs: MutableMap<String, PropertyDefinition>) {
56         bluePrintTypeValidatorService.validatePropertyDefinitions(bluePrintRuntimeService, inputs)
57     }
58
59     @Throws(BluePrintException::class)
60     fun validateNodeTemplates(nodeTemplates: MutableMap<String, NodeTemplate>) {
61
62         nodeTemplates.forEach { nodeTemplateName, nodeTemplate ->
63             // Validate Single Node Template
64             bluePrintTypeValidatorService.validateNodeTemplate(bluePrintRuntimeService, nodeTemplateName, nodeTemplate)
65         }
66     }
67
68     @Throws(BluePrintException::class)
69     open fun validateWorkflows(workflows: MutableMap<String, Workflow>) {
70
71         workflows.forEach { workflowName, workflow ->
72             // Validate Single workflow
73             bluePrintTypeValidatorService.validateWorkflow(bluePrintRuntimeService, workflowName, workflow)
74         }
75     }
76 }