diff options
Diffstat (limited to 'mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core')
5 files changed, 344 insertions, 0 deletions
diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/App.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/App.java new file mode 100644 index 0000000..4775825 --- /dev/null +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/App.java @@ -0,0 +1,40 @@ +/**============LICENSE_START======================================================= + org.onap.dcae + ================================================================================ + Copyright (c) 2019 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.core; + +import picocli.CommandLine; +import picocli.CommandLine.Command; + +@Command(subcommands = { + BlueprintCommand.class, + PolicyCommand.class +}) +public class App implements Runnable { + public static void main(String...args) { + CommandLine.run(new App(), args); + } + + @Override + public void run() { + CommandLine.usage(this, System.out); + } +} diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/BlueprintCommand.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/BlueprintCommand.java new file mode 100644 index 0000000..7627930 --- /dev/null +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/BlueprintCommand.java @@ -0,0 +1,60 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.blueprintgenerator.core; + +import org.onap.blueprintgenerator.models.blueprint.Blueprint; +import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; +import picocli.CommandLine.Command; +import picocli.CommandLine.Option; + +@Command(name = "blueprint", description = "Command used to generate blueprints from component spec") +public class BlueprintCommand implements Runnable { + private static final char STANDARD_BLUEPRINT = 'o'; + private static final char DMAAP_BLUEPRINT = 'd'; + + @Option(names = {"-i", "--component-spec"}, description = "Path to component spec file", required = true) + private String componentSpecPath; + + @Option(names = {"-p", "--blueprint-path"}, description = "Path to directory that blueprints are output to", required = true) + private String blueprintOutputPath; + + @Option(names = {"-n", "--blueprint-name"}, description = "Name of the blueprint", defaultValue = "") + private String blueprintName; + + @Option(names = {"-t", "--imports"}, description = "Path to the import file", defaultValue = "") + private String importsPath; + + @Option(names={"-o", "--service-name-override"}, description="Value used to override the service name", defaultValue = "") + private String serviceNameOverride; + + @Option(names={"-d", "--dmaap-plugin"}, description = "Flag used to indicate blueprint uses the DMaaP plugin.") + private boolean dmaapPlugin; + + @Override + public void run() { + ComponentSpec inboundComponentSpec = new ComponentSpec(); + inboundComponentSpec.createComponentSpecFromFile(componentSpecPath); + System.out.println(dmaapPlugin ? DMAAP_BLUEPRINT : STANDARD_BLUEPRINT); + Blueprint generatedBlueprint = new Blueprint().createBlueprint(inboundComponentSpec, this.blueprintName, + dmaapPlugin ? DMAAP_BLUEPRINT : STANDARD_BLUEPRINT, importsPath, serviceNameOverride); + generatedBlueprint.blueprintToYaml(blueprintOutputPath, this.blueprintName, inboundComponentSpec); + } +} diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java new file mode 100644 index 0000000..cbff42b --- /dev/null +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java @@ -0,0 +1,70 @@ +/**============LICENSE_START======================================================= + org.onap.dcae + ================================================================================ + Copyright (c) 2019 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.core; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.ArrayList; + +public class Fixes { + private static ArrayList<String> lines = new ArrayList<String>(); + private static String line = null; + + public static void fixSingleQuotes(File f) throws IOException { + File translateFile = f; + try { + FileReader fr = new FileReader(translateFile); + BufferedReader br = new BufferedReader(fr); + while((line = br.readLine()) != null) { + if(line.contains("'")) { + line = line.replace("'", ""); + } + if(line.contains("\"\"") && (line.contains("m") || line.contains("M"))) { + line = line.replaceAll("\"\"", "\""); + } + lines.add(line); + + } + fr.close(); + br.close(); + FileWriter fw = new FileWriter(translateFile); + PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f, true))); + for(String s: lines) { + out.println(); + out.write(s); + out.flush(); + } + + out.close(); + fw.close(); + line = null; + lines = new ArrayList<String>(); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } +} diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PolicyCommand.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PolicyCommand.java new file mode 100644 index 0000000..81a7911 --- /dev/null +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PolicyCommand.java @@ -0,0 +1,42 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.blueprintgenerator.core; + +import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; +import org.onap.blueprintgenerator.models.policymodel.PolicyModel; +import picocli.CommandLine.Command; +import picocli.CommandLine.Option; + +@Command(name = "policy", description = "Command used to generate policy model from component spec") +public class PolicyCommand implements Runnable{ + @Option(names = {"-i", "--component-spec"}, description = "Path to component spec file", required = true) + private String componentSpecPath; + + @Option(names = {"-p", "--model-path"}, description = "Path to directory that models are output to", required = true) + private String modelOutputPath; + + @Override + public void run() { + ComponentSpec inboundComponentSpec = new ComponentSpec(); + inboundComponentSpec.createComponentSpecFromFile(componentSpecPath); + new PolicyModel().createPolicyModels(inboundComponentSpec, this.modelOutputPath); + } +} diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/TestComponentSpec.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/TestComponentSpec.java new file mode 100644 index 0000000..5d4131b --- /dev/null +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/TestComponentSpec.java @@ -0,0 +1,132 @@ +/**============LICENSE_START======================================================= + org.onap.dcae + ================================================================================ + Copyright (c) 2019 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.core; + + + + +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter +public class TestComponentSpec { + private String cs = "{\r\n" + + " \"self\": {\r\n" + + " \"component_type\": \"docker\",\r\n" + + " \"description\": \"Test component spec\",\r\n" + + " \"name\": \"test.component.spec\",\r\n" + + " \"version\": \"1.0.1\"\r\n" + + " },\r\n" + + "\r\n" + + " \"service\": {\r\n" + + " \"calls\": [],\r\n" + + " \"provides\": []\r\n" + + " },\r\n" + + "\r\n" + + " \"streams\": {\r\n" + + " \"publishes\": [{\r\n" + + " \"config_key\": \"TEST-PUB-DR\",\r\n" + + " \"format\": \"dataformat_Hello_World_PM\",\r\n" + + " \"type\": \"data_router\",\r\n" + + " \"version\": \"1.0.0\"\r\n" + + " },\r\n" + + " {\r\n" + + " \"config_key\": \"TEST-PUB-MR\",\r\n" + + " \"format\": \"dataformat_Hello_World_PM\",\r\n" + + " \"type\": \"message_router\",\r\n" + + " \"version\": \"1.0.0\"\r\n" + + " }\r\n" + + " ],\r\n" + + "\r\n" + + " \"subscribes\": [{\r\n" + + " \"config_key\": \"TEST-SUB-MR\",\r\n" + + " \"format\": \"dataformat_Hello_World_PM\",\r\n" + + " \"route\": \"/TEST_HELLO_WORLD_SUB_MR\",\r\n" + + " \"type\": \"message_router\",\r\n" + + " \"version\": \"1.0.0\"\r\n" + + " },\r\n" + + " {\r\n" + + " \"config_key\": \"TEST-SUB-DR\",\r\n" + + " \"format\": \"dataformat_Hello_World_PM\",\r\n" + + " \"route\": \"/TEST-HELLO-WORLD-SUB-DR\",\r\n" + + " \"type\": \"data_router\",\r\n" + + " \"version\": \"1.0.0\"\r\n" + + " } \r\n" + + " ]\r\n" + + " },\r\n" + + "\r\n" + + " \"parameters\":\r\n" + + " [\r\n" + + " {\r\n" + + " \"name\": \"testParam1\",\r\n" + + " \"description\": \"test parameter 1\",\r\n" + + " \"value\": \"test-param-1\",\r\n" + + " \"type\": \"string\",\r\n" + + " \"sourced_at_deployment\": true,\r\n" + + " \"designer_editable\": true,\r\n" + + " \"policy_editable\": true,\r\n" + + " \"policy_group\": \"Test_Parameters\",\r\n" + + " \"required\": true\r\n" + + " }\r\n" + + " ],\r\n" + + "\r\n" + + " \"auxilary\": {\r\n" + + " \"healthcheck\": {\r\n" + + " \"type\": \"docker\",\r\n" + + " \"interval\": \"300s\",\r\n" + + " \"timeout\": \"120s\",\r\n" + + " \"script\": \"/etc/init.d/nagios status\"\r\n" + + " },\r\n" + + "\r\n" + + " \"databases\" : {\r\n" + + " \"TestDB1\": \"PGaaS\",\r\n" + + " \"TestDB2\": \"PGaaS\"\r\n" + + " },\r\n" + + "\r\n" + + " \"policy\": {\r\n" + + " \"trigger_type\": \"docker\",\r\n" + + " \"script_path\": \"/opt/app/manager/bin/reconfigure.sh\"\r\n" + + " },\r\n" + + " \"volumes\": [\r\n" + + " {\r\n" + + " \"container\": {\r\n" + + " \"bind\": \"/opt/app/manager/config/hostname\"\r\n" + + " },\r\n" + + " \"host\": {\r\n" + + " \"path\": \"/etc/hostname\",\r\n" + + " \"mode\": \"ro\"\r\n" + + " }\r\n" + + " }\r\n" + + "\r\n" + + " ],\r\n" + + " \"ports\": [\r\n" + + " \"80:80\"\r\n" + + " ]\r\n" + + " },\r\n" + + "\r\n" + + " \"artifacts\": [{\r\n" + + " \"type\": \"docker image\",\r\n" + + " \"uri\": \"test.tester\"\r\n" + + " }] \r\n" + + "\r\n" + + "}"; +} |