# helm-client-validator Docker container with Spring-Boot application for validating helm charts. #### Development To build image use: ``` make build-docker ``` or ``` make build-docker-local ``` ##### Helm versions change To modify helm versions: 1. Modify `Dockerfile`, add desired version in line: ```shell script ENV HELM_SUPPORTED_VERSIONS=3.5.2,3.4.1,3.3.4,2.17.0,2.14.3 ``` 2. In local development, edit file: `Makefile` and add desired version in lines: ```shell script build-docker-local: export HELM_SUPPORTED_VERSIONS=3.5.2,3.4.1,3.3.4,2.17.0 ``` If you want to clean downloaded files run: `make clean-local-files` ##### Run container locally In order to run docker container locally use: ``` make run-docker ``` Example charts are located in the following directory: ``` ./dev-resources/sample-charts ``` ##### Change log level To change log level by system environment add to dockerfile following code: ``` ENV LOG_LEVEL= ``` or run container with LOG_LEVEL ENV ``` docker run -p 8080:8080 -e LOG_LEVEL=INFO onap/org.onap.sdc.sdc-helm-validator:latest ``` ##### API documentation Swagger UI is available on endpoint: /docs. OpenAPI.yaml in the main directory contains OpenAPI 3.0.1 definition. ## Available endpoints * Chart validation: `http://localhost:[PORT]/validate` #### Request This should be a POST with `multipart/form-data` encoding with the following fields: "versionDesired": [String] - helm version, which will be used for validation. If param not provided then version will be taken from apiVersion "file": [FILE] - helm chart to be validated packed in .txz format "isLinted": ["true"/"false"] - if false, there will be an attempt to render the chart without linting it first "isStrictLinted": ["true"/"false"] - linting should be strict or not It is possible to provide helm version in three ways: 1. Select exact version from supported versions e.g. "3.4.1" 2. Select major helm version e.g. "v3" for Helm 3. In this case app will use the latest supported version. 3. In case when field version is not present in request then app gets helm version from "apiVersion" field located in the main chart (Chart.yaml). Mapping rules: apiVersion: v1 -> the latest available helm 3 apiVersion: v2 -> the latest available helm 3 #### Response Json with the following fields: "valid": ["true"/"false"] - passed linting without errors "deployable": ["true"/"false"] - passed template rendering without errors "lintErrors": [ARRAY OF STRINGS] - linting errors "lintWarnings": [ARRAY OF STRINGS] - linting warnings "renderErrors": [ARRAY OF STRINGS] - rendering errors * Supported versions [GET] `http://localhost:[PORT]/versions` #### Response Following Json: [ARRAY OF STRINGS] - supported helm versions * Swagger UI [GET] `http://localhost:[PORT]/docs