From 88286a3487c3ec955cc6207be2e70318634ebbd9 Mon Sep 17 00:00:00 2001 From: Remigiusz Janeczek Date: Thu, 17 Dec 2020 18:20:12 +0100 Subject: Blueprint Generator - split executable part to separate submodule Issue-ID: DCAEGEN2-2529 Signed-off-by: Remigiusz Janeczek Change-Id: I0d6a4ac0f6bc8332b79ebcf5ac3bb4aee1c951c6 --- mod/bpgenerator/common/pom.xml | 4 +- mod/bpgenerator/onap-executable/pom.xml | 61 ++++ .../BlueprintGeneratorMainApplication.java | 113 +++++++ .../src/main/resources/application.properties | 26 ++ .../BlueprintJarComparatorTest.java | 129 ++++++++ .../test/resources/componentspecs/testImports.yaml | 4 + .../src/test/resources/componentspecs/ves.json | 337 +++++++++++++++++++++ mod/bpgenerator/onap/pom.xml | 27 +- .../BlueprintGeneratorConfiguration.java | 35 +++ .../BlueprintGeneratorMainApplication.java | 113 ------- .../service/common/ImportsService.java | 10 +- .../onap/src/main/resources/application.properties | 32 -- .../onap/src/main/resources/bpgen.properties | 32 ++ .../test/BlueprintGeneratorTests.java | 7 +- .../test/BlueprintJarComparatorTest.java | 179 ----------- mod/bpgenerator/pom.xml | 4 +- 16 files changed, 757 insertions(+), 356 deletions(-) create mode 100644 mod/bpgenerator/onap-executable/pom.xml create mode 100644 mod/bpgenerator/onap-executable/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorMainApplication.java create mode 100644 mod/bpgenerator/onap-executable/src/main/resources/application.properties create mode 100644 mod/bpgenerator/onap-executable/src/test/java/org/onap/blueprintgenerator/BlueprintJarComparatorTest.java create mode 100644 mod/bpgenerator/onap-executable/src/test/resources/componentspecs/testImports.yaml create mode 100644 mod/bpgenerator/onap-executable/src/test/resources/componentspecs/ves.json create mode 100644 mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorConfiguration.java delete mode 100644 mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorMainApplication.java delete mode 100644 mod/bpgenerator/onap/src/main/resources/application.properties create mode 100644 mod/bpgenerator/onap/src/main/resources/bpgen.properties delete mode 100644 mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/test/BlueprintJarComparatorTest.java (limited to 'mod') diff --git a/mod/bpgenerator/common/pom.xml b/mod/bpgenerator/common/pom.xml index a0078c2..cae390f 100644 --- a/mod/bpgenerator/common/pom.xml +++ b/mod/bpgenerator/common/pom.xml @@ -5,6 +5,7 @@ ~ * org.onap.dcae ~ * ================================================================================ ~ * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + ~ * Copyright (c) 2020 Nokia. All rights reserved. ~ * ================================================================================ ~ * Licensed under the Apache License, Version 2.0 (the "License"); ~ * you may not use this file except in compliance with the License. @@ -38,7 +39,8 @@ org.onap.dcaegen2.platform.mod blueprint-generator - 1.7.0-SNAPSHOT + 1.7.1-SNAPSHOT + diff --git a/mod/bpgenerator/onap-executable/pom.xml b/mod/bpgenerator/onap-executable/pom.xml new file mode 100644 index 0000000..1ec9fef --- /dev/null +++ b/mod/bpgenerator/onap-executable/pom.xml @@ -0,0 +1,61 @@ + + + + + blueprint-generator + org.onap.dcaegen2.platform.mod + 1.7.1-SNAPSHOT + + 4.0.0 + + blueprint-generator-onap-executable + 1.7.1-SNAPSHOT + jar + + OnapExecutable + This Application is used to generate ONAP Blueprint YAML Files for given Component Specs + + + + org.onap.dcaegen2.platform.mod + blueprint-generator-onap + 1.7.1-SNAPSHOT + compile + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.2.5.RELEASE + + + + repackage + + + + + + + diff --git a/mod/bpgenerator/onap-executable/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorMainApplication.java b/mod/bpgenerator/onap-executable/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorMainApplication.java new file mode 100644 index 0000000..796424f --- /dev/null +++ b/mod/bpgenerator/onap-executable/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorMainApplication.java @@ -0,0 +1,113 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * * Copyright (c) 2020 Nokia. All rights reserved. + * * ================================================================================ + * * 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. + * * ============LICENSE_END========================================================= + * + * + */ + +package org.onap.blueprintgenerator; + + +import static java.lang.System.exit; + +import org.onap.blueprintgenerator.model.base.Blueprint; +import org.onap.blueprintgenerator.model.common.Input; +import org.onap.blueprintgenerator.model.componentspec.OnapComponentSpec; +import org.onap.blueprintgenerator.model.componentspec.base.ComponentSpec; +import org.onap.blueprintgenerator.service.BlueprintCreatorService; +import org.onap.blueprintgenerator.service.base.BlueprintService; +import org.onap.blueprintgenerator.service.common.CommonUtils; +import org.onap.blueprintgenerator.service.common.ComponentSpecService; +import org.onap.policycreate.service.PolicyModelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +/** + * @author : Ravi Mantena + * @date 10/16/2020 Application: ONAP - Blueprint Generator ONAP - Blueprint Generator Main + * Application to create Policy Models or Blueprints + */ +@ComponentScan({"org.onap.blueprintgenerator", "org.onap.policycreate"}) +@SpringBootApplication +public class BlueprintGeneratorMainApplication implements CommandLineRunner { + + @Autowired + private ComponentSpecService componentSpecService; + + @Autowired + private PolicyModelService policyModelService; + + @Autowired + private CommonUtils commonUtils; + + @Autowired + private PolicyModelService onapPolicyModelNodeService; + + @Autowired + private ComponentSpecService onapComponentSpecService; + + @Autowired + private CommonUtils onapCommonUtils; + + @Autowired + private BlueprintCreatorService blueprintCreatorService; + + @Autowired + private BlueprintService blueprintService; + + /** + * Main Application to run BPGen to generate Policies/Blueprint based on Input Arguments values + * + * @param args Input Arguments + */ + public static void main(String[] args) { + SpringApplication.run(BlueprintGeneratorMainApplication.class, args); + } + + /** + * Creates Policies/Blueprint based on Input Arguments values + * + * @param args Input Arguments + */ + @Override + public void run(String... args) { + if (args.length >= 2 && args[0].equals("app") && args[1].equals("ONAP")) { + onapCommonUtils.printInstructions(); + if (args.length >= 4 && args[2].equals("-type") && args[3].equals("policycreate")) { + Input input = onapCommonUtils.parseInputs(args); + ComponentSpec componentSpec = + componentSpecService.createComponentSpecFromFile(input.getComponentSpecPath()); + onapPolicyModelNodeService.createPolicyModels( + componentSpec.getParameters(), input.getOutputPath()); + } else { + Input input = onapCommonUtils.parseInputs(args); + OnapComponentSpec onapComponentSpec = onapComponentSpecService.createComponentSpecFromFile(input.getComponentSpecPath()); + Blueprint blueprint = blueprintCreatorService.createBlueprint(onapComponentSpec, input); + blueprintService.blueprintToYaml(onapComponentSpec, blueprint, input); + System.out.println(blueprintService.blueprintToString(onapComponentSpec, blueprint, input)); + } + } + + exit(0); + } +} diff --git a/mod/bpgenerator/onap-executable/src/main/resources/application.properties b/mod/bpgenerator/onap-executable/src/main/resources/application.properties new file mode 100644 index 0000000..877b273 --- /dev/null +++ b/mod/bpgenerator/onap-executable/src/main/resources/application.properties @@ -0,0 +1,26 @@ +# +# /* +# * ============LICENSE_START======================================================= +# * org.onap.dcae +# * ================================================================================ +# * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. +# * Copyright (c) 2020 Nokia. All rights reserved. +# * ================================================================================ +# * 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. +# * ============LICENSE_END========================================================= +# */ +# +# + +spring.main.banner-mode=off +spring.output.ansi.enabled=ALWAYS diff --git a/mod/bpgenerator/onap-executable/src/test/java/org/onap/blueprintgenerator/BlueprintJarComparatorTest.java b/mod/bpgenerator/onap-executable/src/test/java/org/onap/blueprintgenerator/BlueprintJarComparatorTest.java new file mode 100644 index 0000000..973572d --- /dev/null +++ b/mod/bpgenerator/onap-executable/src/test/java/org/onap/blueprintgenerator/BlueprintJarComparatorTest.java @@ -0,0 +1,129 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * * Copyright (c) 2020 Nokia. All rights reserved. + * * ================================================================================ + * * 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. + * * ============LICENSE_END========================================================= + * + * + */ + +package org.onap.blueprintgenerator; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Paths; +import org.apache.commons.io.FileUtils; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +/** + * @author : Ravi Mantena + * @date 10/16/2020 Application: ONAP - Blueprint Generator ONAP Bueprint Jar Comparision with Previos version to make + * sure Bps are not broken with new changes + */ +@Ignore +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class BlueprintJarComparatorTest { + + private static final String ves = "ves.json"; + private static final String testImports = "testImports.yaml"; + private static final String previousJarVersion = "1.7.0-SNAPSHOT"; + private static final String latestJarVersion = "1.7.1-SNAPSHOT"; + private static final String previousVersion = "0_1"; + private static final String latestVersion = "1_0"; + private static final String latestJarPath = buildPathAsString("target"); + private static final String previousJarPath = buildPathAsString("src", "test", "resources", "archives"); + private static final String inputPath = buildPathAsString("src", "test", "resources", "componentspecs"); + private static final String outputPath = buildPathAsString("src", "test", "resources", "outputfiles"); + private static final String previousJar = "blueprint-generator-onap-executable-" + previousJarVersion + ".jar"; + private static final String latestJar = "blueprint-generator-onap-executable-" + latestJarVersion + ".jar"; + + @BeforeClass + @AfterClass + public static void filesCleanup() throws IOException { + FileUtils.deleteDirectory(new File(outputPath)); + } + + private static String buildPathAsString(String first, String... more) { + return Paths.get(first, more).toAbsolutePath().toString() + File.separator; + } + + @Test + public void jarTestVeswithDmaapK8s() throws IOException, InterruptedException { + String inputFileName = ves; + String outputFileName = "dcae-ves-collector-dmaap-"; + String inputImportsFileName = testImports; + + Process process = runBpgenWithDmaap(inputFileName, outputFileName, inputImportsFileName, previousJarPath, + previousJar, previousVersion); + + Process process1 = runBpgenWithDmaap(inputFileName, outputFileName, inputImportsFileName, latestJarPath, + latestJar, latestVersion); + + process.waitFor(); + process1.waitFor(); + + Assert.assertEquals( + "The BluePrint files (" + outputFileName + ") for " + inputFileName + " with -m option don't match!", + FileUtils.readFileToString(new File(outputPath + outputFileName + previousVersion + ".yaml"), "utf-8"), + FileUtils.readFileToString(new File(outputPath + outputFileName + latestVersion + ".yaml"), "utf-8")); + } + + @Test + public void jarTestVeswithoutDmaapK8s() throws IOException, InterruptedException { + String inputFileName = ves; + String outputFileName = "dcae-ves-collector-"; + String inputImportsFileName = testImports; + + Process process = runBpgenWithoutDmaap(inputFileName, outputFileName, inputImportsFileName, previousJarPath, + previousJar, previousVersion); + + Process process1 = runBpgenWithoutDmaap(inputFileName, outputFileName, inputImportsFileName, latestJarPath, + latestJar, latestVersion); + + process.waitFor(); + process1.waitFor(); + + Assert.assertEquals( + "The BluePrint files (" + outputFileName + ") for " + inputFileName + " with -m option dont match!", + FileUtils.readFileToString(new File(outputPath + outputFileName + previousVersion + ".yaml"), "utf-8"), + FileUtils.readFileToString(new File(outputPath + outputFileName + latestVersion + ".yaml"), "utf-8")); + } + + private Process runBpgenWithoutDmaap(String inputFileName, String outputFileName, String inputImportsFileName, + String jarPath, String jarName, String outputFileVersion) throws IOException { + String jarCommand = "java -jar " + jarPath + jarName + " app ONAP -i " + inputPath + inputFileName + " -p " + + outputPath + " -n " + outputFileName + outputFileVersion + " -t " + inputPath + inputImportsFileName; + return Runtime.getRuntime().exec(jarCommand); + } + + private Process runBpgenWithDmaap(String inputFileName, String outputFileName, String inputImportsFileName, + String jarPath, String jarName, String outputFileVersion) throws IOException { + String jarCommand = "java -jar " + jarPath + jarName + " app ONAP -i " + inputPath + inputFileName + " -p " + + outputPath + " -n " + outputFileName + outputFileVersion + " -t " + inputPath + inputImportsFileName + + " -d"; + return Runtime.getRuntime().exec(jarCommand); + } + +} + diff --git a/mod/bpgenerator/onap-executable/src/test/resources/componentspecs/testImports.yaml b/mod/bpgenerator/onap-executable/src/test/resources/componentspecs/testImports.yaml new file mode 100644 index 0000000..42a482d --- /dev/null +++ b/mod/bpgenerator/onap-executable/src/test/resources/componentspecs/testImports.yaml @@ -0,0 +1,4 @@ +imports: + - https://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml + - plugin:k8splugin?version=3.0.0 + - plugin:dcaepolicyplugin?version=2.4.0 \ No newline at end of file diff --git a/mod/bpgenerator/onap-executable/src/test/resources/componentspecs/ves.json b/mod/bpgenerator/onap-executable/src/test/resources/componentspecs/ves.json new file mode 100644 index 0000000..6655a2c --- /dev/null +++ b/mod/bpgenerator/onap-executable/src/test/resources/componentspecs/ves.json @@ -0,0 +1,337 @@ +{ + "self": { + "version": "1.5.0", + "name": "dcae-ves-collector", + "description": "Collector for receiving VES events through restful interface", + "component_type": "docker" + }, + "streams": { + "subscribes": [ + { + "format": "dataformat_Hello_World_PM", + "version": "1.0.0", + "route": "/TEST_HELLO_WORLD_SUB_MR", + "type": "message_router", + "config_key": "TEST-SUB-MR" + }, + { + "format": "dataformat_Hello_World_PM DR", + "version": "1.0.0", + "route": "/TEST_HELLO_WORLD_SUB_DR", + "type": "data_router", + "config_key": "TEST-SUB-DR" + } + ], + "publishes": [ + { + "format": "VES_specification", + "version": "5.28.4", + "type": "message router", + "config_key": "ves-fault" + }, + { + "format": "VES_specification", + "version": "5.28.4", + "type": "message router", + "config_key": "ves-measurement" + }, + { + "format": "VES_specification", + "version": "5.28.4", + "type": "message router", + "config_key": "ves-other" + }, + { + "format": "VES_specification", + "version": "5.28.4", + "type": "message router", + "config_key": "ves-heartbeat-secondary" + }, + { + "format": "VES_specification", + "version": "7.30.0", + "type": "message router", + "config_key": "ves-pnfRegistration" + }, + { + "format": "VES_specification", + "version": "7.30.0", + "type": "message router", + "config_key": "ves-notification" + } + ] + }, + "services": { + "calls": [], + "provides": [ + { + "route": "/eventListener/v1", + "verb": "POST", + "request": { + "format": "VES_specification", + "version": "4.27.2" + }, + "response": { + "format": "ves.coll.response", + "version": "1.0.0" + } + }, + { + "route": "/eventListener/v2", + "verb": "POST", + "request": { + "format": "VES_specification", + "version": "4.27.2" + }, + "response": { + "format": "ves.coll.response", + "version": "1.0.0" + } + }, + { + "route": "/eventListener/v3", + "verb": "POST", + "request": { + "format": "VES_specification", + "version": "4.27.2" + }, + "response": { + "format": "ves.coll.response", + "version": "1.0.0" + } + }, + { + "route": "/eventListener/v4", + "verb": "POST", + "request": { + "format": "VES_specification", + "version": "4.27.2" + }, + "response": { + "format": "ves.coll.response", + "version": "1.0.0" + } + }, + { + "route": "/eventListener/v5", + "verb": "POST", + "request": { + "format": "VES_specification", + "version": "5.28.4" + }, + "response": { + "format": "ves.coll.response", + "version": "1.0.0" + } + }, + { + "route": "/eventListener/v7", + "verb": "POST", + "request": { + "format": "VES_specification", + "version": "7.30.0" + }, + "response": { + "format": "ves.coll.response", + "version": "1.0.0" + } + } + ] + }, + "parameters": [ + { + "name": "collector.service.port", + "value": 8080, + "description": "standard http port collector will open for listening;", + "sourced_at_deployment": false, + "policy_editable": false, + "designer_editable": false + }, + { + "name": "collector.service.secure.port", + "value": 8443, + "description": "secure http port collector will open for listening ", + "sourced_at_deployment": false, + "policy_editable": false, + "designer_editable": true + }, + { + "name": "collector.keystore.file.location", + "value": "/opt/app/dcae-certificate/keystore.jks", + "description": "fs location of keystore file in vm", + "sourced_at_deployment": false, + "policy_editable": false, + "designer_editable": false + }, + { + "name": "collector.keystore.passwordfile", + "value": "/opt/app/dcae-certificate/.password", + "description": "location of keystore password file in vm", + "sourced_at_deployment": false, + "policy_editable": false, + "designer_editable": false + }, + { + "name": "collector.truststore.file.location", + "value": "/opt/app/dcae-certificate/truststore.jks", + "description": "fs location of truststore file in vm", + "sourced_at_deployment": false, + "policy_editable": false, + "designer_editable": false + }, + { + "name": "collector.truststore.passwordfile", + "value": "/opt/app/dcae-certificate/.trustpassword", + "description": "location of truststore password file in vm", + "sourced_at_deployment": false, + "policy_editable": false, + "designer_editable": false + }, + { + "name": "collector.dmaap.streamid", + "value": "fault=ves-fault,ves-fault-secondary|syslog=ves-syslog,ves-syslog-secondary|heartbeat=ves-heartbeat,ves-heartbeat-secondary|measurementsForVfScaling=ves-measurement,ves-measurement-secondary|mobileFlow=ves-mobileflow,ves-mobileflow-secondary|other=ves-other,ves-other-secondary|stateChange=ves-statechange,ves-statechange-secondary|thresholdCrossingAlert=ves-thresholdCrossingAlert,ves-thresholdCrossingAlert-secondary|voiceQuality=ves-voicequality,ves-voicequality-secondary|sipSignaling=ves-sipsignaling,ves-sipsignaling-secondary|notification=ves-notification,ves-notification-secondary|pnfRegistration=ves-pnfRegistration,ves-pnfRegistration-secondary", + "description": "domain-to-streamid mapping used by VESCollector to distributes events based on domain. Both primary and secondary config_key are included for resilency (multiple streamid can be included commma separated). The streamids MUST match to topic config_keys. For single site without resiliency deployment - configkeys with -secondary suffix can be removed", + "sourced_at_deployment": true, + "policy_editable": false, + "designer_editable": false + }, + { + "name": "auth.method", + "value": "noAuth", + "description": "Property to manage application mode, possible configurations: noAuth - default option - no security (http) , certOnly - auth by certificate (https), basicAuth - auth by basic auth username and password (https),certBasicAuth - auth by certificate and basic auth username / password (https),", + "sourced_at_deployment": false, + "policy_editable": false, + "designer_editable": false + }, + { + "name": "header.authlist", + "value": "sample1,$2a$10$pgjaxDzSuc6XVFEeqvxQ5u90DKJnM/u7TJTcinAlFJVaavXMWf/Zi|userid1,$2a$10$61gNubgJJl9lh3nvQvY9X.x4e5ETWJJ7ao7ZhJEvmfJigov26Z6uq|userid2,$2a$10$G52y/3uhuhWAMy.bx9Se8uzWinmbJa.dlm1LW6bYPdPkkywLDPLiy", + "description": "List of id and base 64 encoded password.For each onboarding VNF - unique userid and password should be assigned and communicated to VNF owner. Password value should be base64 encoded in config here", + "policy_editable": false, + "sourced_at_deployment": true, + "designer_editable": true + }, + { + "name": "collector.schema.checkflag", + "value": 1, + "description": "Schema check validation flag. When enabled, collector will validate input VES events against VES Schema defined on collector.schema.file ", + "sourced_at_deployment": false, + "policy_editable": false, + "designer_editable": false + }, + { + "name": "collector.schema.file", + "value": "{\"v1\":\"./etc/CommonEventFormat_27.2.json\",\"v2\":\"./etc/CommonEventFormat_27.2.json\",\"v3\":\"./etc/CommonEventFormat_27.2.json\",\"v4\":\"./etc/CommonEventFormat_27.2.json\",\"v5\":\"./etc/CommonEventFormat_28.4.1.json\",\"v7\":\"./etc/CommonEventFormat_30.json\"}", + "description": "VES schema file name per version used for validation", + "designer_editable": true, + "sourced_at_deployment": false, + "policy_editable": false + }, + { + "name": "event.transform.flag", + "value": 1, + "description": "flag to enable tranformation rules defined under eventTransform.json; this is applicable when event tranformation rules preset should be activated for transforming 4.0.0 blueprint-generator-onap - 1.7.0-SNAPSHOT + 1.7.1-SNAPSHOT jar Onap - This Application is used to generate ONAP Blueprint YAML Files for given Component - Specs + + This Application is a library used to generate ONAP Blueprint YAML Files for given Component Specs org.onap.dcaegen2.platform.mod blueprint-generator - 1.7.0-SNAPSHOT + 1.7.1-SNAPSHOT @@ -51,22 +52,4 @@ - - - - org.springframework.boot - spring-boot-maven-plugin - 2.2.5.RELEASE - - - - repackage - - - - - - onap-blueprint-generator-${project.version} - - diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorConfiguration.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorConfiguration.java new file mode 100644 index 0000000..fbe97e9 --- /dev/null +++ b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorConfiguration.java @@ -0,0 +1,35 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2020 Nokia. All rights reserved. + * * ================================================================================ + * * 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. + * * ============LICENSE_END========================================================= + * + * + */ + +package org.onap.blueprintgenerator; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@PropertySource("classpath:bpgen.properties") +@ComponentScan(basePackages = {"org.onap.blueprintgenerator", "org.onap.policycreate"}) +public class BlueprintGeneratorConfiguration { + +} diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorMainApplication.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorMainApplication.java deleted file mode 100644 index 796424f..0000000 --- a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/BlueprintGeneratorMainApplication.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * - * * ============LICENSE_START======================================================= - * * org.onap.dcae - * * ================================================================================ - * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. - * * Copyright (c) 2020 Nokia. All rights reserved. - * * ================================================================================ - * * 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. - * * ============LICENSE_END========================================================= - * - * - */ - -package org.onap.blueprintgenerator; - - -import static java.lang.System.exit; - -import org.onap.blueprintgenerator.model.base.Blueprint; -import org.onap.blueprintgenerator.model.common.Input; -import org.onap.blueprintgenerator.model.componentspec.OnapComponentSpec; -import org.onap.blueprintgenerator.model.componentspec.base.ComponentSpec; -import org.onap.blueprintgenerator.service.BlueprintCreatorService; -import org.onap.blueprintgenerator.service.base.BlueprintService; -import org.onap.blueprintgenerator.service.common.CommonUtils; -import org.onap.blueprintgenerator.service.common.ComponentSpecService; -import org.onap.policycreate.service.PolicyModelService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.ComponentScan; - -/** - * @author : Ravi Mantena - * @date 10/16/2020 Application: ONAP - Blueprint Generator ONAP - Blueprint Generator Main - * Application to create Policy Models or Blueprints - */ -@ComponentScan({"org.onap.blueprintgenerator", "org.onap.policycreate"}) -@SpringBootApplication -public class BlueprintGeneratorMainApplication implements CommandLineRunner { - - @Autowired - private ComponentSpecService componentSpecService; - - @Autowired - private PolicyModelService policyModelService; - - @Autowired - private CommonUtils commonUtils; - - @Autowired - private PolicyModelService onapPolicyModelNodeService; - - @Autowired - private ComponentSpecService onapComponentSpecService; - - @Autowired - private CommonUtils onapCommonUtils; - - @Autowired - private BlueprintCreatorService blueprintCreatorService; - - @Autowired - private BlueprintService blueprintService; - - /** - * Main Application to run BPGen to generate Policies/Blueprint based on Input Arguments values - * - * @param args Input Arguments - */ - public static void main(String[] args) { - SpringApplication.run(BlueprintGeneratorMainApplication.class, args); - } - - /** - * Creates Policies/Blueprint based on Input Arguments values - * - * @param args Input Arguments - */ - @Override - public void run(String... args) { - if (args.length >= 2 && args[0].equals("app") && args[1].equals("ONAP")) { - onapCommonUtils.printInstructions(); - if (args.length >= 4 && args[2].equals("-type") && args[3].equals("policycreate")) { - Input input = onapCommonUtils.parseInputs(args); - ComponentSpec componentSpec = - componentSpecService.createComponentSpecFromFile(input.getComponentSpecPath()); - onapPolicyModelNodeService.createPolicyModels( - componentSpec.getParameters(), input.getOutputPath()); - } else { - Input input = onapCommonUtils.parseInputs(args); - OnapComponentSpec onapComponentSpec = onapComponentSpecService.createComponentSpecFromFile(input.getComponentSpecPath()); - Blueprint blueprint = blueprintCreatorService.createBlueprint(onapComponentSpec, input); - blueprintService.blueprintToYaml(onapComponentSpec, blueprint, input); - System.out.println(blueprintService.blueprintToString(onapComponentSpec, blueprint, input)); - } - } - - exit(0); - } -} diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/ImportsService.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/ImportsService.java index 6fa43da..44bca11 100644 --- a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/ImportsService.java +++ b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/ImportsService.java @@ -4,6 +4,7 @@ * * org.onap.dcae * * ================================================================================ * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * * Copyright (c) 2020 Nokia. All rights reserved. * * ================================================================================ * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. @@ -24,17 +25,16 @@ package org.onap.blueprintgenerator.service.common; import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import org.onap.blueprintgenerator.model.common.Imports; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - /** * @author : Ravi Mantena * @date 10/16/2020 Application: DCAE/ONAP - Blueprint Generator Common Module: Used by ONAP diff --git a/mod/bpgenerator/onap/src/main/resources/application.properties b/mod/bpgenerator/onap/src/main/resources/application.properties deleted file mode 100644 index f7155a5..0000000 --- a/mod/bpgenerator/onap/src/main/resources/application.properties +++ /dev/null @@ -1,32 +0,0 @@ -# -# /* -# * ============LICENSE_START======================================================= -# * org.onap.dcae -# * ================================================================================ -# * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. -# * ================================================================================ -# * 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. -# * ============LICENSE_END========================================================= -# */ -# -# -spring.main.banner-mode=off -spring.output.ansi.enabled=ALWAYS -imports.onap.types=https://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml -imports.onap.K8s.plugintypes=plugin:k8splugin?version=3.4.2 -imports.onap.K8s.dcaepolicyplugin=plugin:dcaepolicyplugin?version=2.4.0 -imports.dmaap.dmaapplugin=plugin:dmaap?version=1.5.0 -import.Postgres=plugin:pgaas?version=1.3.0 -import.Clamp=plugin:clamppolicyplugin?version=1.1.0 - - diff --git a/mod/bpgenerator/onap/src/main/resources/bpgen.properties b/mod/bpgenerator/onap/src/main/resources/bpgen.properties new file mode 100644 index 0000000..69a3ad6 --- /dev/null +++ b/mod/bpgenerator/onap/src/main/resources/bpgen.properties @@ -0,0 +1,32 @@ +# +# /* +# * ============LICENSE_START======================================================= +# * org.onap.dcae +# * ================================================================================ +# * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. +# * Copyright (c) 2020 Nokia. All rights reserved. +# * ================================================================================ +# * 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. +# * ============LICENSE_END========================================================= +# */ +# +# + +imports.onap.types=https://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml +imports.onap.K8s.plugintypes=plugin:k8splugin?version=3.4.2 +imports.onap.K8s.dcaepolicyplugin=plugin:dcaepolicyplugin?version=2.4.0 +imports.dmaap.dmaapplugin=plugin:dmaap?version=1.5.0 +import.Postgres=plugin:pgaas?version=1.3.0 +import.Clamp=plugin:clamppolicyplugin?version=1.1.0 + + diff --git a/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/test/BlueprintGeneratorTests.java b/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/test/BlueprintGeneratorTests.java index 86d257a..6e6ebd7 100644 --- a/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/test/BlueprintGeneratorTests.java +++ b/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/test/BlueprintGeneratorTests.java @@ -27,7 +27,7 @@ package org.onap.blueprintgenerator.test; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.Ignore; import org.junit.runner.RunWith; -import org.onap.blueprintgenerator.BlueprintGeneratorMainApplication; +import org.onap.blueprintgenerator.BlueprintGeneratorConfiguration; import org.onap.blueprintgenerator.model.componentspec.OnapComponentSpec; import org.onap.blueprintgenerator.service.BlueprintCreatorService; import org.onap.blueprintgenerator.service.base.BlueprintService; @@ -45,11 +45,12 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * @author : Ravi Mantena - * @date 10/16/2020 Application: ONAP - Blueprint Generator ONAP Test Cases + * @date 10/16/2020 + * Application: ONAP - Blueprint Generator ONAP Test Cases */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - classes = BlueprintGeneratorMainApplication.class, + classes = BlueprintGeneratorConfiguration.class, initializers = ConfigFileApplicationContextInitializer.class) @TestPropertySource( properties = { diff --git a/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/test/BlueprintJarComparatorTest.java b/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/test/BlueprintJarComparatorTest.java deleted file mode 100644 index a0cf04a..0000000 --- a/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/test/BlueprintJarComparatorTest.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * - * * ============LICENSE_START======================================================= - * * org.onap.dcae - * * ================================================================================ - * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. - * * ================================================================================ - * * 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. - * * ============LICENSE_END========================================================= - * - * - */ - -package org.onap.blueprintgenerator.test; - -import org.apache.commons.io.FileUtils; -import org.junit.Assert; -import org.junit.FixMethodOrder; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.jupiter.api.Order; -import org.junit.runners.MethodSorters; -import org.onap.blueprintgenerator.test.BlueprintGeneratorTests; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Paths; - -/** - * @author : Ravi Mantena - * @date 10/16/2020 Application: ONAP - Blueprint Generator ONAP Bueprint Jar Comparision with - * Blueprint Comparator using preious and new Jar files to make sure the new code doesnt break previous changes. - */ -@Ignore -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class BlueprintJarComparatorTest extends BlueprintGeneratorTests { - - private String previousJarVersion = "0.1"; - private String latestJarVersion = "1.0"; - private String previousVersion = "0_1"; - private String latestVersion = "1_0"; - private String latestJarPath = Paths.get("target").toAbsolutePath().toString() + "\\"; - private String previousJarPath = - Paths.get("src", "test", "resources", "archives").toAbsolutePath().toString() + "\\"; - private String inputPath = - Paths.get("src", "test", "resources", "componentspecs").toAbsolutePath().toString() + "\\"; - private String inputPolicyPath = - Paths.get("src", "test", "resources", "policyjson").toAbsolutePath().toString() + "\\"; - private String outputPath = - Paths.get("src", "test", "resources", "outputfiles").toAbsolutePath().toString() + "\\"; - private String previousJar = "onap-blueprint-generator-" + previousJarVersion + ".jar"; - private String latestJar = "onap-blueprint-generator-" + latestJarVersion + ".jar"; - - @Test - @Order(value = 1) - public void filesCleanup() throws IOException { - FileUtils.deleteDirectory(new File(outputPath)); - } - - @Test - public void jarTestVeswithDmaapK8s() throws IOException, InterruptedException { - String inputFileName = ves; - String outputFileName = "dcae-ves-collector-dmaap-"; - String inputImportsFileName = testImports; - - String previousJarCommand = - "java -jar " - + previousJarPath - + previousJar - + " app ONAP -i " - + inputPath - + inputFileName - + " -p " - + outputPath - + " -n " - + outputFileName - + previousVersion - + " -t " - + inputPath - + inputImportsFileName - + " -d"; - Runtime.getRuntime().exec(previousJarCommand); - - String latestJarCommand = - "java -jar " - + latestJarPath - + latestJar - + " app ONAP -i " - + inputPath - + inputFileName - + " -p " - + outputPath - + " -n " - + outputFileName - + latestVersion - + " -t " - + inputPath - + inputImportsFileName - + " -d"; - Runtime.getRuntime().exec(latestJarCommand); - - Thread.sleep(8000); - - Assert.assertEquals( - "The BluePrint files (" - + outputFileName - + ") for " - + inputFileName - + " with -m option don't match!", - FileUtils.readFileToString( - new File(outputPath + outputFileName + previousVersion + ".yaml"), "utf-8"), - FileUtils.readFileToString( - new File(outputPath + outputFileName + latestVersion + ".yaml"), "utf-8")); - } - - @Test - public void jarTestVeswithoutDmaapK8s() throws IOException, InterruptedException { - String inputFileName = ves; - String outputFileName = "dcae-ves-collector-"; - String inputImportsFileName = testImports; - - String previousJarCommand = - "java -jar " - + previousJarPath - + previousJar - + " app ONAP -i " - + inputPath - + inputFileName - + " -p " - + outputPath - + " -n " - + outputFileName - + previousVersion - + " -t " - + inputPath - + inputImportsFileName; - Runtime.getRuntime().exec(previousJarCommand); - - String latestJarCommand = - "java -jar " - + latestJarPath - + latestJar - + " app ONAP -i " - + inputPath - + inputFileName - + " -p " - + outputPath - + " -n " - + outputFileName - + latestVersion - + " -t " - + inputPath - + inputImportsFileName; - Runtime.getRuntime().exec(latestJarCommand); - - Thread.sleep(8000); - - Assert.assertEquals( - "The BluePrint files (" - + outputFileName - + ") for " - + inputFileName - + " with -m option dont match!", - FileUtils.readFileToString( - new File(outputPath + outputFileName + previousVersion + ".yaml"), "utf-8"), - FileUtils.readFileToString( - new File(outputPath + outputFileName + latestVersion + ".yaml"), "utf-8")); - } -} diff --git a/mod/bpgenerator/pom.xml b/mod/bpgenerator/pom.xml index 423ffc9..84edb05 100644 --- a/mod/bpgenerator/pom.xml +++ b/mod/bpgenerator/pom.xml @@ -5,6 +5,7 @@ ~ * org.onap.dcae ~ * ================================================================================ ~ * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + ~ * Copyright (c) 2020 Nokia. All rights reserved. ~ * ================================================================================ ~ * Licensed under the Apache License, Version 2.0 (the "License"); ~ * you may not use this file except in compliance with the License. @@ -29,12 +30,13 @@ org.onap.dcaegen2.platform.mod blueprint-generator - 1.7.0-SNAPSHOT + 1.7.1-SNAPSHOT pom common onap + onap-executable BlueprintGenerator -- cgit 1.2.3-korg