aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintValidationError.kt29
-rw-r--r--components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/interfaces/BlueprintValidator.kt129
-rw-r--r--components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintContext.kt5
3 files changed, 163 insertions, 0 deletions
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintValidationError.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintValidationError.kt
new file mode 100644
index 00000000..3ec0691f
--- /dev/null
+++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/BluePrintValidationError.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.ccsdk.apps.controllerblueprints.core
+
+class BluePrintValidationError {
+ var errors: MutableList<String> = arrayListOf()
+
+ fun addError(type: String, name: String, error: String) {
+ this.errors.add("$type : $name : $error")
+ }
+
+ fun addError(error: String) {
+ this.errors.add(error)
+ }
+} \ No newline at end of file
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/interfaces/BlueprintValidator.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/interfaces/BlueprintValidator.kt
new file mode 100644
index 00000000..9407cfa1
--- /dev/null
+++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/interfaces/BlueprintValidator.kt
@@ -0,0 +1,129 @@
+package org.onap.ccsdk.apps.controllerblueprints.core.interfaces
+
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintValidationError
+import org.onap.ccsdk.apps.controllerblueprints.core.data.*
+import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintContext
+
+
+interface BluePrintValidator<T> {
+
+ fun validate(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, type: T)
+
+}
+
+
+interface BluePrintServiceTemplateValidator : BluePrintValidator<ServiceTemplate>
+
+interface BluePrintTopologyTemplateValidator : BluePrintValidator<TopologyTemplate>
+
+interface BluePrintArtifactTypeValidator : BluePrintValidator<ArtifactType>
+
+interface BluePrintDataTypeValidator : BluePrintValidator<DataType>
+
+interface BluePrintNodeTypeValidator : BluePrintValidator<NodeType>
+
+interface BluePrintNodeTemplateValidator : BluePrintValidator<NodeTemplate>
+
+interface BluePrintWorkflowValidator : BluePrintValidator<Workflow>
+
+interface BluePrintPropertyDefinitionValidator : BluePrintValidator<PropertyDefinition>
+
+interface BluePrintAttributeDefinitionValidator : BluePrintValidator<AttributeDefinition>
+
+/**
+ * Blueprint Validation Interface.
+ */
+interface BluePrintValidatorService {
+
+ @Throws(BluePrintException::class)
+ fun validateBluePrints(bluePrintContext: BluePrintContext, properties: MutableMap<String, Any>)
+}
+
+
+interface BluePrintTypeValidatorService {
+
+ fun getServiceTemplateValidators(): List<BluePrintServiceTemplateValidator>
+
+ fun getDataTypeValidators(): List<BluePrintDataTypeValidator>
+
+ fun getArtifactTypeValidators(): List<BluePrintArtifactTypeValidator>
+
+ fun getNodeTypeValidators(): List<BluePrintNodeTypeValidator>
+
+ fun getTopologyTemplateValidators(): List<BluePrintTopologyTemplateValidator>
+
+ fun getNodeTemplateValidators(): List<BluePrintNodeTemplateValidator>
+
+ fun getWorkflowValidators(): List<BluePrintWorkflowValidator>
+
+ fun getPropertyDefinitionValidators(): List<BluePrintPropertyDefinitionValidator>
+
+ fun getAttributeDefinitionValidators(): List<BluePrintAttributeDefinitionValidator>
+
+ fun validateServiceTemplate(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, serviceTemplate: ServiceTemplate) {
+ val validators = getServiceTemplateValidators()
+ doValidation(bluePrintContext, error, name, serviceTemplate, validators)
+ }
+
+ fun validateArtifactType(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, artifactType: ArtifactType) {
+ val validators = getArtifactTypeValidators()
+ doValidation(bluePrintContext, error, name, artifactType, validators)
+ }
+
+ fun validateDataType(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, dataType: DataType) {
+ val validators = getDataTypeValidators()
+ doValidation(bluePrintContext, error, name, dataType, validators)
+ }
+
+ fun validateNodeType(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, nodeType: NodeType) {
+ val validators = getNodeTypeValidators()
+ doValidation(bluePrintContext, error, name, nodeType, validators)
+ }
+
+ fun validateTopologyTemplate(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, topologyTemplate: TopologyTemplate) {
+ val validators = getTopologyTemplateValidators()
+ doValidation(bluePrintContext, error, name, topologyTemplate, validators)
+ }
+
+ fun validateNodeTemplate(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, nodeTemplate: NodeTemplate) {
+ val validators = getNodeTemplateValidators()
+ doValidation(bluePrintContext, error, name, nodeTemplate, validators)
+ }
+
+ fun validateWorkflow(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, workflow: Workflow) {
+ val validators = getWorkflowValidators()
+ doValidation(bluePrintContext, error, name, workflow, validators)
+ }
+
+ fun validatePropertyDefinitions(bluePrintContext: BluePrintContext, error: BluePrintValidationError, properties: MutableMap<String, PropertyDefinition>) {
+ properties.forEach { propertyName, propertyDefinition ->
+ validatePropertyDefinition(bluePrintContext, error, propertyName, propertyDefinition)
+ }
+ }
+
+ fun validatePropertyDefinition(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, propertyDefinition: PropertyDefinition) {
+ val validators = getPropertyDefinitionValidators()
+ doValidation(bluePrintContext, error, name, propertyDefinition, validators)
+ }
+
+ fun validateAttributeDefinitions(bluePrintContext: BluePrintContext, error: BluePrintValidationError, attributes: MutableMap<String, AttributeDefinition>) {
+ attributes.forEach { attributeName, attributeDefinition ->
+ validateAttributeDefinition(bluePrintContext, error, attributeName, attributeDefinition)
+ }
+ }
+
+ fun validateAttributeDefinition(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, attributeDefinition: AttributeDefinition) {
+ val validators = getAttributeDefinitionValidators()
+ doValidation(bluePrintContext, error, name, attributeDefinition, validators)
+ }
+
+ private fun <T> doValidation(bluePrintContext: BluePrintContext, error: BluePrintValidationError, name: String, definition: Any, validators: List<BluePrintValidator<T>>) {
+ validators.forEach {
+ it.validate(bluePrintContext, error, name, definition as T)
+ }
+ }
+}
+
+
+
diff --git a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintContext.kt b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintContext.kt
index f73fb727..cce6d904 100644
--- a/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintContext.kt
+++ b/components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintContext.kt
@@ -32,6 +32,11 @@ class BluePrintContext(val serviceTemplate: ServiceTemplate) {
private val log: EELFLogger = EELFManager.getInstance().getLogger(this::class.toString())
+ /**
+ * Blueprint CBA extracted file location
+ */
+ var rootPath = "."
+
val imports: List<ImportDefinition>? = serviceTemplate.imports
val metadata: MutableMap<String, String>? = serviceTemplate.metadata