summaryrefslogtreecommitdiffstats
path: root/mod2/helm-generator/helmchartgenerator-cli/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'mod2/helm-generator/helmchartgenerator-cli/src/main')
-rw-r--r--mod2/helm-generator/helmchartgenerator-cli/src/main/java/org/onap/dcaegen2/platform/helmchartgenerator/HelmChartGeneratorApplication.java97
-rw-r--r--mod2/helm-generator/helmchartgenerator-cli/src/main/resources/Usage.txt32
2 files changed, 129 insertions, 0 deletions
diff --git a/mod2/helm-generator/helmchartgenerator-cli/src/main/java/org/onap/dcaegen2/platform/helmchartgenerator/HelmChartGeneratorApplication.java b/mod2/helm-generator/helmchartgenerator-cli/src/main/java/org/onap/dcaegen2/platform/helmchartgenerator/HelmChartGeneratorApplication.java
new file mode 100644
index 0000000..617947f
--- /dev/null
+++ b/mod2/helm-generator/helmchartgenerator-cli/src/main/java/org/onap/dcaegen2/platform/helmchartgenerator/HelmChartGeneratorApplication.java
@@ -0,0 +1,97 @@
+/*
+ * # ============LICENSE_START=======================================================
+ * # Copyright (c) 2021 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.dcaegen2.platform.helmchartgenerator;
+
+import lombok.extern.slf4j.Slf4j;
+import org.onap.dcaegen2.platform.helmchartgenerator.chartbuilder.ChartBuilder;
+import org.onap.dcaegen2.platform.helmchartgenerator.distribution.ChartDistributor;
+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.core.io.ClassPathResource;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Main class to run the application.
+ * @author Dhrumin Desai
+ */
+@SpringBootApplication
+@Slf4j
+public class HelmChartGeneratorApplication implements CommandLineRunner {
+
+ @Autowired
+ private final ChartBuilder builder;
+
+ @Autowired
+ private final ChartDistributor distributor;
+
+ public HelmChartGeneratorApplication(ChartBuilder builder, ChartDistributor distributor) {
+ this.builder = builder;
+ this.distributor = distributor;
+ }
+
+ public static void main(String[] args) {
+ SpringApplication.run(HelmChartGeneratorApplication.class, args);
+ }
+
+ @Override
+ public void run(String... args) throws Exception {
+ List<String> argList = new ArrayList<>(Arrays.asList(args));
+ boolean isDistribute = false;
+ if(argList.contains("--help") || argList.size() < 3){
+ printUsage();
+ return;
+ }
+ if(argList.contains("--distribute")){
+ isDistribute = true;
+ argList.remove("--distribute");
+ }
+
+ log.info("STARTED HELM GENERATION:");
+ final File chartPackage = builder.build(argList.get(0), argList.get(1), argList.get(2),
+ getSpecSchemaLocation(argList));
+ if(isDistribute) {
+ log.info("Distributing..");
+ distributor.distribute(chartPackage);
+ }
+ }
+
+ private String getSpecSchemaLocation(List<String> argList) {
+ String specSchemaLocation;
+ try {
+ specSchemaLocation = argList.get(3);
+ }
+ catch (Exception e) {
+ specSchemaLocation = "";
+ }
+ return specSchemaLocation;
+ }
+
+ private void printUsage() throws IOException {
+ InputStream inputStream = new ClassPathResource("Usage.txt").getInputStream();
+ log.info(new String(inputStream.readAllBytes()));
+ }
+}
diff --git a/mod2/helm-generator/helmchartgenerator-cli/src/main/resources/Usage.txt b/mod2/helm-generator/helmchartgenerator-cli/src/main/resources/Usage.txt
new file mode 100644
index 0000000..7aaec03
--- /dev/null
+++ b/mod2/helm-generator/helmchartgenerator-cli/src/main/resources/Usage.txt
@@ -0,0 +1,32 @@
+
+Helm Chart Generator:
+
+- generate a helm chart from the base helm template and parsed component spec file.
+- distribute a helm chart to Chartmuseum
+
+Environment variables:
+
+| Name | Description |
+|------------------------------------|-----------------------------------------------------------------------------------|
+| $CHARTMUSEUM_BASEURL | set a Chartmuseum base url for chart distribution. |
+| $CHARTMUSEUM_AUTH_BASIC_USERNAME | set a Chartmuseum username for the basic auth. |
+| $CHARTMUSEUM_AUTH_BASIC_PASSWORD | set a Chartmuseum password for the basic auth. |
+
+Requirements:
+
+- Helm Chart Generator uses 'helm' command installed on the host machine, so 'helm' command must be installed.
+- For the distribution, $CHARTMUSEUM_BASEURL, $CHARTMUSEUM_AUTH_BASIC_USERNAME and $CHARTMUSEUM_AUTH_BASIC_PASSWORD
+ must be set.
+
+Usage:
+ helmchartgenerator-<jar-version>.jar <args> (with JAR)
+ OR
+ HelmChartGeneratorApplication.java <args> (with the main class)
+
+ - Arguments must be passed in the numeric order mentioned below.
+Arguments:
+ 1. Spec file location (Required)
+ 2. Chart directory location (helm template location) (Required)
+ 3. Output directory location (Required)
+ 4. Component spec schema (Optional) (Note: Default componentSpec schema will be used if not passed.)
+ 5. --distribute flag (Optional)