From 319c2cade9f26ddfab56ff8819dac23d9e965f79 Mon Sep 17 00:00:00 2001 From: "Muthuramalingam, Brinda Santh(bs2796)" Date: Thu, 23 Aug 2018 17:33:38 +0000 Subject: Controller Blueprints Microservice Implement Controller Blueprint Meta File format and Meta names such as template_name, template_version, template_author Change-Id: Id221bb9cb0f9e382e3d59d4e309002de1ceb112b Issue-ID: CCSDK-458 Signed-off-by: Muthuramalingam, Brinda Santh(bs2796) --- .../core/service/BluePrintValidatorService.kt | 43 +++++++++-------- .../blueprints/vrr-test/Definitions/vrr-test.json | 1 + .../validator/ServiceTemplateValidator.java | 13 +---- .../service/common/SchemaGeneratorServiceTest.java | 2 +- .../common/ServiceTemplateValidationTest.java | 56 ---------------------- .../validator/ServiceTemplateValidationTest.java | 51 ++++++++++++++++++++ .../test/resources/enhance/enhance-template.json | 1 + .../test/resources/enhance/enhanced-template.json | 1 + 8 files changed, 81 insertions(+), 87 deletions(-) delete mode 100644 ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/common/ServiceTemplateValidationTest.java create mode 100644 ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/validator/ServiceTemplateValidationTest.java (limited to 'ms') diff --git a/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintValidatorService.kt b/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintValidatorService.kt index 2383a652..973e3de1 100644 --- a/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintValidatorService.kt +++ b/ms/controllerblueprints/modules/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/service/BluePrintValidatorService.kt @@ -47,7 +47,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { lateinit var serviceTemplate: ServiceTemplate lateinit var properties: MutableMap var message: StringBuilder = StringBuilder() - val seperator: String = "/" + private val separator: String = BluePrintConstants.PATH_DIVIDER var paths: MutableList = arrayListOf() @Throws(BluePrintException::class) @@ -68,22 +68,27 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { serviceTemplate.nodeTypes?.let { validateNodeTypes(serviceTemplate.nodeTypes!!) } serviceTemplate.topologyTemplate?.let { validateTopologyTemplate(serviceTemplate.topologyTemplate!!) } } catch (e: Exception) { - logger.error("validation failed in the path : {}", paths.joinToString(seperator), e) + logger.error("validation failed in the path : {}", paths.joinToString(separator), e) logger.error("validation trace message :{} ", message) throw BluePrintException(e, format("failed to validate blueprint on path ({}) with message {}" - , paths.joinToString(seperator), e.message)) + , paths.joinToString(separator), e.message)) } } @Throws(BluePrintException::class) open fun validateMetadata(metaDataMap: MutableMap) { paths.add("metadata") - Preconditions.checkArgument(StringUtils.isNotBlank(metaDataMap[BluePrintConstants.METADATA_TEMPLATE_NAME]), "failed to get template name metadata") - Preconditions.checkArgument(StringUtils.isNotBlank(metaDataMap[BluePrintConstants.METADATA_TEMPLATE_VERSION]), "failed to get template version metadata") - Preconditions.checkArgument(StringUtils.isNotBlank(metaDataMap[BluePrintConstants.METADATA_TEMPLATE_TAGS]), "failed to get template tags metadata") - Preconditions.checkArgument(StringUtils.isNotBlank(metaDataMap[BluePrintConstants.METADATA_TEMPLATE_AUTHOR]), "failed to get template author metadata") - Preconditions.checkArgument(StringUtils.isNotBlank(metaDataMap[BluePrintConstants.METADATA_USER_GROUPS]), "failed to get user groups metadata") + + val templateName = metaDataMap[BluePrintConstants.METADATA_TEMPLATE_NAME] + val templateVersion = metaDataMap[BluePrintConstants.METADATA_TEMPLATE_VERSION] + val templateTags = metaDataMap[BluePrintConstants.METADATA_TEMPLATE_TAGS] + val templateAuthor = metaDataMap[BluePrintConstants.METADATA_TEMPLATE_AUTHOR] + + Preconditions.checkArgument(StringUtils.isNotBlank(templateName), "failed to get template name metadata") + Preconditions.checkArgument(StringUtils.isNotBlank(templateVersion), "failed to get template version metadata") + Preconditions.checkArgument(StringUtils.isNotBlank(templateTags), "failed to get template tags metadata") + Preconditions.checkArgument(StringUtils.isNotBlank(templateAuthor), "failed to get template author metadata") paths.removeAt(paths.lastIndex) } @@ -92,7 +97,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { paths.add("artifact_types") artifactTypes.forEach { artifactName, artifactType -> paths.add(artifactName) - message.appendln("--> Artifact Type :" + paths.joinToString(seperator)) + message.appendln("--> Artifact Type :" + paths.joinToString(separator)) artifactType.properties?.let { validatePropertyDefinitions(artifactType.properties!!) } paths.removeAt(paths.lastIndex) } @@ -104,7 +109,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { paths.add("dataTypes") dataTypes.forEach { dataTypeName, dataType -> paths.add(dataTypeName) - message.appendln("--> Data Type :" + paths.joinToString(seperator)) + message.appendln("--> Data Type :" + paths.joinToString(separator)) dataType.properties?.let { validatePropertyDefinitions(dataType.properties!!) } paths.removeAt(paths.lastIndex) } @@ -124,7 +129,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { @Throws(BluePrintException::class) open fun validateNodeType(nodeTypeName: String, nodeType: NodeType) { paths.add(nodeTypeName) - message.appendln("--> Node Type :" + paths.joinToString(seperator)) + message.appendln("--> Node Type :" + paths.joinToString(separator)) val derivedFrom: String = nodeType.derivedFrom //Check Derived From checkValidNodeTypesDerivedFrom(derivedFrom) @@ -147,7 +152,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { @Throws(BluePrintException::class) open fun validateInputs(inputs: MutableMap) { paths.add("inputs") - message.appendln("---> Input :" + paths.joinToString(seperator)) + message.appendln("---> Input :" + paths.joinToString(separator)) validatePropertyDefinitions(inputs) paths.removeAt(paths.lastIndex) } @@ -164,7 +169,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { @Throws(BluePrintException::class) open fun validateNodeTemplate(nodeTemplateName : String, nodeTemplate: NodeTemplate) { paths.add(nodeTemplateName) - message.appendln("---> Node Template :" + paths.joinToString(seperator)) + message.appendln("---> Node Template :" + paths.joinToString(separator)) val type: String = nodeTemplate.type val nodeType: NodeType = serviceTemplate.nodeTypes?.get(type) @@ -192,12 +197,12 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { @Throws(BluePrintException::class) open fun validateWorkFlow(workflowName:String, workflow: Workflow) { paths.add(workflowName) - message.appendln("---> Workflow :" + paths.joinToString(seperator)) + message.appendln("---> Workflow :" + paths.joinToString(separator)) // Step Validation Start paths.add("steps") workflow.steps?.forEach { stepName, step -> paths.add(stepName) - message.appendln("----> Steps :" + paths.joinToString(seperator)) + message.appendln("----> Steps :" + paths.joinToString(separator)) paths.removeAt(paths.lastIndex) } paths.removeAt(paths.lastIndex) @@ -220,7 +225,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { } else { checkPropertyDataType(dataType, propertyName) } - message.appendln("property " + paths.joinToString(seperator) + " of type " + dataType) + message.appendln("property " + paths.joinToString(separator) + " of type " + dataType) paths.removeAt(paths.lastIndex) } paths.removeAt(paths.lastIndex) @@ -245,7 +250,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { paths.add("artifacts") artifacts.forEach { artifactName, artifactDefinition -> paths.add(artifactName) - message.appendln("Validating artifact " + paths.joinToString(seperator)) + message.appendln("Validating artifact " + paths.joinToString(separator)) val type: String = artifactDefinition.type ?: throw BluePrintException("type is missing for artifact definition :" + artifactName) // Check Artifact Type @@ -279,7 +284,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { paths.add("interfaces") interfaces.forEach { interfaceName, interfaceDefinition -> paths.add(interfaceName) - message.appendln("Validating : " + paths.joinToString(seperator)) + message.appendln("Validating : " + paths.joinToString(separator)) interfaceDefinition.operations?.let { validateOperationDefinitions(interfaceDefinition.operations!!) } paths.removeAt(paths.lastIndex) } @@ -291,7 +296,7 @@ open class BluePrintValidatorDefaultService : BluePrintValidatorService { paths.add("operations") operations.forEach { opertaionName, operationDefinition -> paths.add(opertaionName) - message.appendln("Validating : " + paths.joinToString(seperator)) + message.appendln("Validating : " + paths.joinToString(separator)) operationDefinition.implementation?.let { validateImplementation(operationDefinition.implementation!!) } operationDefinition.inputs?.let { validatePropertyDefinitions(operationDefinition.inputs!!) } operationDefinition.outputs?.let { validatePropertyDefinitions(operationDefinition.outputs!!) } diff --git a/ms/controllerblueprints/modules/service/load/blueprints/vrr-test/Definitions/vrr-test.json b/ms/controllerblueprints/modules/service/load/blueprints/vrr-test/Definitions/vrr-test.json index 626329ac..d71dd201 100644 --- a/ms/controllerblueprints/modules/service/load/blueprints/vrr-test/Definitions/vrr-test.json +++ b/ms/controllerblueprints/modules/service/load/blueprints/vrr-test/Definitions/vrr-test.json @@ -3,6 +3,7 @@ "template_author": "Brinda Santh ( bs2796@onap.com )", "template_name": "vrr-test", "template_version": "1.0.0", + "template_tags" : "brinda, VRR", "release": "201802", "service-type": "AVPN", "vnf-type": "VRR" diff --git a/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/validator/ServiceTemplateValidator.java b/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/validator/ServiceTemplateValidator.java index ea46f3ad..430401bc 100644 --- a/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/validator/ServiceTemplateValidator.java +++ b/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/validator/ServiceTemplateValidator.java @@ -77,7 +77,7 @@ public class ServiceTemplateValidator extends BluePrintValidatorDefaultService { /** * This is a getMetaData to get the key information during the * - * @return Map */ public Map getMetaData() { @@ -88,18 +88,9 @@ public class ServiceTemplateValidator extends BluePrintValidatorDefaultService { public void validateMetadata(@NotNull Map metaDataMap) throws BluePrintException { Preconditions.checkNotNull(serviceTemplate.getMetadata(), "Service Template Metadata Information is missing."); + super.validateMetadata(metaDataMap); this.metaData.putAll(serviceTemplate.getMetadata()); - - String author = serviceTemplate.getMetadata().get(BluePrintConstants.METADATA_TEMPLATE_AUTHOR); - String serviceTemplateName = - serviceTemplate.getMetadata().get(BluePrintConstants.METADATA_TEMPLATE_NAME); - String serviceTemplateVersion = - serviceTemplate.getMetadata().get(BluePrintConstants.METADATA_TEMPLATE_VERSION); - - Preconditions.checkArgument(StringUtils.isNotBlank(author), "Template Metadata (author) Information is missing."); - Preconditions.checkArgument(StringUtils.isNotBlank(serviceTemplateName), "Template Metadata (service-template-name) Information is missing."); - Preconditions.checkArgument(StringUtils.isNotBlank(serviceTemplateVersion), "Template Metadata (service-template-version) Information is missing."); } diff --git a/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/common/SchemaGeneratorServiceTest.java b/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/common/SchemaGeneratorServiceTest.java index 50e94df9..f846e9a1 100644 --- a/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/common/SchemaGeneratorServiceTest.java +++ b/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/common/SchemaGeneratorServiceTest.java @@ -32,7 +32,7 @@ import java.nio.charset.Charset; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class SchemaGeneratorServiceTest { - private static Logger log = LoggerFactory.getLogger(ServiceTemplateValidationTest.class); + private static Logger log = LoggerFactory.getLogger(SchemaGeneratorServiceTest.class); @Test public void test01GenerateSwaggerData() throws Exception { diff --git a/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/common/ServiceTemplateValidationTest.java b/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/common/ServiceTemplateValidationTest.java deleted file mode 100644 index af309e21..00000000 --- a/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/common/ServiceTemplateValidationTest.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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.service.common; - - -import org.apache.commons.io.IOUtils; -import org.junit.Assert; -import org.junit.Test; -import org.onap.ccsdk.apps.controllerblueprints.service.utils.ConfigModelUtils; -import org.onap.ccsdk.apps.controllerblueprints.service.validator.ServiceTemplateValidator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.nio.charset.Charset; -import java.util.List; - -public class ServiceTemplateValidationTest { - private static Logger log = LoggerFactory.getLogger(ServiceTemplateValidationTest.class); - - @Test - public void testBluePrintDirs(){ - List dirs = ConfigModelUtils.getBlueprintNames("load/blueprints"); - Assert.assertNotNull("Failed to get blueprint directories", dirs ); - Assert.assertEquals("Failed to get actual directories",2, dirs.size() ); - } - - // @Test - public void validateServiceTemplate() { - try { - String file = "load/service_template/vrr-201806-test/service-template.json"; - String serviceTemplateContent = - IOUtils.toString(ServiceTemplateValidationTest.class.getClassLoader().getResourceAsStream(file), - Charset.defaultCharset()); - ServiceTemplateValidator serviceTemplateValidator = new ServiceTemplateValidator(); - serviceTemplateValidator.validateServiceTemplate(serviceTemplateContent); - log.info("Validated Service Template " + serviceTemplateValidator.getMetaData()); - - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/validator/ServiceTemplateValidationTest.java b/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/validator/ServiceTemplateValidationTest.java new file mode 100644 index 00000000..557c6dd8 --- /dev/null +++ b/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/validator/ServiceTemplateValidationTest.java @@ -0,0 +1,51 @@ +/* + * 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.service.validator; + + +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Test; +import org.onap.ccsdk.apps.controllerblueprints.service.utils.ConfigModelUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.nio.charset.Charset; +import java.util.List; + +public class ServiceTemplateValidationTest { + private static Logger log = LoggerFactory.getLogger(ServiceTemplateValidationTest.class); + + @Test + public void testBluePrintDirs() { + List dirs = ConfigModelUtils.getBlueprintNames("load/blueprints"); + Assert.assertNotNull("Failed to get blueprint directories", dirs); + Assert.assertEquals("Failed to get actual directories", 2, dirs.size()); + } + + @Test + public void validateServiceTemplate() throws Exception { + String file = "load/blueprints/baseconfiguration/Definitions/activation-blueprint.json"; + String serviceTemplateContent = + FileUtils.readFileToString(new File(file), Charset.defaultCharset()); + ServiceTemplateValidator serviceTemplateValidator = new ServiceTemplateValidator(); + serviceTemplateValidator.validateServiceTemplate(serviceTemplateContent); + Assert.assertNotNull("Failed to validate blueprints", serviceTemplateValidator); + } +} diff --git a/ms/controllerblueprints/modules/service/src/test/resources/enhance/enhance-template.json b/ms/controllerblueprints/modules/service/src/test/resources/enhance/enhance-template.json index 8b4fd9d3..a4ba930e 100644 --- a/ms/controllerblueprints/modules/service/src/test/resources/enhance/enhance-template.json +++ b/ms/controllerblueprints/modules/service/src/test/resources/enhance/enhance-template.json @@ -3,6 +3,7 @@ "template_author": "Brinda Santh", "template_name": "enhance-template", "template_version": "1.0.0", + "template_tags": "brinda, VPE", "service-type": "Sample Service", "release": "1806", "vnf-type": "VPE" diff --git a/ms/controllerblueprints/modules/service/src/test/resources/enhance/enhanced-template.json b/ms/controllerblueprints/modules/service/src/test/resources/enhance/enhanced-template.json index 18f49925..e0033096 100644 --- a/ms/controllerblueprints/modules/service/src/test/resources/enhance/enhanced-template.json +++ b/ms/controllerblueprints/modules/service/src/test/resources/enhance/enhanced-template.json @@ -3,6 +3,7 @@ "template_author" : "Brinda Santh", "template_name" : "enhance-template", "template_version" : "1.0.0", + "template_tags" : "brinda, VPE", "service-type" : "Sample Service", "release" : "1806", "vnf-type" : "VPE" -- cgit 1.2.3-korg