summaryrefslogtreecommitdiffstats
path: root/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core
diff options
context:
space:
mode:
Diffstat (limited to 'mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core')
-rw-r--r--mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/App.java40
-rw-r--r--mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/BlueprintCommand.java60
-rw-r--r--mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/Fixes.java70
-rw-r--r--mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/PolicyCommand.java42
-rw-r--r--mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/core/TestComponentSpec.java132
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" +
+ "}";
+}