diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main')
10 files changed, 456 insertions, 10 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HelmValidatorConfigReader.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HelmValidatorConfigReader.java new file mode 100644 index 0000000000..4d4fff7971 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HelmValidatorConfigReader.java @@ -0,0 +1,78 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nokia + * ================================================================================ + * 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.openecomp.sdc.validation.impl.util; + +import org.onap.config.api.Configuration; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; +import org.openecomp.sdc.validation.type.helmvalidator.HelmValidatorConfig; +import org.openecomp.sdc.validation.type.helmvalidator.HelmValidatorConfig.HelmValidationConfigBuilder; + +public class HelmValidatorConfigReader { + + private static final Logger LOGGER = LoggerFactory.getLogger(HelmValidatorConfigReader.class); + private static final String CONFIG_NAMESPACE = "helmvalidator"; + private static final String ERROR_MESSAGE = "Failed to read helm validator configuration key '{}', default value '{}' will be used"; + private final Configuration config; + + public HelmValidatorConfigReader(Configuration config) { + this.config = config; + } + + public HelmValidatorConfig getHelmValidatorConfig() { + String version = readValue("hValidatorVersion", "3.5.2"); + String validatorUrl = readValue("hValidatorUrl", "http://localhost:8082/validate"); + boolean enabled = readValue("hValidatorEnabled", false); + boolean deployable = readValue("hValidatorDeployable", false); + boolean lintable = readValue("hValidatorLintable", false); + boolean strictLintable = readValue("hValidatorStrictLintable", false); + + HelmValidationConfigBuilder validationConfigBuilder = new HelmValidationConfigBuilder(); + validationConfigBuilder.setValidatorUrl(validatorUrl); + validationConfigBuilder.setVersion(version); + validationConfigBuilder.setEnabled(enabled); + validationConfigBuilder.setDeployable(deployable); + validationConfigBuilder.setLintable(lintable); + validationConfigBuilder.setStrictLintable(strictLintable); + return validationConfigBuilder.build(); + } + + + private String readValue(String key, String defaultValue) { + try { + String value = config.getAsString(CONFIG_NAMESPACE, key); + return (value == null) ? defaultValue : value; + } catch (Exception e) { + LOGGER.error(ERROR_MESSAGE, key, defaultValue, e); + return defaultValue; + } + } + + private boolean readValue(String key, boolean defaultValue) { + try { + Boolean value = config.getAsBooleanValue(CONFIG_NAMESPACE, key); + return (value == null) ? defaultValue : value; + } catch (Exception e) { + LOGGER.error(ERROR_MESSAGE, key, defaultValue, e); + return defaultValue; + } + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HelmValidatorHttpClient.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HelmValidatorHttpClient.java new file mode 100644 index 0000000000..299d996562 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HelmValidatorHttpClient.java @@ -0,0 +1,73 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nokia + * ================================================================================ + * 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.openecomp.sdc.validation.impl.util; + +import org.apache.http.HttpEntity; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.openecomp.sdc.common.http.client.api.HttpExecuteException; +import org.openecomp.sdc.common.http.client.api.HttpRequestHandler; +import org.openecomp.sdc.common.http.client.api.HttpResponse; +import org.openecomp.sdc.common.http.config.HttpClientConfig; +import org.openecomp.sdc.common.http.config.Timeouts; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; +import org.openecomp.sdc.validation.type.helmvalidator.HelmValidatorConfig; + +public class HelmValidatorHttpClient { + + private static final Logger LOGGER = LoggerFactory.getLogger(HelmValidatorHttpClient.class); + private static final int TIMEOUT_MS = 10000; + private static final String FILE = "file"; + private static final String IS_LINTED = "isLinted"; + private static final String IS_STRICT_LINTED = "isStrictLinted"; + private static final String VERSION_DESIRED = "versionDesired"; + private final HttpRequestHandler httpRequestHandler; + + public HelmValidatorHttpClient(HttpRequestHandler httpRequestHandler) { + this.httpRequestHandler = httpRequestHandler; + } + + public HttpResponse<String> execute(String fileName, byte[] helmChartFile, HelmValidatorConfig validatorConfig) throws Exception{ + LOGGER.info("Trying to execute Helm chart validation. File name: {}", fileName); + try { + HttpEntity entity = MultipartEntityBuilder.create() + .addBinaryBody(FILE, helmChartFile, ContentType.DEFAULT_BINARY, fileName) + .addTextBody(IS_LINTED, getString(validatorConfig.isLintable())) + .addTextBody(IS_STRICT_LINTED, getString(validatorConfig.isStrictLintable())) + .addTextBody(VERSION_DESIRED, validatorConfig.getVersion()) + .build(); + + HttpResponse<String> httpResponse = httpRequestHandler.post(validatorConfig.getValidatorUrl(), + null, entity, new HttpClientConfig(new Timeouts(TIMEOUT_MS, TIMEOUT_MS))); + LOGGER.info("Received response from Helm chart validator with code {}", httpResponse.getStatusCode()); + LOGGER.debug("Response from Helm chart validator: {}", httpResponse); + + return httpResponse; + } catch (HttpExecuteException e) { + LOGGER.info("Exception during call to Helm validator {}", e.getMessage()); + } + throw new Exception("Http response is invalid."); + } + + private String getString(boolean helmValidatorConfig) { + return Boolean.toString(helmValidatorConfig); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/GlobalContextUtil.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/GlobalContextUtil.java index 0e199cc472..b490f4b35f 100644 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/GlobalContextUtil.java +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/GlobalContextUtil.java @@ -25,6 +25,7 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import org.openecomp.core.validation.types.GlobalValidationContext; import org.openecomp.sdc.heat.datatypes.manifest.FileData; +import org.openecomp.sdc.heat.datatypes.manifest.FileData.Type; import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent; import org.openecomp.sdc.heat.services.manifest.ManifestUtil; import org.openecomp.sdc.validation.util.ValidationUtil; @@ -34,20 +35,22 @@ class GlobalContextUtil { private GlobalContextUtil() { } - static Set<String> findPmDictionaryFiles(GlobalValidationContext globalContext) { + static Set<String> findFilesByType(GlobalValidationContext globalContext, Type type) { if (isManifestMissing(globalContext)) { return Set.of(); } Map<String, FileData.Type> filesWithTypes = readAllFilesWithTypes(globalContext); - return filterPmDictionaryFiles(filesWithTypes); + return filterFilesByType(filesWithTypes, entry -> entry.getValue().equals(type)); } private static boolean isManifestMissing(GlobalValidationContext globalContext) { return globalContext.getFileContent("MANIFEST.json").isEmpty(); } - private static Set<String> filterPmDictionaryFiles(Map<String, FileData.Type> filesWithTypes) { - return filesWithTypes.entrySet().stream().filter(isPmDictionaryType()).map(Map.Entry::getKey).collect(Collectors.toSet()); + private static Set<String> filterFilesByType(Map<String, FileData.Type> filesWithTypes, + Predicate<Map.Entry<String, FileData.Type>> typePredicate) { + return filesWithTypes.entrySet().stream().filter(typePredicate).map(Map.Entry::getKey) + .collect(Collectors.toSet()); } private static Map<String, FileData.Type> readAllFilesWithTypes(GlobalValidationContext globalContext) { @@ -55,7 +58,4 @@ class GlobalContextUtil { return ManifestUtil.getFileTypeMap(manifestContent); } - private static Predicate<Map.Entry<String, FileData.Type>> isPmDictionaryType() { - return entry -> entry.getValue().equals(FileData.Type.PM_DICTIONARY); - } } diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatValidator.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatValidator.java index 19b8892182..fbfd9c7b29 100644 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatValidator.java +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatValidator.java @@ -1,5 +1,6 @@ /* * Copyright © 2016-2017 European Support Limited + * Copyright (C) 2021 Nokia * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +34,7 @@ import org.openecomp.sdc.common.errors.Messages; import org.openecomp.sdc.datatypes.error.ErrorLevel; import org.openecomp.sdc.heat.datatypes.DefinedHeatParameterTypes; import org.openecomp.sdc.heat.datatypes.manifest.FileData; +import org.openecomp.sdc.heat.datatypes.manifest.FileData.Type; import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent; import org.openecomp.sdc.heat.datatypes.model.Environment; import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate; @@ -453,7 +455,10 @@ public class HeatValidator implements Validator { globalContext.getFiles().stream().filter(fileName -> FileData.isHeatFile(fileTypeMap.get(fileName))).forEach( fileName -> validate(fileName, fileEnvMap.get(fileName) == null ? null : fileEnvMap.get(fileName).getFile(), artifacts, globalContext)); Set<String> manifestArtifacts = ManifestUtil.getArtifacts(manifestContent); - globalContext.getFiles().stream().filter(fileName -> isManifestArtifact(manifestArtifacts, fileName) && isNotArtifact(artifacts, fileName)) + globalContext.getFiles().stream() + .filter(fileName -> isManifestArtifact(manifestArtifacts, fileName) + && isNotArtifact(artifacts, fileName) + && isNotHelmType(fileTypeMap, fileName)) .forEach(fileName -> { globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder.getErrorWithParameters(ERROR_CODE_HOT_11, Messages.ARTIFACT_FILE_NOT_REFERENCED.getErrorMessage())); @@ -468,6 +473,10 @@ public class HeatValidator implements Validator { } } + private boolean isNotHelmType(Map<String, Type> fileTypeMap, String fileName) { + return !Type.HELM.equals(fileTypeMap.get(fileName)); + } + private boolean isManifestArtifact(Set<String> manifestArtifacts, String fileName) { return manifestArtifacts.contains(fileName); } diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HelmValidator.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HelmValidator.java new file mode 100644 index 0000000000..272d0a88b9 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HelmValidator.java @@ -0,0 +1,106 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nokia + * ================================================================================ + * 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.openecomp.sdc.validation.impl.validators; + +import com.google.gson.Gson; +import java.io.InputStream; +import java.util.Optional; +import java.util.Set; +import org.onap.config.api.ConfigurationManager; +import org.openecomp.core.validation.ErrorMessageCode; +import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder; +import org.openecomp.core.validation.types.GlobalValidationContext; +import org.openecomp.sdc.common.http.client.api.HttpRequestHandler; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.heat.datatypes.manifest.FileData.Type; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; +import org.openecomp.sdc.validation.Validator; +import org.openecomp.sdc.validation.impl.util.HelmValidatorConfigReader; +import org.openecomp.sdc.validation.impl.util.HelmValidatorHttpClient; +import org.openecomp.sdc.validation.type.helmvalidator.HelmValidatorConfig; +import org.openecomp.sdc.validation.type.helmvalidator.HelmValidatorErrorResponse; +import org.openecomp.sdc.validation.type.helmvalidator.HelmValidatorResponse; + +public class HelmValidator implements Validator { + + private static final Logger LOGGER = LoggerFactory.getLogger(HelmValidator.class); + private static final ErrorMessageCode VALIDATOR_ERROR_CODE = new ErrorMessageCode("HELM VALIDATOR"); + private static final String EXCEPTION_MESSAGE = "Could not execute file %s validation using Helm"; + + private final HelmValidatorHttpClient helmValidatorHttpClient; + private final HelmValidatorConfig helmValidatorConfig; + + public HelmValidator() { + this(new HelmValidatorHttpClient(HttpRequestHandler.get()), + new HelmValidatorConfigReader(ConfigurationManager.lookup()).getHelmValidatorConfig()); + } + + HelmValidator(HelmValidatorHttpClient helmValidatorHttpClient, HelmValidatorConfig helmValidatorConfig) { + this.helmValidatorHttpClient = helmValidatorHttpClient; + this.helmValidatorConfig = helmValidatorConfig; + } + + @Override + public void validate(GlobalValidationContext globalContext) { + if (helmValidatorConfig.isEnabled()) { + Set<String> manifestFiles = GlobalContextUtil.findFilesByType(globalContext, Type.HELM); + manifestFiles.forEach(file -> tryValidateSingleChart(globalContext, file)); + } + } + + private void tryValidateSingleChart(GlobalValidationContext globalContext, String fileName) { + Optional<InputStream> fileContent = globalContext.getFileContent(fileName); + if (fileContent.isPresent()) { + try { + validateSingleHelmChart(fileName, fileContent.get().readAllBytes(), globalContext); + } catch (Exception exception) { + String validationErrorMessage = String.format(EXCEPTION_MESSAGE, fileName); + LOGGER.error(validationErrorMessage + " exception: " + exception.getMessage()); + addError(fileName, globalContext, validationErrorMessage, ErrorLevel.WARNING); + } + } else { + LOGGER.debug("File content is not present " + fileName); + } + } + + private void validateSingleHelmChart(String fileName, byte[] file, GlobalValidationContext globalContext) + throws Exception { + var httpResponse = helmValidatorHttpClient.execute(fileName, file, helmValidatorConfig); + if (httpResponse.getStatusCode() == 200) { + var helmValidatorResponse = new Gson() + .fromJson(httpResponse.getResponse(), HelmValidatorResponse.class); + helmValidatorResponse.getRenderErrors().forEach(error -> + addError(fileName, globalContext, error, ErrorLevel.ERROR)); + helmValidatorResponse.getLintError().forEach(lintError -> + addError(fileName, globalContext, lintError, ErrorLevel.WARNING)); + helmValidatorResponse.getLintWarning().forEach(lintWarning -> + addError(fileName, globalContext, lintWarning, ErrorLevel.WARNING)); + } else { + var errorResponse = new Gson().fromJson(httpResponse.getResponse(), HelmValidatorErrorResponse.class); + addError(fileName, globalContext, errorResponse.getMessage(), ErrorLevel.WARNING); + } + } + + private void addError(String fileName, GlobalValidationContext globalContext, String error, ErrorLevel level) { + globalContext.addMessage(fileName, level, ErrorMessagesFormatBuilder + .getErrorWithParameters(VALIDATOR_ERROR_CODE, error, fileName)); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/PmDictionaryValidator.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/PmDictionaryValidator.java index 4dad4afc16..22b5efc838 100644 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/PmDictionaryValidator.java +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/PmDictionaryValidator.java @@ -30,6 +30,7 @@ import org.openecomp.core.validation.ErrorMessageCode; import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder; import org.openecomp.core.validation.types.GlobalValidationContext; import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.heat.datatypes.manifest.FileData.Type; import org.openecomp.sdc.validation.Validator; public class PmDictionaryValidator implements Validator { @@ -38,7 +39,7 @@ public class PmDictionaryValidator implements Validator { @Override public void validate(GlobalValidationContext globalContext) { - Set<String> pmDictionaryFiles = GlobalContextUtil.findPmDictionaryFiles(globalContext); + Set<String> pmDictionaryFiles = GlobalContextUtil.findFilesByType(globalContext, Type.PM_DICTIONARY); validatePmDictionaryFiles(globalContext, pmDictionaryFiles); } diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/YamlValidator.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/YamlValidator.java index cb9469a146..eb43925d02 100644 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/YamlValidator.java +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/YamlValidator.java @@ -28,6 +28,7 @@ import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder; import org.openecomp.core.validation.types.GlobalValidationContext; import org.openecomp.sdc.common.errors.Messages; import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.heat.datatypes.manifest.FileData.Type; import org.openecomp.sdc.validation.Validator; import org.openecomp.sdc.validation.impl.util.YamlValidatorUtil; import org.yaml.snakeyaml.DumperOptions; @@ -44,7 +45,7 @@ public class YamlValidator implements Validator { @Override public void validate(GlobalValidationContext globalContext) { - Set<String> pmDictionaryFiles = GlobalContextUtil.findPmDictionaryFiles(globalContext); + Set<String> pmDictionaryFiles = GlobalContextUtil.findFilesByType(globalContext, Type.PM_DICTIONARY); Collection<String> files = globalContext .files((fileName, globalValidationContext) -> FileExtensionUtils.isYaml(fileName) && !pmDictionaryFiles.contains(fileName)); files.forEach(fileName -> validate(fileName, globalContext)); diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/type/helmvalidator/HelmValidatorConfig.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/type/helmvalidator/HelmValidatorConfig.java new file mode 100644 index 0000000000..45d0377651 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/type/helmvalidator/HelmValidatorConfig.java @@ -0,0 +1,78 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nokia + * ================================================================================ + * 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.openecomp.sdc.validation.type.helmvalidator; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class HelmValidatorConfig { + private final String validatorUrl; + private final String version; + private final boolean isEnabled; + private final boolean isDeployable; + private final boolean isLintable; + private final boolean isStrictLintable; + + public static class HelmValidationConfigBuilder { + + private String validatorUrl; + private String version; + private boolean enabled; + private boolean deployable; + private boolean lintable; + private boolean strictLintable; + + public HelmValidationConfigBuilder setVersion(String version) { + this.version = version; + return this; + } + + public HelmValidationConfigBuilder setEnabled(boolean enabled) { + this.enabled = enabled; + return this; + } + + public HelmValidationConfigBuilder setDeployable(boolean deployable) { + this.deployable = deployable; + return this; + } + + public HelmValidationConfigBuilder setLintable(boolean lintable) { + this.lintable = lintable; + return this; + } + + public HelmValidationConfigBuilder setStrictLintable(boolean strictLintable) { + this.strictLintable = strictLintable; + return this; + } + + public HelmValidationConfigBuilder setValidatorUrl(String validatorUrl) { + this.validatorUrl = validatorUrl; + return this; + } + + public HelmValidatorConfig build() { + return new HelmValidatorConfig(validatorUrl, version, enabled, deployable, lintable, strictLintable); + } + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/type/helmvalidator/HelmValidatorErrorResponse.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/type/helmvalidator/HelmValidatorErrorResponse.java new file mode 100644 index 0000000000..c92b528d6f --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/type/helmvalidator/HelmValidatorErrorResponse.java @@ -0,0 +1,34 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nokia + * ================================================================================ + * 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.openecomp.sdc.validation.type.helmvalidator; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * Helm validator error response + */ + +@AllArgsConstructor +public final class HelmValidatorErrorResponse { + + @Getter + private final String message; + +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/type/helmvalidator/HelmValidatorResponse.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/type/helmvalidator/HelmValidatorResponse.java new file mode 100644 index 0000000000..40deeb57a3 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/type/helmvalidator/HelmValidatorResponse.java @@ -0,0 +1,66 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nokia + * ================================================================================ + * 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.openecomp.sdc.validation.type.helmvalidator; + +import com.google.gson.annotations.SerializedName; +import java.util.Collections; +import java.util.List; +import lombok.Getter; + +public final class HelmValidatorResponse { + + private List<String> renderErrors; + private List<String> lintWarning; + private List<String> lintError; + @Getter + private String versionUsed; + @SerializedName("valid") + @Getter + private Boolean isValid; + @SerializedName("deployable") + @Getter + private Boolean isDeployable; + + /** + * Get renderErrors + * + * @return renderErrors + **/ + public List<String> getRenderErrors() { + return renderErrors != null ? renderErrors : Collections.emptyList(); + } + + /** + * Get lintWarning + * + * @return lintWarning + **/ + public List<String> getLintWarning() { + return lintWarning != null ? lintWarning : Collections.emptyList(); + } + + /** + * Get lintError + * + * @return lintError + **/ + public List<String> getLintError() { + return lintError != null ? lintError : Collections.emptyList(); + } +} |