From 1838366d51a172b0240a5e23c5d691b544a7a6be Mon Sep 17 00:00:00 2001 From: Dhrumin Desai Date: Mon, 9 Aug 2021 16:52:04 -0400 Subject: Helm-generator - seedcode delivery for helm chart generation tool from component spec Issue-ID: DCAEGEN2-2694 Change-Id: I3e317e312f90b061c0cdff155b8673967aea414b Signed-off-by: Dhrumin Desai --- .../HelmChartGeneratorApplication.java | 97 ++++++++++++++++++++++ .../src/main/resources/Usage.txt | 32 +++++++ 2 files changed, 129 insertions(+) create mode 100644 mod2/helm-generator/helmchartgenerator-cli/src/main/java/org/onap/dcaegen2/platform/helmchartgenerator/HelmChartGeneratorApplication.java create mode 100644 mod2/helm-generator/helmchartgenerator-cli/src/main/resources/Usage.txt (limited to 'mod2/helm-generator/helmchartgenerator-cli/src/main') 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 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 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 (with JAR) + OR + HelmChartGeneratorApplication.java (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) -- cgit 1.2.3-korg