diff options
author | siddharth0905 <siddharth.singh4@amdocs.com> | 2018-09-20 10:00:37 +0300 |
---|---|---|
committer | vempo <vitaliy.emporopulo@amdocs.com> | 2018-09-25 18:07:44 +0300 |
commit | 2b7766dd6ecf6fc011c917a3e99cf538f8cfd6eb (patch) | |
tree | 3d44b5ef8598cbf479640f0822a0219467e9ff18 /openecomp-be/lib | |
parent | b8f536584bd539e232f6b22a2d80430055b59e42 (diff) |
Test coverage-Corrections
Increase test coverage
Change-Id: I8268d31486b3410fbe8791c6d8c4eed4b237462c
Issue-ID: SDC-1673
Signed-off-by: siddharth0905 <siddharth.singh4@amdocs.com>
Signed-off-by: vempo <vitaliy.emporopulo@amdocs.com>
Diffstat (limited to 'openecomp-be/lib')
54 files changed, 3732 insertions, 2273 deletions
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileContentHandler.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileContentHandler.java index d5cd56e058..c96ceeb46a 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileContentHandler.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileContentHandler.java @@ -7,9 +7,9 @@ * 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. @@ -20,8 +20,6 @@ package org.openecomp.core.utilities.file; -import org.apache.commons.collections4.MapUtils; - import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -31,111 +29,111 @@ import java.util.Optional; import java.util.Set; import java.util.function.Function; +import org.apache.commons.collections4.MapUtils; + public class FileContentHandler { - private Map<String, byte[]> files = new HashMap<>(); + private Map<String, byte[]> files = new HashMap<>(); + + /** + * Gets file content. + * + * @param fileName the file name + * @return the file content + */ + public InputStream getFileContent(String fileName) { - /** - * Gets file content. - * - * @param fileName the file name - * @return the file content - */ - public InputStream getFileContent(String fileName) { + byte[] content = files.get(fileName); + if (content == null || content.length == 0) { + return null; + } - byte[] content = files.get(fileName); - if (content == null || content.length == 0) { - return null; + return new ByteArrayInputStream(content); } - return new ByteArrayInputStream(content); - } - - /** - * Applies a business logic to a file's content while taking care of all retrieval logic. - * - * @param fileName name of a file inside this content handler. - * @param processor the business logic to work on the file's input stream, which may not be set - * (check the {@link Optional} if no such file can be found - * @param <T> return type, may be {@link java.lang.Void} - * - * @return result produced by the processor - */ - public <T> T processFileContent(String fileName, Function<Optional<InputStream>, T> processor) { - - // do not throw IOException to mimic the existing uses of getFileContent() - try (InputStream contentInputStream = getFileContent(fileName)) { - return processor.apply(Optional.ofNullable(contentInputStream)); - } catch (IOException e) { - throw new ProcessingException("Failed to process file: " + fileName, e); + /** + * Applies a business logic to a file's content while taking care of all retrieval logic. + * + * @param fileName name of a file inside this content handler. + * @param processor the business logic to work on the file's input stream, which may not be set + * (check the {@link Optional} if no such file can be found + * @param <T> return type, may be {@link java.lang.Void} + * @return result produced by the processor + */ + public <T> T processFileContent(String fileName, Function<Optional<InputStream>, T> processor) { + + // do not throw IOException to mimic the existing uses of getFileContent() + try (InputStream contentInputStream = getFileContent(fileName)) { + return processor.apply(Optional.ofNullable(contentInputStream)); + } catch (IOException e) { + throw new ProcessingException("Failed to process file: " + fileName, e); + } } - } - public void addFile(String fileName, byte[] content) { - files.put(fileName, content); - } + public void addFile(String fileName, byte[] content) { + files.put(fileName, content); + } - public void addFile(String fileName, InputStream is) { + public void addFile(String fileName, InputStream is) { - files.put(fileName, FileUtils.toByteArray(is)); - } + files.put(fileName, FileUtils.toByteArray(is)); + } - public Map<String, byte[]> getFiles() { - return files; - } + public Map<String, byte[]> getFiles() { + return files; + } - public void setFiles(Map<String, byte[]> files) { - this.files = files; - } + public void setFiles(Map<String, byte[]> files) { + this.files = files; + } - public void setFiles(FileContentHandler extFiles) { - extFiles.getFileList().stream() - .forEach(fileName -> this.addFile(fileName, extFiles.getFileContent(fileName))); - } + public void setFiles(FileContentHandler extFiles) { + extFiles.getFileList().forEach(fileName -> this.addFile(fileName, extFiles.getFileContent(fileName))); + } - public Set<String> getFileList() { - return files.keySet(); - } + public Set<String> getFileList() { + return files.keySet(); + } - public void putAll(Map<String, byte[]> files) { - this.files = files; - } + public void putAll(Map<String, byte[]> files) { + this.files = files; + } - public void addAll(FileContentHandler other) { - this.files.putAll(other.files); - } + public void addAll(FileContentHandler other) { + this.files.putAll(other.files); + } - public boolean isEmpty() { - return MapUtils.isEmpty(this.files); - } + public boolean isEmpty() { + return MapUtils.isEmpty(this.files); + } - public void remove(String fileName) { - files.remove(fileName); - } + public void remove(String fileName) { + files.remove(fileName); + } - public boolean containsFile(String fileName) { - return files.containsKey(fileName); - } + public boolean containsFile(String fileName) { + return files.containsKey(fileName); + } - /** - * An application-specific runtime exception - */ - private static class ProcessingException extends RuntimeException { + /** + * An application-specific runtime exception + */ + private static class ProcessingException extends RuntimeException { - public ProcessingException() { - super(); - } + public ProcessingException() { + super(); + } - public ProcessingException(String message) { - super(message); - } + public ProcessingException(String message) { + super(message); + } - public ProcessingException(Throwable cause) { - super(cause); - } + public ProcessingException(Throwable cause) { + super(cause); + } - public ProcessingException(String msg, Throwable cause) { - super(msg, cause); + public ProcessingException(String msg, Throwable cause) { + super(msg, cause); + } } - } } diff --git a/openecomp-be/lib/openecomp-heat-lib/pom.xml b/openecomp-be/lib/openecomp-heat-lib/pom.xml index 0d407e2ef6..9c2d5395b9 100644 --- a/openecomp-be/lib/openecomp-heat-lib/pom.xml +++ b/openecomp-be/lib/openecomp-heat-lib/pom.xml @@ -14,6 +14,10 @@ <dependencies> <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </dependency> + <dependency> <groupId>org.onap.sdc.common</groupId> <artifactId>onap-configuration-management-core</artifactId> <version>${project.version}</version> diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/DefinedHeatParameterTypes.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/DefinedHeatParameterTypes.java index 0367d0969e..600917201b 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/DefinedHeatParameterTypes.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/DefinedHeatParameterTypes.java @@ -7,9 +7,9 @@ * 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. @@ -20,102 +20,102 @@ package org.openecomp.sdc.heat.datatypes; -import org.apache.commons.lang.math.NumberUtils; -import org.apache.commons.lang3.ClassUtils; - import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import org.apache.commons.lang.math.NumberUtils; +import org.apache.commons.lang3.ClassUtils; + public enum DefinedHeatParameterTypes { - NUMBER("number"), - STRING("string"), - COMMA_DELIMITED_LIST("comma_delimited_list"), - JSON("json"), - BOOLEAN("boolean"); - - private static Map<String, DefinedHeatParameterTypes> stringToDefinedType = new HashMap<>(); - - static { - stringToDefinedType = new HashMap<>(); - for (DefinedHeatParameterTypes definedHeatParameterType : DefinedHeatParameterTypes.values()) { - stringToDefinedType.put(definedHeatParameterType.type, definedHeatParameterType); + NUMBER("number"), + STRING("string"), + COMMA_DELIMITED_LIST("comma_delimited_list"), + JSON("json"), + BOOLEAN("boolean"); + + private static Map<String, DefinedHeatParameterTypes> stringToDefinedType; + + static { + stringToDefinedType = new HashMap<>(); + for (DefinedHeatParameterTypes definedHeatParameterType : DefinedHeatParameterTypes.values()) { + stringToDefinedType.put(definedHeatParameterType.type, definedHeatParameterType); + } + } + + private String type; + + DefinedHeatParameterTypes(String type) { + this.type = type; } - } - - private String type; - - DefinedHeatParameterTypes(String type) { - this.type = type; - } - - public static DefinedHeatParameterTypes findByHeatResource(String type) { - return stringToDefinedType.get(type); - } - - /** - * Is value is from given type boolean. - * - * @param value the value - * @param parameterType the parameter type - * @return the boolean - */ - public static boolean isValueIsFromGivenType(Object value, String parameterType) { - DefinedHeatParameterTypes definedType = findByHeatResource(parameterType); - - if (Objects.nonNull(definedType)) { - switch (definedType) { - case NUMBER: - return NumberUtils.isNumber(String.valueOf(value)); - - case BOOLEAN: - return HeatBoolean.isValueBoolean(value); - - case COMMA_DELIMITED_LIST: - return isValueCommaDelimitedList(value); - - case JSON: - return isValueJson(value); - - case STRING: - return isValueString(value); - default: - } + + public static DefinedHeatParameterTypes findByHeatResource(String type) { + return stringToDefinedType.get(type); } - return false; - } + /** + * Is value is from given type boolean. + * + * @param value the value + * @param parameterType the parameter type + * @return the boolean + */ + public static boolean isValueIsFromGivenType(Object value, String parameterType) { + DefinedHeatParameterTypes definedType = findByHeatResource(parameterType); + + if (Objects.nonNull(definedType)) { + switch (definedType) { + case NUMBER: + return NumberUtils.isNumber(String.valueOf(value)); + + case BOOLEAN: + return HeatBoolean.isValueBoolean(value); + + case COMMA_DELIMITED_LIST: + return isValueCommaDelimitedList(value); + + case JSON: + return isValueJson(value); + + case STRING: + return isValueString(value); + default: + } + } + + return false; + } - public static boolean isNovaServerEnvValueIsFromRightType(Object value) { - return isValueIsFromGivenType(value, COMMA_DELIMITED_LIST.getType()) - || isValueIsFromGivenType(value, STRING.getType()); - } + public static boolean isNovaServerEnvValueIsFromRightType(Object value) { + return isValueIsFromGivenType(value, COMMA_DELIMITED_LIST.getType()) + || isValueIsFromGivenType(value, STRING.getType()); + } - private static boolean isValueCommaDelimitedList(Object value) { - return value instanceof List - || String.valueOf(value).contains(",") - || isValueIsFromGivenType(value, DefinedHeatParameterTypes.STRING.type); - } + private static boolean isValueCommaDelimitedList(Object value) { + return value instanceof List + || String.valueOf(value).contains(",") + || isValueIsFromGivenType(value, DefinedHeatParameterTypes.STRING.type); + } - private static boolean isValueString(Object value) { - return value instanceof String - || ClassUtils.isPrimitiveOrWrapper(value.getClass()); - } + private static boolean isValueString(Object value) { + return value instanceof String + || ClassUtils.isPrimitiveOrWrapper(value.getClass()); + } - private static boolean isValueJson(Object value) { - return (value instanceof Map) || (value instanceof List); - } + private static boolean isValueJson(Object value) { + return (value instanceof Map) || (value instanceof List); + } - public static boolean isEmptyValueInEnv(Object value) { - return Objects.isNull(value); - } + public static boolean isEmptyValueInEnv(Object value) { + return Objects.isNull(value); + } - public String getType() { - return type; - } + public String getType() { + return type; + } - public void setType(String type) { - this.type = type; - } + public void setType(String type) { + this.type = type; + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/HeatBoolean.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/HeatBoolean.java index 5753fa2a27..19fa2d5964 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/HeatBoolean.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/HeatBoolean.java @@ -12,10 +12,13 @@ * 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. -*/ + */ package org.openecomp.sdc.heat.datatypes; +import java.util.HashSet; +import java.util.Set; + import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.ErrorCategory; import org.openecomp.sdc.common.errors.ErrorCode; @@ -23,77 +26,75 @@ import org.openecomp.sdc.heat.services.ErrorCodes; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; -import java.util.HashSet; -import java.util.Set; - public class HeatBoolean { - private static Set<Object> heatFalse; - private static Set<Object> heatTrue; - private static final Logger LOG = LoggerFactory.getLogger(HeatBoolean.class.getName()); - - private HeatBoolean() { - //Utility classes, which are a collection of static members, are not meant to be instantiated - } - static { + private static Set<Object> heatFalse; + private static Set<Object> heatTrue; + private static final Logger LOG = LoggerFactory.getLogger(HeatBoolean.class.getName()); + private HeatBoolean() { + //Utility classes, which are a collection of static members, are not meant to be instantiated + } - heatFalse = new HashSet<>(); - heatFalse.add("f"); - heatFalse.add(false); - heatFalse.add("false"); - heatFalse.add("off"); - heatFalse.add("n"); - heatFalse.add("no"); - heatFalse.add(0); + static { - heatTrue = new HashSet<>(); - heatTrue.add("t"); - heatTrue.add(true); - heatTrue.add("true"); - heatTrue.add("on"); - heatTrue.add("y"); - heatTrue.add("yes"); - heatTrue.add(1); - } + heatFalse = new HashSet<>(); + heatFalse.add("f"); + heatFalse.add(false); + heatFalse.add("false"); + heatFalse.add("off"); + heatFalse.add("n"); + heatFalse.add("no"); + heatFalse.add(0); - /** - * Eval boolean. - * - * @param value the value - * @return the boolean - */ - public static Boolean eval(Object value) { + heatTrue = new HashSet<>(); + heatTrue.add("t"); + heatTrue.add(true); + heatTrue.add("true"); + heatTrue.add("on"); + heatTrue.add("y"); + heatTrue.add("yes"); + heatTrue.add(1); - if (value instanceof String) { - value = ((String) value).toLowerCase(); - } - if (heatFalse.contains(value)) { - return false; - } else if (heatTrue.contains(value)) { - return true; - } else { - throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withId(ErrorCodes.INVALID_BOOLEAN) - .withCategory(ErrorCategory.APPLICATION) - .withMessage("Invalid boolean value [" + value + "].").build()); } - } + /** + * Eval boolean. + * + * @param value the value + * @return the boolean + */ + public static Boolean eval(Object value) { + + if (value instanceof String) { + value = ((String) value).toLowerCase(); + } + if (heatFalse.contains(value)) { + return false; + } else if (heatTrue.contains(value)) { + return true; + } else { + throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withId(ErrorCodes.INVALID_BOOLEAN) + .withCategory(ErrorCategory.APPLICATION) + .withMessage("Invalid boolean value [" + value + "].").build()); + } + + } - /** - * Is value boolean boolean. - * - * @param value the value - * @return the boolean - */ - public static boolean isValueBoolean(Object value) { - try { - eval(value); - return true; - } catch (CoreException ce) { - LOG.error("Failed to evaluate value as boolean: {}", value, ce); - return false; + /** + * Is value boolean boolean. + * + * @param value the value + * @return the boolean + */ + public static boolean isValueBoolean(Object value) { + try { + eval(value); + return true; + } catch (CoreException ce) { + LOG.error("Failed to evaluate value as boolean: {}", value, ce); + return false; + } } - } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/FileData.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/FileData.java index 2bc549c058..35276b4f11 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/FileData.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/FileData.java @@ -7,9 +7,9 @@ * 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. @@ -20,15 +20,28 @@ package org.openecomp.sdc.heat.datatypes.manifest; -import org.apache.commons.collections4.CollectionUtils; - -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import java.util.function.Predicate; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; +import org.apache.commons.collections4.CollectionUtils; + +@Data public class FileData { protected static final Set<Type> heatFileTypes = - new HashSet<>(Arrays.asList(Type.HEAT, Type.HEAT_NET, Type.HEAT_VOL)); + new HashSet<>(Arrays.asList(Type.HEAT, Type.HEAT_NET, Type.HEAT_VOL)); + + @Getter(AccessLevel.NONE) + @Setter(AccessLevel.NONE) private Boolean isBase; private String parentFile; private String file; @@ -40,8 +53,8 @@ public class FileData { } public static boolean isHeatFile(Type type) { - return heatFileTypes.contains(type); - } + return heatFileTypes.contains(type); + } public Boolean getBase() { return isBase; @@ -51,43 +64,11 @@ public class FileData { isBase = base; } - public String getFile() { - return file; - } - - public void setFile(String file) { - this.file = file; - } - - public String getParentFile() { - return parentFile; - } - - public void setParentFile(String parentFile) { - this.parentFile = parentFile; - } - - public Type getType() { - return type; - } - - public void setType(Type type) { - this.type = type; - } - - public List<FileData> getData() { - return data; - } - - public void setData(List<FileData> data) { - this.data = data; - } - /** - * Add file data. - * - * @param data the data - */ + * Add file data. + * + * @param data the data + */ public void addFileData(FileData data) { if (CollectionUtils.isEmpty(this.data)) { this.data = new ArrayList<>(); @@ -95,40 +76,32 @@ public class FileData { this.data.add(data); } + @AllArgsConstructor + @Getter public enum Type { - - HEAT("HEAT"), - HEAT_ENV("HEAT_ENV"), - HEAT_NET("HEAT_NET"), - HEAT_VOL("HEAT_VOL"), - CHEF("CHEF"), - PUPPET("PUPPET"), - SHELL("SHELL"), - YANG("YANG"), - YANG_XML("YANG_XML"), - BPEL("BPEL"), - DG_XML("DG_XML"), - MURANO_PKG("MURANO_PKG"), - VENDOR_LICENSE("VENDOR_LICENSE"), - VF_LICENSE("VF_LICENSE"), - OTHER("OTHER"); + HEAT("HEAT"), + HEAT_ENV("HEAT_ENV"), + HEAT_NET("HEAT_NET"), + HEAT_VOL("HEAT_VOL"), + CHEF("CHEF"), + PUPPET("PUPPET"), + SHELL("SHELL"), + YANG("YANG"), + YANG_XML("YANG_XML"), + BPEL("BPEL"), + DG_XML("DG_XML"), + MURANO_PKG("MURANO_PKG"), + VENDOR_LICENSE("VENDOR_LICENSE"), + VF_LICENSE("VF_LICENSE"), + OTHER("OTHER"); private String displayName; - Type(String displayName) { - this.displayName = displayName; - } - - public String getDisplayName() { - return displayName; - } - public static boolean isArtifact(Type fileType) { - return !Arrays.asList(HEAT,HEAT_ENV, HEAT_VOL).contains(fileType); + return !Arrays.asList(HEAT, HEAT_ENV, HEAT_VOL).contains(fileType); } - public static boolean canBeAssociated(Type fileType) - { + public static boolean canBeAssociated(Type fileType) { return HEAT_VOL == fileType; } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/ManifestContent.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/ManifestContent.java index d89717125a..107b060094 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/ManifestContent.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/ManifestContent.java @@ -7,9 +7,9 @@ * 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. @@ -22,42 +22,13 @@ package org.openecomp.sdc.heat.datatypes.manifest; import java.util.List; -public class ManifestContent { - - String name; - String description; - String version; - List<FileData> data; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } +import lombok.Data; - public void setDescription(String description) { - this.description = description; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public List<FileData> getData() { - return data; - } +@Data +public class ManifestContent { - public void setData(List<FileData> data) { - this.data = data; - } + private String name; + private String description; + private String version; + private List<FileData> data; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/ManifestFile.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/ManifestFile.java index 607f52a86d..6a62740bf5 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/ManifestFile.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/manifest/ManifestFile.java @@ -7,9 +7,9 @@ * 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. @@ -20,24 +20,11 @@ package org.openecomp.sdc.heat.datatypes.manifest; -public class ManifestFile { - - String name; - ManifestContent content; - - public String getName() { - return name; - } +import lombok.Data; - public void setName(String name) { - this.name = name; - } - - public ManifestContent getContent() { - return content; - } +@Data +public class ManifestFile { - public void setContent(ManifestContent content) { - this.content = content; - } + private String name; + private ManifestContent content; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Constraint.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Constraint.java index ebbb064ce9..b3658bf5b1 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Constraint.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Constraint.java @@ -7,9 +7,9 @@ * 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. @@ -23,56 +23,35 @@ package org.openecomp.sdc.heat.datatypes.model; import java.util.ArrayList; import java.util.List; -public class Constraint { - private Object[] length; - private Integer[] range; - private List<Object> validValues; - private String pattern; - - public Constraint() { - } - - public Integer[] getRange() { - return range; - } +import lombok.AccessLevel; +import lombok.Data; +import lombok.Setter; - public void setRange(Integer[] inRange) { - this.range = new Integer[]{inRange[0], inRange[1]}; - } - - public List<Object> getValidValues() { - return validValues; - } +@Data +public class Constraint { - public void setValidValues(List<Object> validValues) { - this.validValues = validValues; - } + private Object[] length; + @Setter(AccessLevel.NONE) + private Integer[] range; + private List<Object> validValues; + private String pattern; - /** - * Add valid value. - * - * @param validValue the valid value - */ - public void addValidValue(Object validValue) { - if (this.validValues == null) { - this.validValues = new ArrayList<>(); + public Constraint() { } - validValues.add(validValue); - } - public Object[] getLength() { - return length; - } - - public void setLength(Object[] length) { - this.length = length; - } - - public String getPattern() { - return pattern; - } + public void setRange(Integer[] inRange) { + this.range = new Integer[] {inRange[0], inRange[1]}; + } - public void setPattern(String pattern) { - this.pattern = pattern; - } + /** + * Add valid value. + * + * @param validValue the valid value + */ + public void addValidValue(Object validValue) { + if (this.validValues == null) { + this.validValues = new ArrayList<>(); + } + validValues.add(validValue); + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ContrailResourceTypes.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ContrailResourceTypes.java index 47eaefafec..7538f11593 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ContrailResourceTypes.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ContrailResourceTypes.java @@ -7,9 +7,9 @@ * 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. @@ -25,45 +25,45 @@ import java.util.Map; import java.util.Objects; public enum ContrailResourceTypes { - ATTACH_POLICY("OS::Contrail::AttachPolicy"), - SERVICE_INSTANCE("OS::Contrail::ServiceInstance"), - SERVICE_TEMPLATE("OS::Contrail::ServiceTemplate"), - NETWORK_POLICY("OS::Contrail::NetworkPolicy"), - VIRTUAL_NETWORK("OS::Contrail::VirtualNetwork"); + ATTACH_POLICY("OS::Contrail::AttachPolicy"), + SERVICE_INSTANCE("OS::Contrail::ServiceInstance"), + SERVICE_TEMPLATE("OS::Contrail::ServiceTemplate"), + NETWORK_POLICY("OS::Contrail::NetworkPolicy"), + VIRTUAL_NETWORK("OS::Contrail::VirtualNetwork"); - private static Map<String, ContrailResourceTypes> stringToContrailResourceTypeMap; + private static Map<String, ContrailResourceTypes> stringToContrailResourceTypeMap; - static { - stringToContrailResourceTypeMap = new HashMap<>(); + static { + stringToContrailResourceTypeMap = new HashMap<>(); - for (ContrailResourceTypes type : ContrailResourceTypes.values()) { - stringToContrailResourceTypeMap.put(type.contrailResourceType, type); + for (ContrailResourceTypes type : ContrailResourceTypes.values()) { + stringToContrailResourceTypeMap.put(type.contrailResourceType, type); + } } - } - private String contrailResourceType; + private String contrailResourceType; - ContrailResourceTypes(String contrailResourceType) { - this.contrailResourceType = contrailResourceType; - } + ContrailResourceTypes(String contrailResourceType) { + this.contrailResourceType = contrailResourceType; + } - /** - * Find by contrail v 2 resource contrail resource types. - * - * @param contrailV2Resource the contrail v 2 resource - * @return the contrail resource types - */ - public static ContrailResourceTypes findByContrailV2Resource(String contrailV2Resource) { - return contrailV2Resource == null ? null - : stringToContrailResourceTypeMap.get(contrailV2Resource); + /** + * Find by contrail v 2 resource contrail resource types. + * + * @param contrailV2Resource the contrail v 2 resource + * @return the contrail resource types + */ + public static ContrailResourceTypes findByContrailV2Resource(String contrailV2Resource) { + return contrailV2Resource == null ? null + : stringToContrailResourceTypeMap.get(contrailV2Resource); - } + } - public static boolean isResourceTypeContrail(String resourceType) { - return Objects.nonNull(findByContrailV2Resource(resourceType)); - } + public static boolean isResourceTypeContrail(String resourceType) { + return Objects.nonNull(findByContrailV2Resource(resourceType)); + } - public String getContrailResourceType() { - return contrailResourceType; - } + public String getContrailResourceType() { + return contrailResourceType; + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ContrailV2ResourceTypes.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ContrailV2ResourceTypes.java index ff706093f8..40253ad1be 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ContrailV2ResourceTypes.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ContrailV2ResourceTypes.java @@ -7,9 +7,9 @@ * 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. @@ -25,36 +25,36 @@ import java.util.Map; import java.util.Objects; public enum ContrailV2ResourceTypes { - NETWROK_IPAM("OS::ContrailV2::NetworkIpam"), - VIRTUAL_NETWORK("OS::ContrailV2::VirtualNetwork"), - NETWORK_POLICY("OS::ContrailV2::NetworkPolicy"), - VIRTUAL_MACHINE_INTERFACE("OS::ContrailV2::VirtualMachineInterface"); + NETWROK_IPAM("OS::ContrailV2::NetworkIpam"), + VIRTUAL_NETWORK("OS::ContrailV2::VirtualNetwork"), + NETWORK_POLICY("OS::ContrailV2::NetworkPolicy"), + VIRTUAL_MACHINE_INTERFACE("OS::ContrailV2::VirtualMachineInterface"); - private static Map<String, ContrailV2ResourceTypes> stringToContrailV2ResourceTypeMap; + private static Map<String, ContrailV2ResourceTypes> stringToContrailV2ResourceTypeMap; - static { - stringToContrailV2ResourceTypeMap = new HashMap<>(); + static { + stringToContrailV2ResourceTypeMap = new HashMap<>(); - for (ContrailV2ResourceTypes type : ContrailV2ResourceTypes.values()) { - stringToContrailV2ResourceTypeMap.put(type.contrailV2ResourceType, type); + for (ContrailV2ResourceTypes type : ContrailV2ResourceTypes.values()) { + stringToContrailV2ResourceTypeMap.put(type.contrailV2ResourceType, type); + } } - } - private String contrailV2ResourceType; + private String contrailV2ResourceType; - ContrailV2ResourceTypes(String contrailV2ResourceType) { - this.contrailV2ResourceType = contrailV2ResourceType; - } + ContrailV2ResourceTypes(String contrailV2ResourceType) { + this.contrailV2ResourceType = contrailV2ResourceType; + } - public static ContrailV2ResourceTypes findByContrailV2Resource(String contrailV2Resource) { - return stringToContrailV2ResourceTypeMap.get(contrailV2Resource); - } + public static ContrailV2ResourceTypes findByContrailV2Resource(String contrailV2Resource) { + return stringToContrailV2ResourceTypeMap.get(contrailV2Resource); + } - public static boolean isResourceTypeContrailV2(String resourceType) { - return Objects.nonNull(findByContrailV2Resource(resourceType)); - } + public static boolean isResourceTypeContrailV2(String resourceType) { + return Objects.nonNull(findByContrailV2Resource(resourceType)); + } - public String getContrailV2ResourceType() { - return contrailV2ResourceType; - } + public String getContrailV2ResourceType() { + return contrailV2ResourceType; + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Environment.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Environment.java index b2f45d06d9..db5121b014 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Environment.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Environment.java @@ -7,9 +7,9 @@ * 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. @@ -22,14 +22,10 @@ package org.openecomp.sdc.heat.datatypes.model; import java.util.Map; -public class Environment { - Map<String, Object> parameters; +import lombok.Data; - public Map<String, Object> getParameters() { - return parameters; - } +@Data +public class Environment { - public void setParameters(Map<String, Object> parameters) { - this.parameters = parameters; - } + private Map<String, Object> parameters; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatOrchestrationTemplate.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatOrchestrationTemplate.java index 294bb9e47e..3387c43840 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatOrchestrationTemplate.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatOrchestrationTemplate.java @@ -7,9 +7,9 @@ * 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. @@ -23,68 +23,16 @@ package org.openecomp.sdc.heat.datatypes.model; import java.util.List; import java.util.Map; -public class HeatOrchestrationTemplate { - String heat_template_version; - String description; - List<ParameterGroup> parameter_groups; - Map<String, Parameter> parameters; - Map<String, Resource> resources; - Map<String, Output> outputs; - Map<String, Object> conditions; - - public String getHeat_template_version() { - return heat_template_version; - } - - public void setHeat_template_version(String heat_template_version) { - this.heat_template_version = heat_template_version; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public List<ParameterGroup> getParameter_groups() { - return parameter_groups; - } - - public void setParameter_groups(List<ParameterGroup> parameter_groups) { - this.parameter_groups = parameter_groups; - } +import lombok.Data; - public Map<String, Parameter> getParameters() { - return parameters; - } - - public void setParameters(Map<String, Parameter> parameters) { - this.parameters = parameters; - } - - public Map<String, Resource> getResources() { - return resources; - } - - public void setResources(Map<String, Resource> resources) { - this.resources = resources; - } - - public Map<String, Output> getOutputs() { - return outputs; - } - - public void setOutputs(Map<String, Output> outputs) { - this.outputs = outputs; - } - - public Map<String, Object> getConditions() { - return conditions; - } +@Data +public class HeatOrchestrationTemplate { - public void setConditions(Map<String, Object> conditions) { - this.conditions = conditions; - } + private String heat_template_version; + private String description; + private List<ParameterGroup> parameter_groups; + private Map<String, Parameter> parameters; + private Map<String, Resource> resources; + private Map<String, Output> outputs; + private Map<String, Object> conditions; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatPseudoParameters.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatPseudoParameters.java index c822a78a93..7ed8203bfe 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatPseudoParameters.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatPseudoParameters.java @@ -7,9 +7,9 @@ * 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. @@ -23,39 +23,33 @@ package org.openecomp.sdc.heat.datatypes.model; import java.util.ArrayList; import java.util.List; -public enum HeatPseudoParameters { - OS_STACK_NAME("OS::stack_name"), - OS_STACK_ID("OS::stack_id"), - OS_PROJECT_ID("OS::project_id"); - - private static List<String> pseudoParameterNames; +import lombok.Getter; - static { - pseudoParameterNames = new ArrayList<>(); - for (HeatPseudoParameters parameter : HeatPseudoParameters.values()) { - pseudoParameterNames.add(parameter.getPseudoParameter()); +@Getter +public enum HeatPseudoParameters { + OS_STACK_NAME("OS::stack_name"), + OS_STACK_ID("OS::stack_id"), + OS_PROJECT_ID("OS::project_id"); + + private static List<String> pseudoParameterNames; + private String pseudoParameter; + + static { + pseudoParameterNames = new ArrayList<>(); + for (HeatPseudoParameters parameter : HeatPseudoParameters.values()) { + pseudoParameterNames.add(parameter.getPseudoParameter()); + } } - } - - private String pseudoParameter; - - HeatPseudoParameters(String pseudoParameter) { - this.pseudoParameter = pseudoParameter; - } - public static List<String> getPseudoParameterNames() { - return pseudoParameterNames; - } - - public static void setPseudoParameterNames(List<String> pseudoParameterNames) { - HeatPseudoParameters.pseudoParameterNames = pseudoParameterNames; - } + HeatPseudoParameters(String pseudoParameter) { + this.pseudoParameter = pseudoParameter; + } - public String getPseudoParameter() { - return pseudoParameter; - } + public static List<String> getPseudoParameterNames() { + return pseudoParameterNames; + } - public void setPseudoParameter(String pseudoParameter) { - this.pseudoParameter = pseudoParameter; - } + public static void setPseudoParameterNames(List<String> pseudoParameterNames) { + HeatPseudoParameters.pseudoParameterNames = pseudoParameterNames; + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatResourcesTypes.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatResourcesTypes.java index b73fe385a6..a9598eb67f 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatResourcesTypes.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/HeatResourcesTypes.java @@ -7,9 +7,9 @@ * 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. @@ -27,93 +27,85 @@ import java.util.Map; import java.util.Objects; public enum HeatResourcesTypes { - NOVA_SERVER_RESOURCE_TYPE("OS::Nova::Server"), - NOVA_SERVER_GROUP_RESOURCE_TYPE("OS::Nova::ServerGroup"), - NEUTRON_PORT_RESOURCE_TYPE("OS::Neutron::Port"), - CONTRAIL_NETWORK_RULE_RESOURCE_TYPE("OS::Contrail::NetworkPolicy"), - CONTRAIL_NETWORK_ATTACH_RULE_RESOURCE_TYPE("OS::Contrail::AttachPolicy"), - CONTRAIL_VIRTUAL_NETWORK_RESOURCE_TYPE("OS::Contrail::VirtualNetwork"), - CINDER_VOLUME_RESOURCE_TYPE("OS::Cinder::Volume"), - CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE("OS::Cinder::VolumeAttachment"), - NEUTRON_NET_RESOURCE_TYPE("OS::Neutron::Net"), - NEUTRON_SUBNET_RESOURCE_TYPE("OS::Neutron::Subnet"), - NEUTRON_SECURITY_GROUP_RESOURCE_TYPE("OS::Neutron::SecurityGroup"), - HEAT_SOFTWARE_CONFIG_TYPE("OS::Heat::SoftwareConfig"), - HEAT_CLOUD_CONFIG_TYPE("OS::Heat::CloudConfig"), - HEAT_MULTIPART_MIME_TYPE("OS::Heat::MultipartMime"), - HEAT_CONTRAIL_NETWORK_IPAM_TYPE("OS::Contrail::NetworkIpam"), - CONTRAIL_V2_VIRTUAL_NETWORK_RESOURCE_TYPE("OS::ContrailV2::VirtualNetwork"), - CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE("OS::ContrailV2::VirtualMachineInterface"), - CONTRAIL_SERVICE_TEMPLATE("OS::Contrail::ServiceTemplate"), - CONTRAIL_SERVICE_INSTANCE("OS::Contrail::ServiceInstance"), - CONTRAIL_V2_NETWORK_RULE_RESOURCE_TYPE("OS::ContrailV2::NetworkPolicy"), - RESOURCE_GROUP_RESOURCE_TYPE("OS::Heat::ResourceGroup"); - - private static Map<String, HeatResourcesTypes> stringToHeatResourceTypeMap; - - static { - stringToHeatResourceTypeMap = new HashMap<>(); - - for (HeatResourcesTypes type : HeatResourcesTypes.values()) { - stringToHeatResourceTypeMap.put(type.heatResource, type); + NOVA_SERVER_RESOURCE_TYPE("OS::Nova::Server"), + NOVA_SERVER_GROUP_RESOURCE_TYPE("OS::Nova::ServerGroup"), + NEUTRON_PORT_RESOURCE_TYPE("OS::Neutron::Port"), + CONTRAIL_NETWORK_RULE_RESOURCE_TYPE("OS::Contrail::NetworkPolicy"), + CONTRAIL_NETWORK_ATTACH_RULE_RESOURCE_TYPE("OS::Contrail::AttachPolicy"), + CONTRAIL_VIRTUAL_NETWORK_RESOURCE_TYPE("OS::Contrail::VirtualNetwork"), + CINDER_VOLUME_RESOURCE_TYPE("OS::Cinder::Volume"), + CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE("OS::Cinder::VolumeAttachment"), + NEUTRON_NET_RESOURCE_TYPE("OS::Neutron::Net"), + NEUTRON_SUBNET_RESOURCE_TYPE("OS::Neutron::Subnet"), + NEUTRON_SECURITY_GROUP_RESOURCE_TYPE("OS::Neutron::SecurityGroup"), + HEAT_SOFTWARE_CONFIG_TYPE("OS::Heat::SoftwareConfig"), + HEAT_CLOUD_CONFIG_TYPE("OS::Heat::CloudConfig"), + HEAT_MULTIPART_MIME_TYPE("OS::Heat::MultipartMime"), + HEAT_CONTRAIL_NETWORK_IPAM_TYPE("OS::Contrail::NetworkIpam"), + CONTRAIL_V2_VIRTUAL_NETWORK_RESOURCE_TYPE("OS::ContrailV2::VirtualNetwork"), + CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE("OS::ContrailV2::VirtualMachineInterface"), + CONTRAIL_SERVICE_TEMPLATE("OS::Contrail::ServiceTemplate"), + CONTRAIL_SERVICE_INSTANCE("OS::Contrail::ServiceInstance"), + CONTRAIL_V2_NETWORK_RULE_RESOURCE_TYPE("OS::ContrailV2::NetworkPolicy"), + RESOURCE_GROUP_RESOURCE_TYPE("OS::Heat::ResourceGroup"); + + private static Map<String, HeatResourcesTypes> stringToHeatResourceTypeMap; + private String heatResource; + + static { + stringToHeatResourceTypeMap = new HashMap<>(); + + for (HeatResourcesTypes type : HeatResourcesTypes.values()) { + stringToHeatResourceTypeMap.put(type.heatResource, type); + } } - } - - private String heatResource; - - - HeatResourcesTypes(String heatResource) { - this.heatResource = heatResource; - } - - public static HeatResourcesTypes findByHeatResource(String heatResource) { - return stringToHeatResourceTypeMap.get(heatResource); - } - - public static boolean isResourceTypeValid(String resourceType) { - return Objects.nonNull(findByHeatResource(resourceType)); - } - /** - * Is resource expected to be exposed boolean. - * - * @param resourceType the resource type - * @return the boolean - */ - public static boolean isResourceExpectedToBeExposed(String resourceType) { - //todo - check - return (resourceType.equals(NOVA_SERVER_GROUP_RESOURCE_TYPE.getHeatResource()) - || resourceType.equals(CONTRAIL_VIRTUAL_NETWORK_RESOURCE_TYPE.getHeatResource()) - || resourceType.equals(NEUTRON_NET_RESOURCE_TYPE.getHeatResource()) - || resourceType.equals(CINDER_VOLUME_RESOURCE_TYPE.getHeatResource()) - || resourceType.equals(NEUTRON_SECURITY_GROUP_RESOURCE_TYPE.getHeatResource()) - ); - } - - /** - * Gets list for resource type. - * - * @param types the types - * @return the list for resource type - */ - public static Map<HeatResourcesTypes, List<String>> getListForResourceType( - HeatResourcesTypes... types) { - Map<HeatResourcesTypes, List<String>> result = new HashMap<>(); - - for (HeatResourcesTypes type : types) { - result.put(type, new ArrayList<>()); + HeatResourcesTypes(String heatResource) { + this.heatResource = heatResource; } - return result; - } + public static HeatResourcesTypes findByHeatResource(String heatResource) { + return stringToHeatResourceTypeMap.get(heatResource); + } - public String getHeatResource() { + public static boolean isResourceTypeValid(String resourceType) { + return Objects.nonNull(findByHeatResource(resourceType)); + } - return heatResource; - } + /** + * Is resource expected to be exposed boolean. + * + * @param resourceType the resource type + * @return the boolean + */ + public static boolean isResourceExpectedToBeExposed(String resourceType) { + //todo - check + return (resourceType.equals(NOVA_SERVER_GROUP_RESOURCE_TYPE.getHeatResource()) + || resourceType.equals(CONTRAIL_VIRTUAL_NETWORK_RESOURCE_TYPE.getHeatResource()) + || resourceType.equals(NEUTRON_NET_RESOURCE_TYPE.getHeatResource()) + || resourceType.equals(CINDER_VOLUME_RESOURCE_TYPE.getHeatResource()) + || resourceType.equals(NEUTRON_SECURITY_GROUP_RESOURCE_TYPE.getHeatResource()) + ); + } - public void setHeatResource(String heatResource) { - this.heatResource = heatResource; - } + /** + * Gets list for resource type. + * + * @param types the types + * @return the list for resource type + */ + public static Map<HeatResourcesTypes, List<String>> getListForResourceType( + HeatResourcesTypes... types) { + Map<HeatResourcesTypes, List<String>> result = new HashMap<>(); + + for (HeatResourcesTypes type : types) { + result.put(type, new ArrayList<>()); + } + + return result; + } + public String getHeatResource() { + return heatResource; + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Output.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Output.java index 8222edded2..343205d171 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Output.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Output.java @@ -7,9 +7,9 @@ * 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. @@ -20,23 +20,11 @@ package org.openecomp.sdc.heat.datatypes.model; -public class Output { - String description; - Object value; - - public String getDescription() { - return description; - } +import lombok.Data; - public void setDescription(String description) { - this.description = description; - } - - public Object getValue() { - return value; - } +@Data +public class Output { - public void setValue(Object value) { - this.value = value; - } + String description; + Object value; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Parameter.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Parameter.java index d419738942..81372aa68c 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Parameter.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Parameter.java @@ -7,9 +7,9 @@ * 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. @@ -23,68 +23,16 @@ package org.openecomp.sdc.heat.datatypes.model; import java.util.List; import java.util.Map; -public class Parameter { - String type; - String label; - String description; - Object _default; - boolean hidden; - List<Map<String, Object>> constraints; - boolean immutable; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } +import lombok.Data; - public Object get_default() { - return _default; - } - - public void set_default(Object _default) { - this._default = _default; - } - - public boolean isHidden() { - return hidden; - } - - public void setHidden(boolean hidden) { - this.hidden = hidden; - } - - public List<Map<String, Object>> getConstraints() { - return constraints; - } - - public void setConstraints(List<Map<String, Object>> constraints) { - this.constraints = constraints; - } - - public boolean isImmutable() { - return immutable; - } +@Data +public class Parameter { - public void setImmutable(boolean immutable) { - this.immutable = immutable; - } + private String type; + private String label; + private String description; + private Object _default; + private boolean hidden; + private List<Map<String, Object>> constraints; + private boolean immutable; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ParameterGroup.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ParameterGroup.java index 8ab066f4a4..4595466436 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ParameterGroup.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ParameterGroup.java @@ -7,9 +7,9 @@ * 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. @@ -22,32 +22,12 @@ package org.openecomp.sdc.heat.datatypes.model; import java.util.List; -public class ParameterGroup { - String label; - String description; - List<String> parameters; - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } +import lombok.Data; - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public List<String> getParameters() { - return parameters; - } +@Data +public class ParameterGroup { - public void setParameters(List<String> parameters) { - this.parameters = parameters; - } + private String label; + private String description; + private List<String> parameters; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ParameterType.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ParameterType.java index 37c430ec36..3f6dc9f7ce 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ParameterType.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ParameterType.java @@ -7,9 +7,9 @@ * 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. @@ -20,23 +20,18 @@ package org.openecomp.sdc.heat.datatypes.model; -public enum ParameterType { - - STRING("string"), - NUMBER("number"), - JSON("json"), - BOOLEAN("boolean"), - COMMA_DELIMITED_LIST("comma_delimited_list"); - - private String displayName; +import lombok.AllArgsConstructor; +import lombok.Getter; - ParameterType(String displayName) { - this.displayName = displayName; - } - - public String getDisplayName() { - return displayName; - } +@AllArgsConstructor +@Getter +public enum ParameterType { + STRING("string"), + NUMBER("number"), + JSON("json"), + BOOLEAN("boolean"), + COMMA_DELIMITED_LIST("comma_delimited_list"); + private String displayName; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/PolicyTypes.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/PolicyTypes.java index 3195e61fe5..77a7cd4552 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/PolicyTypes.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/PolicyTypes.java @@ -7,9 +7,9 @@ * 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. @@ -24,38 +24,31 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor public enum PolicyTypes { - AFFINITY("affinity"), - ANTI_AFFINITY("anti-affinity"); + AFFINITY("affinity"), + ANTI_AFFINITY("anti-affinity"); - private static Map<String, PolicyTypes> stringToPolicyTypesMap; + private static Map<String, PolicyTypes> stringToPolicyTypesMap; - static { - stringToPolicyTypesMap = new HashMap<>(); - for (PolicyTypes type : PolicyTypes.values()) { - stringToPolicyTypesMap.put(type.policy, type); + static { + stringToPolicyTypesMap = new HashMap<>(); + for (PolicyTypes type : PolicyTypes.values()) { + stringToPolicyTypesMap.put(type.policy, type); + } } - } - - private String policy; - - PolicyTypes(String policy) { - this.policy = policy; - } - public static PolicyTypes findByPolicy(String policy) { - return stringToPolicyTypesMap.get(policy); - } + private String policy; - public static boolean isGivenPolicyValid(String policyToCheck) { - return Objects.nonNull(findByPolicy(policyToCheck)); - } - - public String getPolicy() { - return policy; - } + public static PolicyTypes findByPolicy(String policy) { + return stringToPolicyTypesMap.get(policy); + } - public void setPolicy(String policy) { - this.policy = policy; - } + public static boolean isGivenPolicyValid(String policyToCheck) { + return Objects.nonNull(findByPolicy(policyToCheck)); + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/PropertiesMapKeyTypes.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/PropertiesMapKeyTypes.java index e8d43fc10c..46673c2eaa 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/PropertiesMapKeyTypes.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/PropertiesMapKeyTypes.java @@ -7,9 +7,9 @@ * 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. @@ -20,23 +20,16 @@ package org.openecomp.sdc.heat.datatypes.model; -public enum PropertiesMapKeyTypes { - IMAGE("image"), - FLAVOR("flavor"), - NETWORKS("networks"), - RESOURCE_DEF("resource_def"); - - private String keyMap; +import lombok.AllArgsConstructor; +import lombok.Getter; - PropertiesMapKeyTypes(String keyMap) { - this.keyMap = keyMap; - } - - public String getKeyMap() { - return keyMap; - } +@Getter +@AllArgsConstructor +public enum PropertiesMapKeyTypes { + IMAGE("image"), + FLAVOR("flavor"), + NETWORKS("networks"), + RESOURCE_DEF("resource_def"); - public void setKeyMap(String keyMap) { - this.keyMap = keyMap; - } + private String keyMap; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Resource.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Resource.java index 2c70105da9..4703f43632 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Resource.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/Resource.java @@ -7,9 +7,9 @@ * 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. @@ -22,71 +22,27 @@ package org.openecomp.sdc.heat.datatypes.model; import java.util.Map; -public class Resource { - String type; - Map<String, Object> properties; - Object metadata; - Object depends_on; - Object update_policy; - Object deletion_policy; - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public Map<String, Object> getProperties() { - return properties; - } - - public void setProperties(Map<String, Object> properties) { - this.properties = properties; - } - - public Object getMetadata() { - return metadata; - } - - public void setMetadata(Object metadata) { - this.metadata = metadata; - } +import lombok.Data; - public Object getDepends_on() { - return depends_on; - } - - public void setDepends_on(Object depends_on) { - this.depends_on = depends_on; - } - - public Object getUpdate_policy() { - return update_policy; - } - - public void setUpdate_policy(Object update_policy) { - this.update_policy = update_policy; - } - - public Object getDeletion_policy() { - return deletion_policy; - } - - public void setDeletion_policy(Object deletion_policy) { - this.deletion_policy = deletion_policy; - } +@Data +public class Resource { - @Override - public String toString() { - return "Resource{" - + "type='" + type + '\'' - + ", properties=" + properties - + ", metadata=" + metadata - + ", depends_on=" + depends_on - + ", update_policy='" + update_policy + '\'' - + ", deletion_policy='" + deletion_policy + '\'' - + '}'; - } + private String type; + private Map<String, Object> properties; + private Object metadata; + private Object depends_on; + private Object update_policy; + private Object deletion_policy; + + @Override + public String toString() { + return "Resource{" + + "type='" + type + '\'' + + ", properties=" + properties + + ", metadata=" + metadata + + ", depends_on=" + depends_on + + ", update_policy='" + update_policy + '\'' + + ", deletion_policy='" + deletion_policy + '\'' + + '}'; + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ResourceReferenceFunctions.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ResourceReferenceFunctions.java index b36d130597..9c1feb2cc4 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ResourceReferenceFunctions.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ResourceReferenceFunctions.java @@ -7,9 +7,9 @@ * 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. @@ -20,25 +20,17 @@ package org.openecomp.sdc.heat.datatypes.model; -public enum ResourceReferenceFunctions { - GET_RESOURCE("get_resource"), - GET_PARAM("get_param"), - GET_ATTR("get_attr"), - GET_FILE("get_file"), - SCHEDULER_HINTS("scheduler_hints"); - - - private String function; +import lombok.AllArgsConstructor; +import lombok.Getter; - ResourceReferenceFunctions(String function) { - this.function = function; - } - - public String getFunction() { - return function; - } +@AllArgsConstructor +@Getter +public enum ResourceReferenceFunctions { + GET_RESOURCE("get_resource"), + GET_PARAM("get_param"), + GET_ATTR("get_attr"), + GET_FILE("get_file"), + SCHEDULER_HINTS("scheduler_hints"); - public void setFunction(String function) { - this.function = function; - } + private String function; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ResourceTypeToMessageString.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ResourceTypeToMessageString.java index d7ede70942..c4a13588a1 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ResourceTypeToMessageString.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/model/ResourceTypeToMessageString.java @@ -7,9 +7,9 @@ * 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. @@ -24,32 +24,31 @@ import java.util.HashMap; import java.util.Map; public enum ResourceTypeToMessageString { - SERVER_GROUP(HeatResourcesTypes.NOVA_SERVER_GROUP_RESOURCE_TYPE, "ServerGroup"), - SECURITY_GROUP(HeatResourcesTypes.NEUTRON_SECURITY_GROUP_RESOURCE_TYPE, "SecurityGroup"), - NETWORK_POLICY(HeatResourcesTypes.CONTRAIL_NETWORK_RULE_RESOURCE_TYPE, "NetworkPolicy"); + SERVER_GROUP(HeatResourcesTypes.NOVA_SERVER_GROUP_RESOURCE_TYPE, "ServerGroup"), + SECURITY_GROUP(HeatResourcesTypes.NEUTRON_SECURITY_GROUP_RESOURCE_TYPE, "SecurityGroup"), + NETWORK_POLICY(HeatResourcesTypes.CONTRAIL_NETWORK_RULE_RESOURCE_TYPE, "NetworkPolicy"); - private static Map<HeatResourcesTypes, String> resourcesTypesStringMap; + private static Map<HeatResourcesTypes, String> resourcesTypesStringMap; - static { - resourcesTypesStringMap = new HashMap<>(); + static { + resourcesTypesStringMap = new HashMap<>(); - for (ResourceTypeToMessageString resourceTypeToMessageString : ResourceTypeToMessageString - .values()) { - resourcesTypesStringMap - .put(resourceTypeToMessageString.type, resourceTypeToMessageString.messageString); + for (ResourceTypeToMessageString resourceTypeToMessageString : ResourceTypeToMessageString + .values()) { + resourcesTypesStringMap + .put(resourceTypeToMessageString.type, resourceTypeToMessageString.messageString); + } } - } - private String messageString; - private HeatResourcesTypes type; + private String messageString; + private HeatResourcesTypes type; + ResourceTypeToMessageString(HeatResourcesTypes type, String messageString) { + this.type = type; + this.messageString = messageString; + } - ResourceTypeToMessageString(HeatResourcesTypes type, String messgageString) { - this.type = type; - this.messageString = messgageString; - } - - public static String getTypeForMessageFromResourceType(HeatResourcesTypes type) { - return resourcesTypesStringMap.get(type); - } + public static String getTypeForMessageFromResourceType(HeatResourcesTypes type) { + return resourcesTypesStringMap.get(type); + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/Artifact.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/Artifact.java index 95ae4e59c7..9d1fbe3cb3 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/Artifact.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/Artifact.java @@ -7,9 +7,9 @@ * 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. @@ -20,85 +20,50 @@ package org.openecomp.sdc.heat.datatypes.structure; +import java.util.ArrayList; +import java.util.List; +import lombok.AccessLevel; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; import org.openecomp.sdc.datatypes.error.ErrorMessage; import org.openecomp.sdc.heat.datatypes.manifest.FileData; -import java.util.ArrayList; -import java.util.List; - +@Getter +@Setter +@EqualsAndHashCode public class Artifact implements Comparable<Artifact> { - private String fileName; - private FileData.Type type; - private List<ErrorMessage> errors; - - public Artifact(String fileName, FileData.Type type) { - this.fileName = fileName; - this.type = type; - } - - - public String getFileName() { - return fileName; - } - - public void setFileName(String name) { - this.fileName = name; - } + private String fileName; + @Setter(AccessLevel.NONE) + @EqualsAndHashCode.Exclude + private FileData.Type type; - public FileData.Type getType() { - return type; - } + @EqualsAndHashCode.Exclude + private List<ErrorMessage> errors; - public List<ErrorMessage> getErrors() { - return errors; - } - - public void setErrors(List<ErrorMessage> errors) { - this.errors = errors; - } - - /** - * Add error to error list. - * - * @param error the error - */ - public void addErrorToErrorList(ErrorMessage error) { - if (this.errors == null || this.errors.isEmpty()) { - this.errors = new ArrayList<>(); + public Artifact(String fileName, FileData.Type type) { + this.fileName = fileName; + this.type = type; } - this.errors.add(error); - } - - @Override - public int hashCode() { - int result = fileName.hashCode(); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; + /** + * Add error to error list. + * + * @param error the error + */ + public void addErrorToErrorList(ErrorMessage error) { + if (this.errors == null || this.errors.isEmpty()) { + this.errors = new ArrayList<>(); + } + + this.errors.add(error); } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - - Artifact artifact = (Artifact) obj; - if (!fileName.equals(artifact.fileName)) { - return false; + @Override + public int compareTo(Artifact artifact) { + return artifact.getFileName().compareTo(this.getFileName()); } - return true; - - } - - @Override - public int compareTo(Artifact artifact) { - return artifact.getFileName().compareTo(this.getFileName()); - } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java index 5313d4d370..8d1b5912df 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java @@ -7,9 +7,9 @@ * 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. @@ -20,331 +20,253 @@ package org.openecomp.sdc.heat.datatypes.structure; - -import org.codehaus.jackson.annotate.JsonProperty; -import org.openecomp.sdc.datatypes.error.ErrorMessage; -import org.openecomp.sdc.heat.datatypes.manifest.FileData; - import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.TreeSet; +import lombok.AccessLevel; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.heat.datatypes.manifest.FileData; + +@Data public class HeatStructureTree implements Comparable<HeatStructureTree> { - private String fileName; - private FileData.Type type; - private Boolean isBase; - private HeatStructureTree env; - private List<ErrorMessage> errors; - private Set<HeatStructureTree> heat; - private Set<HeatStructureTree> volume; - private Set<HeatStructureTree> network; - private Set<HeatStructureTree> nested; - private Set<HeatStructureTree> other; - private Set<Artifact> artifacts; - - public HeatStructureTree() { - } - - ; - - public HeatStructureTree(String fileName, boolean isBase) { - setBase(isBase); - setFileName(fileName); - } - - /** - * Gets heat structure tree by name. - * - * @param filesSet the files set - * @param filename the filename - * @return the heat structure tree by name - */ - public static HeatStructureTree getHeatStructureTreeByName(Set<HeatStructureTree> filesSet, - String filename) { - for (HeatStructureTree heatStructureTree : filesSet) { - if (heatStructureTree.getFileName().equals(filename)) { - return heatStructureTree; - } - } + private String fileName; + private FileData.Type type; - return null; - } - - public void setType(FileData.Type type) { - this.type = type; - } - - public Boolean getBase() { - return isBase; - } - - public void setBase(Boolean base) { - isBase = base; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(String file) { - this.fileName = file; - } - - @JsonProperty(value = "heat") - public Set<HeatStructureTree> getHeat() { - return heat; - } - - public void setHeat(Set<HeatStructureTree> heat) { - this.heat = heat; - } - - public Set<HeatStructureTree> getNested() { - return nested; - } - - public void setNested(Set<HeatStructureTree> nested) { - this.nested = nested; - } - - public Set<Artifact> getArtifacts() { - return artifacts; - } - - public void setArtifacts(Set<Artifact> artifacts) { - this.artifacts = artifacts; - } - - /** - * Add heat structure tree to nested heat list. - * - * @param heatStructureTree the heat structure tree - */ - public void addHeatStructureTreeToNestedHeatList(HeatStructureTree heatStructureTree) { - if (this.nested == null) { - this.nested = new TreeSet<>(); + @Getter(AccessLevel.NONE) + @Setter(AccessLevel.NONE) + private Boolean isBase; + + private HeatStructureTree env; + private List<ErrorMessage> errors; + private Set<HeatStructureTree> heat; + private Set<HeatStructureTree> volume; + private Set<HeatStructureTree> network; + private Set<HeatStructureTree> nested; + private Set<HeatStructureTree> other; + private Set<Artifact> artifacts; + + public HeatStructureTree() { } - if (!findItemInSetByName(this.nested, heatStructureTree)) { - this.nested.add(heatStructureTree); + + public HeatStructureTree(String fileName, boolean isBase) { + this.isBase = isBase; + this.fileName = fileName; } - } - - /** - * Add artifact to artifact list. - * - * @param artifact the artifact - */ - public void addArtifactToArtifactList(Artifact artifact) { - if (this.artifacts == null || this.artifacts.isEmpty()) { - this.artifacts = new TreeSet<>(); + + public Boolean getBase() { + return isBase; } - this.artifacts.add(artifact); - } - - public HeatStructureTree getEnv() { - return env; - } - - public void setEnv(HeatStructureTree env) { - this.env = env; - } - - public Set<HeatStructureTree> getVolume() { - return volume; - } - - public void setVolume(Set<HeatStructureTree> volume) { - this.volume = volume; - } - - public Set<HeatStructureTree> getNetwork() { - return network; - } - - public void setNetwork(Set<HeatStructureTree> network) { - this.network = network; - } - - /** - * Add network to network list. - * - * @param heatStructureTree the heat structure tree - */ - public void addNetworkToNetworkList(HeatStructureTree heatStructureTree) { - if (this.network == null) { - this.network = new TreeSet<>(); + + public void setBase(Boolean isBase) { + this.isBase = isBase; } - if (!findItemInSetByName(this.network, heatStructureTree)) { - this.network.add(heatStructureTree); + + /** + * Gets heat structure tree by name. + * + * @param filesSet the files set + * @param filename the filename + * @return the heat structure tree by name + */ + public static HeatStructureTree getHeatStructureTreeByName(Set<HeatStructureTree> filesSet, + String filename) { + for (HeatStructureTree heatStructureTree : filesSet) { + if (heatStructureTree.getFileName().equals(filename)) { + return heatStructureTree; + } + } + + return null; } - } - - /** - * Add volume file to volume list. - * - * @param heatStructureTree the heat structure tree - */ - public void addVolumeFileToVolumeList(HeatStructureTree heatStructureTree) { - if (this.volume == null) { - this.volume = new TreeSet<>(); + + /** + * Add heat structure tree to nested heat list. + * + * @param heatStructureTree the heat structure tree + */ + public void addHeatStructureTreeToNestedHeatList(HeatStructureTree heatStructureTree) { + if (this.nested == null) { + this.nested = new TreeSet<>(); + } + if (!findItemInSetByName(this.nested, heatStructureTree)) { + this.nested.add(heatStructureTree); + } } - if (!findItemInSetByName(this.volume, heatStructureTree)) { - this.volume.add(heatStructureTree); + + /** + * Add artifact to artifact list. + * + * @param artifact the artifact + */ + public void addArtifactToArtifactList(Artifact artifact) { + if (this.artifacts == null || this.artifacts.isEmpty()) { + this.artifacts = new TreeSet<>(); + } + this.artifacts.add(artifact); } - } - - /** - * Add heat to heat list. - * - * @param heat the heat - */ - public void addHeatToHeatList(HeatStructureTree heat) { - if (this.heat == null) { - this.heat = new TreeSet<>(); + + /** + * Add network to network list. + * + * @param heatStructureTree the heat structure tree + */ + public void addNetworkToNetworkList(HeatStructureTree heatStructureTree) { + if (this.network == null) { + this.network = new TreeSet<>(); + } + if (!findItemInSetByName(this.network, heatStructureTree)) { + this.network.add(heatStructureTree); + } } - this.heat.add(heat); - } - - /** - * Add other to other list. - * - * @param other the other - */ - public void addOtherToOtherList(HeatStructureTree other) { - if (this.other == null) { - this.other = new TreeSet<>(); + /** + * Add volume file to volume list. + * + * @param heatStructureTree the heat structure tree + */ + public void addVolumeFileToVolumeList(HeatStructureTree heatStructureTree) { + if (this.volume == null) { + this.volume = new TreeSet<>(); + } + if (!findItemInSetByName(this.volume, heatStructureTree)) { + this.volume.add(heatStructureTree); + } } - this.other.add(other); - } - - /** - * Find item in set by name boolean. - * - * @param searchSet the search set - * @param toFind the to find - * @return the boolean - */ - public boolean findItemInSetByName(Set<HeatStructureTree> searchSet, HeatStructureTree toFind) { - for (HeatStructureTree heatStructureTree : searchSet) { - if (heatStructureTree.getFileName().equals(toFind.getFileName())) { - return true; - } + /** + * Add heat to heat list. + * + * @param heat the heat + */ + public void addHeatToHeatList(HeatStructureTree heat) { + if (this.heat == null) { + this.heat = new TreeSet<>(); + } + + this.heat.add(heat); + } + /** + * Add other to other list. + * + * @param other the other + */ + public void addOtherToOtherList(HeatStructureTree other) { + if (this.other == null) { + this.other = new TreeSet<>(); + } + + this.other.add(other); } - return false; - } - - /** - * Remove from volume or network. - * - * @param fileNameToRemove the file name to remove - * @param type the type - */ - public void removeFromVolumeOrNetwork(String fileNameToRemove, FileData.Type type) { - Set<HeatStructureTree> volumeOrNetworkSet = - type.equals(FileData.Type.HEAT_VOL) ? this.volume : this.network; - HeatStructureTree toRemove = getHeatStructureTreeByName(volumeOrNetworkSet, fileNameToRemove); - - volumeOrNetworkSet.remove(toRemove); - } - - @Override - public int hashCode() { - int result1 = fileName != null ? fileName.hashCode() : 0; - result1 = 31 * result1 + (env != null ? env.hashCode() : 0); - result1 = 31 * result1 + (heat != null ? heat.hashCode() : 0); - result1 = 31 * result1 + (volume != null ? volume.hashCode() : 0); - result1 = 31 * result1 + (network != null ? network.hashCode() : 0); - result1 = 31 * result1 + (artifacts != null ? artifacts.hashCode() : 0); - result1 = 31 * result1 + (nested != null ? nested.hashCode() : 0); - result1 = 31 * result1 + (errors != null ? errors.hashCode() : 0); - - - return result1; - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; + /** + * Find item in set by name boolean. + * + * @param searchSet the search set + * @param toFind the to find + * @return the boolean + */ + public boolean findItemInSetByName(Set<HeatStructureTree> searchSet, HeatStructureTree toFind) { + for (HeatStructureTree heatStructureTree : searchSet) { + if (heatStructureTree.getFileName().equals(toFind.getFileName())) { + return true; + } + } + return false; } - if (other == null || getClass() != other.getClass()) { - return false; + + /** + * Remove from volume or network. + * + * @param fileNameToRemove the file name to remove + * @param type the type + */ + public void removeFromVolumeOrNetwork(String fileNameToRemove, FileData.Type type) { + Set<HeatStructureTree> volumeOrNetworkSet = + type.equals(FileData.Type.HEAT_VOL) ? this.volume : this.network; + HeatStructureTree toRemove = getHeatStructureTreeByName(volumeOrNetworkSet, fileNameToRemove); + + volumeOrNetworkSet.remove(toRemove); } - HeatStructureTree heatStructureTree = (HeatStructureTree) other; + @Override + public int hashCode() { + int result1 = fileName != null ? fileName.hashCode() : 0; + result1 = 31 * result1 + (env != null ? env.hashCode() : 0); + result1 = 31 * result1 + (heat != null ? heat.hashCode() : 0); + result1 = 31 * result1 + (volume != null ? volume.hashCode() : 0); + result1 = 31 * result1 + (network != null ? network.hashCode() : 0); + result1 = 31 * result1 + (artifacts != null ? artifacts.hashCode() : 0); + result1 = 31 * result1 + (nested != null ? nested.hashCode() : 0); + result1 = 31 * result1 + (errors != null ? errors.hashCode() : 0); - if (fileName != null ? !fileName.equals(heatStructureTree.fileName) - : heatStructureTree.fileName != null) { - return false; - } - if (env != null ? !env.equals(heatStructureTree.env) : heatStructureTree.env != null) { - return false; - } - if (heat != null ? !heat.equals(heatStructureTree.heat) : heatStructureTree.heat != null) { - return false; - } - if (volume != null ? !volume.equals(heatStructureTree.volume) - : heatStructureTree.volume != null) { - return false; - } - if (network != null ? !network.equals(heatStructureTree.network) - : heatStructureTree.network != null) { - return false; - } - if (artifacts != null ? !artifacts.equals(heatStructureTree.artifacts) - : heatStructureTree.artifacts != null) { - return false; - } - if (nested != null ? !nested.equals(heatStructureTree.nested) - : heatStructureTree.nested != null) { - return false; - } - if (errors != null ? !errors.equals(heatStructureTree.errors) - : heatStructureTree.errors != null) { - return false; - } - return true; - } - - public List<ErrorMessage> getErrors() { - return errors; - } - - public void setErrors(List<ErrorMessage> errors) { - this.errors = errors; - } - - /** - * Add error to errors list. - * - * @param error the error - */ - public void addErrorToErrorsList(ErrorMessage error) { - if (this.errors == null || this.errors.isEmpty()) { - this.errors = new ArrayList<>(); - } - if (!this.errors.contains(error)) { - this.errors.add(error); + return result1; } - } - public Set<HeatStructureTree> getOther() { - return other; - } + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } + if (other == null || getClass() != other.getClass()) { + return false; + } + + HeatStructureTree heatStructureTree = (HeatStructureTree) other; + + if (fileName != null ? !fileName.equals(heatStructureTree.fileName) + : heatStructureTree.fileName != null) { + return false; + } + if (env != null ? !env.equals(heatStructureTree.env) : heatStructureTree.env != null) { + return false; + } + if (heat != null ? !heat.equals(heatStructureTree.heat) : heatStructureTree.heat != null) { + return false; + } + if (volume != null ? !volume.equals(heatStructureTree.volume) + : heatStructureTree.volume != null) { + return false; + } + if (network != null ? !network.equals(heatStructureTree.network) + : heatStructureTree.network != null) { + return false; + } + if (artifacts != null ? !artifacts.equals(heatStructureTree.artifacts) + : heatStructureTree.artifacts != null) { + return false; + } + if (nested != null ? !nested.equals(heatStructureTree.nested) + : heatStructureTree.nested != null) { + return false; + } + + return errors != null ? errors.equals(heatStructureTree.errors) : heatStructureTree.errors == null; + } - public void setOther(Set<HeatStructureTree> other) { - this.other = other; - } + /** + * Add error to errors list. + * + * @param error the error + */ + public void addErrorToErrorsList(ErrorMessage error) { + if (this.errors == null || this.errors.isEmpty()) { + this.errors = new ArrayList<>(); + } + if (!this.errors.contains(error)) { + this.errors.add(error); + } + } - @Override - public int compareTo(HeatStructureTree obj) { - return obj.getFileName().compareTo(this.getFileName()); - } + @Override + public int compareTo(HeatStructureTree obj) { + return obj.getFileName().compareTo(this.getFileName()); + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/ValidationStructureList.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/ValidationStructureList.java index f2acb2810d..27b87b9045 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/ValidationStructureList.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/ValidationStructureList.java @@ -7,9 +7,9 @@ * 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. @@ -20,21 +20,14 @@ package org.openecomp.sdc.heat.datatypes.structure; -public class ValidationStructureList { - private HeatStructureTree importStructure; - - public ValidationStructureList() { - } +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; - public ValidationStructureList(HeatStructureTree importStructure) { - this.importStructure = importStructure; - } - - public HeatStructureTree getImportStructure() { - return importStructure; - } +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ValidationStructureList { - public void setImportStructure(HeatStructureTree importStructure) { - this.importStructure = importStructure; - } + private HeatStructureTree importStructure; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/HeatResourceUtil.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/HeatResourceUtil.java index a44b0196d4..4563e686e5 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/HeatResourceUtil.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/HeatResourceUtil.java @@ -21,6 +21,8 @@ import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; +import lombok.AllArgsConstructor; +import lombok.Getter; import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes; public class HeatResourceUtil { @@ -31,9 +33,9 @@ public class HeatResourceUtil { private static final String PORT_RESOURCE_ID_REGEX_PREFIX = WORDS_REGEX + PORT_RESOURCE_ID_REGEX_SUFFIX; private static final String PORT_INT_RESOURCE_ID_REGEX_PREFIX = PORT_RESOURCE_ID_REGEX_PREFIX - + UNDERSCORE + "int_"+ WORDS_REGEX + UNDERSCORE; + + UNDERSCORE + "int_" + WORDS_REGEX + UNDERSCORE; private static final String SUB_INTERFACE_INT_RESOURCE_ID_REGEX_PREFIX = - PORT_RESOURCE_ID_REGEX_PREFIX + UNDERSCORE + "subint_"+ WORDS_REGEX + UNDERSCORE; + PORT_RESOURCE_ID_REGEX_PREFIX + UNDERSCORE + "subint_" + WORDS_REGEX + UNDERSCORE; public static Optional<String> evaluateNetworkRoleFromResourceId(String resourceId, String resourceType) { @@ -56,17 +58,23 @@ public class HeatResourceUtil { } private static Optional<PortType> getPortType(String resourceType) { - if (resourceType.equals( - HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource())) { + if (HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource() + .equals(resourceType)) { return Optional.of(PortType.VMI); - } else if (resourceType.equals( - HeatResourcesTypes.NEUTRON_PORT_RESOURCE_TYPE.getHeatResource())) { + } else if (HeatResourcesTypes.NEUTRON_PORT_RESOURCE_TYPE.getHeatResource().equals(resourceType)) { return Optional.of(PortType.PORT); } return Optional.empty(); } - public static Optional<String> extractNetworkRoleFromSubInterfaceId(String resourceId, + /** + * Extract network role from sub interface id optional. + * + * @param resourceId the resource id + * @param resourceType the resource type + * @return the optional + */ + public static Optional<String> extractNetworkRoleFromSubInterfaceId(String resourceId, String resourceType) { Optional<PortType> portType = getPortType(resourceType); if (portType.isPresent()) { @@ -79,19 +87,13 @@ public class HeatResourceUtil { return Optional.empty(); } + @AllArgsConstructor + @Getter private enum PortType { PORT("port"), VMI("vmi"); private String portTypeName; - - PortType(String portTypeName) { - this.portTypeName = portTypeName; - } - - public String getPortTypeName() { - return portTypeName; - } } private static String getNetworkRole(String portResourceId, String portIdRegex) { diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/HeatStructureUtil.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/HeatStructureUtil.java index ef09841727..b73c7e8b8b 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/HeatStructureUtil.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/HeatStructureUtil.java @@ -7,9 +7,9 @@ * 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. @@ -20,6 +20,12 @@ package org.openecomp.sdc.heat.services; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + import org.apache.commons.collections4.CollectionUtils; import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder; import org.openecomp.core.validation.types.GlobalValidationContext; @@ -27,12 +33,6 @@ import org.openecomp.sdc.common.errors.Messages; import org.openecomp.sdc.datatypes.error.ErrorLevel; import org.openecomp.sdc.heat.datatypes.model.ResourceReferenceFunctions; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - /** * Created by TALIO on 2/19/2017. */ @@ -42,77 +42,83 @@ public class HeatStructureUtil { // prevent instantiation } - /** - * Gets referenced values by function name. - * - * @param filename the filename - * @param functionName the function name - * @param propertyValue the property value - * @param globalContext the global context - * @return the referenced values by function name - */ - public static Set<String> getReferencedValuesByFunctionName(String filename, String functionName, - Object propertyValue, - GlobalValidationContext globalContext) { - Set<String> valuesNames = new HashSet<>(); - if (propertyValue instanceof Map) { - Map<String, Object> currPropertyMap = (Map<String, Object>) propertyValue; - if (currPropertyMap.containsKey(functionName)) { - Object getFunctionValue = currPropertyMap.get(functionName); - if (!(getFunctionValue instanceof String) && functionName.equals( - ResourceReferenceFunctions.GET_RESOURCE.getFunction())) { - globalContext.addMessage(filename, ErrorLevel.ERROR, ErrorMessagesFormatBuilder - .getErrorWithParameters(globalContext.getMessageCode(), - Messages.INVALID_GET_RESOURCE_SYNTAX.getErrorMessage(), - getFunctionValue == null ? "null" : getFunctionValue.toString())); - return valuesNames; - } - if (getFunctionValue instanceof String) { + /** + * Gets referenced values by function name. + * + * @param filename the filename + * @param functionName the function name + * @param propertyValue the property value + * @param globalContext the global context + * @return the referenced values by function name + */ + public static Set<String> getReferencedValuesByFunctionName(String filename, String functionName, + Object propertyValue, + GlobalValidationContext globalContext) { + Set<String> valuesNames = new HashSet<>(); + if (propertyValue instanceof Map) { + Map<String, Object> currPropertyMap = (Map<String, Object>) propertyValue; + if (currPropertyMap.containsKey(functionName)) { + Object getFunctionValue = currPropertyMap.get(functionName); + if (!(getFunctionValue instanceof String) && functionName.equals( + ResourceReferenceFunctions.GET_RESOURCE.getFunction())) { + globalContext.addMessage(filename, ErrorLevel.ERROR, ErrorMessagesFormatBuilder + .getErrorWithParameters(globalContext.getMessageCode(), + Messages.INVALID_GET_RESOURCE_SYNTAX.getErrorMessage(), + getFunctionValue == null ? "null" : getFunctionValue.toString())); + return valuesNames; + } + if (getFunctionValue instanceof String) { - if (functionName.equals(ResourceReferenceFunctions.GET_FILE.getFunction())) { - getFunctionValue = ((String) getFunctionValue).replace("file:///", ""); - } + if (functionName.equals(ResourceReferenceFunctions.GET_FILE.getFunction())) { + getFunctionValue = ((String) getFunctionValue).replace("file:///", ""); + } - valuesNames.add((String) getFunctionValue); - } else if (getFunctionValue instanceof List) { - if (CollectionUtils.isNotEmpty((List) getFunctionValue)) { - if (((List) getFunctionValue).get(0) instanceof String) { - valuesNames.add(((String) ((List) getFunctionValue).get(0)).replace("file:///", "")); + valuesNames.add((String) getFunctionValue); + } else if (getFunctionValue instanceof List) { + if (CollectionUtils.isNotEmpty((List) getFunctionValue)) { + if (((List) getFunctionValue).get(0) instanceof String) { + valuesNames.add(((String) ((List) getFunctionValue).get(0)).replace("file:///", "")); + } else { + valuesNames.addAll(getReferencedValuesByFunctionName(filename, functionName, + ((List) getFunctionValue).get(0), globalContext)); + } + + } + } else { + valuesNames.addAll( + getReferencedValuesByFunctionName(filename, functionName, getFunctionValue, + globalContext)); + } } else { - valuesNames.addAll(getReferencedValuesByFunctionName(filename, functionName, - ((List) getFunctionValue).get(0), globalContext)); + for (Map.Entry<String, Object> nestedPropertyMap : currPropertyMap.entrySet()) { + valuesNames.addAll(getReferencedValuesByFunctionName(filename, functionName, + nestedPropertyMap.getValue(), globalContext)); + } + } + } else if (propertyValue instanceof List) { + List propertyValueArray = (List) propertyValue; + for (Object propValue : propertyValueArray) { + valuesNames.addAll( + getReferencedValuesByFunctionName(filename, functionName, propValue, + globalContext)); } - - } - } else { - valuesNames.addAll( - getReferencedValuesByFunctionName(filename, functionName, getFunctionValue, - globalContext)); - } - } else { - for (Map.Entry<String, Object> nestedPropertyMap : currPropertyMap.entrySet()) { - valuesNames.addAll(getReferencedValuesByFunctionName(filename, functionName, - nestedPropertyMap.getValue(), globalContext)); } - } - } else if (propertyValue instanceof List) { - List propertyValueArray = (List) propertyValue; - for (Object propValue : propertyValueArray) { - valuesNames.addAll( - getReferencedValuesByFunctionName(filename, functionName, propValue, - globalContext)); - } - } - return valuesNames; - } + return valuesNames; + } - public static boolean isNestedResource(String resourceType) { - if(Objects.isNull(resourceType)){ - return false; + /** + * Is nested resource. + * + * @param resourceType the resource type + * @return the boolean + */ + public static boolean isNestedResource(String resourceType) { + if (Objects.isNull(resourceType)) { + return false; + } + return resourceType.endsWith(".yaml") || resourceType.endsWith(".yml"); } - return resourceType.endsWith(".yaml") || resourceType.endsWith(".yml"); - } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/manifest/ManifestUtil.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/manifest/ManifestUtil.java index ef057a9fc9..8c6daac71e 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/manifest/ManifestUtil.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/manifest/ManifestUtil.java @@ -7,9 +7,9 @@ * 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. @@ -20,156 +20,151 @@ package org.openecomp.sdc.heat.services.manifest; - -import org.apache.commons.collections4.CollectionUtils; -import org.openecomp.sdc.heat.datatypes.manifest.FileData; -import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent; - import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.commons.collections4.CollectionUtils; +import org.openecomp.sdc.heat.datatypes.manifest.FileData; +import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent; + public class ManifestUtil { - /** - * Gets file and its env. - * - * @param manifestContent the manifest content - * @return the file and its env - */ - public static Map<String, FileData> getFileAndItsEnv(ManifestContent manifestContent) { - Map<String, FileData> fileEnvMap = new HashMap<>(); - scanFileEnvMap(null, manifestContent.getData(), fileEnvMap); - return fileEnvMap; - } - - - /** - * Scan file env map. - * - * @param fileData the file data - * @param fileDataList the file data list - * @param fileEnvMap the file env map - */ - public static void scanFileEnvMap(FileData fileData, List<FileData> fileDataList, - Map<String, FileData> fileEnvMap) { - - if (CollectionUtils.isEmpty(fileDataList)) { - return; + /** + * Gets file and its env. + * + * @param manifestContent the manifest content + * @return the file and its env + */ + public static Map<String, FileData> getFileAndItsEnv(ManifestContent manifestContent) { + Map<String, FileData> fileEnvMap = new HashMap<>(); + scanFileEnvMap(null, manifestContent.getData(), fileEnvMap); + return fileEnvMap; } - for (FileData childFileData : fileDataList) { - FileData.Type childType = childFileData.getType(); - if (fileData != null) { - if (childType != null && childType.equals(FileData.Type.HEAT_ENV)) { - fileEnvMap.put(fileData.getFile(), childFileData); + + /** + * Scan file env map. + * + * @param fileData the file data + * @param fileDataList the file data list + * @param fileEnvMap the file env map + */ + private static void scanFileEnvMap(FileData fileData, List<FileData> fileDataList, + Map<String, FileData> fileEnvMap) { + + if (CollectionUtils.isEmpty(fileDataList)) { + return; + } + + for (FileData childFileData : fileDataList) { + FileData.Type childType = childFileData.getType(); + if (fileData != null) { + if (childType != null && childType.equals(FileData.Type.HEAT_ENV)) { + fileEnvMap.put(fileData.getFile(), childFileData); + } + } + scanFileEnvMap(childFileData, childFileData.getData(), fileEnvMap); } - } - scanFileEnvMap(childFileData, childFileData.getData(), fileEnvMap); - } - } - - - /** - * Gets file type map. - * - * @param manifestContent the manifest content - * @return the file type map - */ - public static Map<String, FileData.Type> getFileTypeMap(ManifestContent manifestContent) { - Map<String, FileData.Type> fileTypeMap = new HashMap<>(); - scanFileTypeMap(null, manifestContent.getData(), fileTypeMap); - return fileTypeMap; - } - - private static FileData.Type scanFileTypeMap(FileData fileData, List<FileData> data, - Map<String, FileData.Type> fileTypeMap) { - if (fileData != null) { - fileTypeMap.put(fileData.getFile(), fileData.getType()); - } - if (data == null) { - return null; } - for (FileData chileFileData : data) { - FileData.Type type = scanFileTypeMap(chileFileData, chileFileData.getData(), fileTypeMap); - if (type != null) { - return type; - } + + /** + * Gets file type map. + * + * @param manifestContent the manifest content + * @return the file type map + */ + public static Map<String, FileData.Type> getFileTypeMap(ManifestContent manifestContent) { + Map<String, FileData.Type> fileTypeMap = new HashMap<>(); + scanFileTypeMap(null, manifestContent.getData(), fileTypeMap); + return fileTypeMap; } - return null; - } + private static FileData.Type scanFileTypeMap(FileData fileData, List<FileData> data, + Map<String, FileData.Type> fileTypeMap) { + if (fileData != null) { + fileTypeMap.put(fileData.getFile(), fileData.getType()); + } + if (data == null) { + return null; + } - /** - * Gets artifacts. - * - * @param manifestContent the manifest content - * @return the artifacts - */ - public static Set<String> getArtifacts(ManifestContent manifestContent) { - Set<String> artifacts = new HashSet<>(); - scanArtifacts(null, manifestContent.getData(), artifacts); + for (FileData chileFileData : data) { + FileData.Type type = scanFileTypeMap(chileFileData, chileFileData.getData(), fileTypeMap); + if (type != null) { + return type; + } + } + return null; + } - return artifacts; - } + /** + * Gets artifacts. + * + * @param manifestContent the manifest content + * @return the artifacts + */ + public static Set<String> getArtifacts(ManifestContent manifestContent) { + Set<String> artifacts = new HashSet<>(); + scanArtifacts(null, manifestContent.getData(), artifacts); - private static void scanArtifacts(FileData fileData, List<FileData> data, Set<String> artifacts) { - if (fileData != null && fileData.getType() != null) { - if (isArtifact(fileData)) { - artifacts.add(fileData.getFile()); - } + return artifacts; } - if (data == null) { - return; - } + private static void scanArtifacts(FileData fileData, List<FileData> data, Set<String> artifacts) { + if (fileData != null && fileData.getType() != null) { + if (isArtifact(fileData)) { + artifacts.add(fileData.getFile()); + } + } - for (FileData chileFileData : data) { - scanArtifacts(chileFileData, chileFileData.getData(), artifacts); - } - } - - private static boolean isArtifact(FileData fileData) { - if (FileData.Type.valueOf(fileData.getType().name()) != null - && !fileData.getType().equals(FileData.Type.HEAT) - && !fileData.getType().equals(FileData.Type.HEAT_ENV) - && !fileData.getType().equals(FileData.Type.HEAT_NET) - && !fileData.getType().equals(FileData.Type.HEAT_VOL)) { - return true; + if (data == null) { + return; + } + + for (FileData chileFileData : data) { + scanArtifacts(chileFileData, chileFileData.getData(), artifacts); + } } - return false; - } - - /** - * Gets base files. - * - * @param manifestContent the manifest content - * @return the base files - */ - public static Set<String> getBaseFiles(ManifestContent manifestContent) { - Set<String> baseFiles = new HashSet<>(); - scanBase(null, manifestContent.getData(), baseFiles); - return baseFiles; - } - - private static void scanBase(FileData fileData, List<FileData> data, Set<String> baseFiles) { - if (fileData != null && fileData.getBase() != null) { - if (fileData.getBase()) { - baseFiles.add(fileData.getFile()); - } + + private static boolean isArtifact(FileData fileData) { + return FileData.Type.valueOf(fileData.getType().name()) != null + && !fileData.getType().equals(FileData.Type.HEAT) + && !fileData.getType().equals(FileData.Type.HEAT_ENV) + && !fileData.getType().equals(FileData.Type.HEAT_NET) + && !fileData.getType().equals(FileData.Type.HEAT_VOL); } - if (data == null) { - return; + /** + * Gets base files. + * + * @param manifestContent the manifest content + * @return the base files + */ + public static Set<String> getBaseFiles(ManifestContent manifestContent) { + Set<String> baseFiles = new HashSet<>(); + scanBase(null, manifestContent.getData(), baseFiles); + return baseFiles; } - for (FileData chileFileData : data) { - scanBase(chileFileData, chileFileData.getData(), baseFiles); + private static void scanBase(FileData fileData, List<FileData> data, Set<String> baseFiles) { + if (fileData != null && fileData.getBase() != null) { + if (fileData.getBase()) { + baseFiles.add(fileData.getFile()); + } + } + + if (data == null) { + return; + } + + for (FileData chileFileData : data) { + scanBase(chileFileData, chileFileData.getData(), baseFiles); + } } - } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManager.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManager.java index e8fe034176..936f02be67 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManager.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManager.java @@ -12,10 +12,18 @@ * 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. -*/ + */ package org.openecomp.sdc.heat.services.tree; +import java.io.InputStream; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + import org.onap.sdc.tosca.services.YamlUtil; import org.openecomp.core.utilities.file.FileContentHandler; import org.openecomp.core.utilities.file.FileUtils; @@ -31,257 +39,247 @@ import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; -import java.io.InputStream; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - public class HeatTreeManager { - private static final Logger LOGGER = LoggerFactory.getLogger(HeatTreeManager.class); - - - private FileContentHandler heatContentMap = new FileContentHandler(); - private byte[] manifest; - private HeatStructureTree tree = new HeatStructureTree(); - private Map<String, HeatStructureTree> fileTreeRef = new HashMap<>(); - private Map<String, Artifact> artifactRef = new HashMap<>(); - private Map<String, Artifact> candidateOrphanArtifacts = new HashMap<>(); - private Map<String, HeatStructureTree> nestedFiles = new HashMap<>(); - private Map<HeatStructureTree, HeatStructureTree> volumeFileToParent = new HashMap<>(); - private Map<HeatStructureTree, HeatStructureTree> networkFileToParent = new HashMap<>(); - private Set<String> manifestFiles = new HashSet<>(); - - /** - * Add file. - * - * @param fileName the file name - * @param content the content - */ - public void addFile(String fileName, InputStream content) { - if (fileName.equals(SdcCommon.MANIFEST_NAME)) { - manifest = FileUtils.toByteArray(content); - - } else { - heatContentMap.addFile(fileName, content); + private static final Logger LOGGER = LoggerFactory.getLogger(HeatTreeManager.class); + + + private FileContentHandler heatContentMap = new FileContentHandler(); + private byte[] manifest; + private HeatStructureTree tree = new HeatStructureTree(); + private Map<String, HeatStructureTree> fileTreeRef = new HashMap<>(); + private Map<String, Artifact> artifactRef = new HashMap<>(); + private Map<String, Artifact> candidateOrphanArtifacts = new HashMap<>(); + private Map<String, HeatStructureTree> nestedFiles = new HashMap<>(); + private Map<HeatStructureTree, HeatStructureTree> volumeFileToParent = new HashMap<>(); + private Map<HeatStructureTree, HeatStructureTree> networkFileToParent = new HashMap<>(); + private Set<String> manifestFiles = new HashSet<>(); + + /** + * Add file. + * + * @param fileName the file name + * @param content the content + */ + public void addFile(String fileName, InputStream content) { + if (fileName.equals(SdcCommon.MANIFEST_NAME)) { + manifest = FileUtils.toByteArray(content); + + } else { + heatContentMap.addFile(fileName, content); + } + } + + /** + * Create tree. + */ + public void createTree() { + if (manifest == null) { + LOGGER.error("Missing manifest file in the zip."); + return; + } + ManifestContent manifestData = + JsonUtil.json2Object(new String(manifest), ManifestContent.class); + scanTree(null, manifestData.getData()); + addNonNestedVolumeNetworkToTree(volumeFileToParent, nestedFiles.keySet(), true); + addNonNestedVolumeNetworkToTree(networkFileToParent, nestedFiles.keySet(), false); + handleOrphans(); + + tree = fileTreeRef.get(SdcCommon.PARENT); } - } - - /** - * Create tree. - */ - public void createTree() { - if (manifest == null) { - LOGGER.error("Missing manifest file in the zip."); - return; + + private void handleOrphans() { + tree = fileTreeRef.get(SdcCommon.PARENT); + candidateOrphanArtifacts.forEach((key, value) -> tree.addArtifactToArtifactList(value)); + nestedFiles + .values().stream().filter(tree.getHeat()::contains) + .forEach(tree.getHeat()::remove); + + heatContentMap.getFileList().stream().filter(this::isNotInManifestFiles) + .forEach(this::addTreeOther); } - ManifestContent manifestData = - JsonUtil.json2Object(new String(manifest), ManifestContent.class); - scanTree(null, manifestData.getData()); - addNonNestedVolumeNetworkToTree(volumeFileToParent, nestedFiles.keySet(), true); - addNonNestedVolumeNetworkToTree(networkFileToParent, nestedFiles.keySet(), false); - handleOrphans(); - - tree = fileTreeRef.get(SdcCommon.PARENT); - } - - private void handleOrphans() { - tree = fileTreeRef.get(SdcCommon.PARENT); - candidateOrphanArtifacts.entrySet().stream() - .forEach(entry -> tree.addArtifactToArtifactList(entry.getValue())); - nestedFiles - .values().stream().filter(tree.getHeat()::contains) - .forEach(tree.getHeat()::remove); - - heatContentMap.getFileList().stream().filter(this::isNotInManifestFiles) - .forEach(this::addTreeOther); - } - - private boolean isNotInManifestFiles(String fileName) { - return !manifestFiles.contains(fileName); - } - - private void addTreeOther(String fileName) { - if (tree.getOther() == null) { - tree.setOther(new HashSet<>()); + + private boolean isNotInManifestFiles(String fileName) { + return !manifestFiles.contains(fileName); } - HeatStructureTree other = new HeatStructureTree(fileName, false); - fileTreeRef.put(fileName, other); - tree.getOther().add(other); - } + private void addTreeOther(String fileName) { + if (tree.getOther() == null) { + tree.setOther(new HashSet<>()); + } + HeatStructureTree other = new HeatStructureTree(fileName, false); + fileTreeRef.put(fileName, other); + tree.getOther().add(other); + } - private void handleHeatContentReference(HeatStructureTree fileHeatStructureTree, - GlobalValidationContext globalContext) { - String fileName = fileHeatStructureTree.getFileName(); + private void handleHeatContentReference(HeatStructureTree fileHeatStructureTree, + GlobalValidationContext globalContext) { - try (InputStream fileContent = this.heatContentMap.getFileContent(fileName)) { - HeatOrchestrationTemplate hot = - new YamlUtil().yamlToObject(fileContent, HeatOrchestrationTemplate.class); + String fileName = fileHeatStructureTree.getFileName(); + try (InputStream fileContent = this.heatContentMap.getFileContent(fileName)) { + HeatOrchestrationTemplate hot = + new YamlUtil().yamlToObject(fileContent, HeatOrchestrationTemplate.class); - Set<String> nestedSet = HeatTreeManagerUtil.getNestedFiles(fileName, hot, globalContext); - addHeatNestedFiles(fileHeatStructureTree, nestedSet); + Set<String> nestedSet = HeatTreeManagerUtil.getNestedFiles(hot); + addHeatNestedFiles(fileHeatStructureTree, nestedSet); - Set<String> artifactSet = HeatTreeManagerUtil.getArtifactFiles(fileName, hot, globalContext); - addHeatArtifactFiles(fileHeatStructureTree, artifactSet); - } catch (Exception ignore) { - LOGGER.debug("Invalid YAML received. No need to process content reference - ignoring", ignore); - } - } - - - private void addHeatArtifactFiles(HeatStructureTree fileHeatStructureTree, - Set<String> artifactSet) { - Artifact artifact; - for (String artifactName : artifactSet) { - FileData.Type type = - candidateOrphanArtifacts.get(artifactName) != null ? candidateOrphanArtifacts - .get(artifactName).getType() : null; - artifact = new Artifact(artifactName, type); - artifactRef.put(artifactName, artifact); - candidateOrphanArtifacts.remove(artifactName); - fileHeatStructureTree.addArtifactToArtifactList(artifact); - } - } - - - private void addHeatNestedFiles(HeatStructureTree fileHeatStructureTree, Set<String> nestedSet) { - HeatStructureTree childHeatStructureTree; - for (String nestedName : nestedSet) { - childHeatStructureTree = fileTreeRef.get(nestedName); - if (childHeatStructureTree == null) { - childHeatStructureTree = new HeatStructureTree(); - childHeatStructureTree.setFileName(nestedName); - fileTreeRef.put(nestedName, childHeatStructureTree); - } - fileHeatStructureTree.addHeatStructureTreeToNestedHeatList(childHeatStructureTree); - nestedFiles.put(childHeatStructureTree.getFileName(), childHeatStructureTree); + Set<String> artifactSet = HeatTreeManagerUtil.getArtifactFiles(fileName, hot, globalContext); + addHeatArtifactFiles(fileHeatStructureTree, artifactSet); + } catch (Exception exp) { + LOGGER.debug("Invalid YAML received. No need to process content reference - ignoring", exp); + } } - } - - - /** - * Add errors. - * - * @param validationErrors the validation errors - */ - public void addErrors(Map<String, List<ErrorMessage>> validationErrors) { - - validationErrors.entrySet().stream().filter(entry ->{ - return fileTreeRef.get(entry.getKey()) != null; - }).forEach(entry -> entry.getValue().stream().forEach(fileTreeRef.get(entry.getKey())::addErrorToErrorsList)); - - validationErrors.entrySet().stream().filter(entry -> { - return artifactRef.get(entry.getKey()) != null; - }).forEach(entry -> artifactRef.get(entry.getKey()).setErrors(entry.getValue())); - - } - - /** - * Scan tree. - * - * @param parent the parent - * @param data the data - */ - public void scanTree(String parent, List<FileData> data) { - String fileName; - FileData.Type type; - HeatStructureTree parentHeatStructureTree; - HeatStructureTree fileHeatStructureTree; - HeatStructureTree childHeatStructureTree; - Artifact artifact; - if (parent == null) { - parentHeatStructureTree = new HeatStructureTree(); - fileTreeRef.put(SdcCommon.PARENT, parentHeatStructureTree); - } else { - parentHeatStructureTree = fileTreeRef.get(parent); + + + private void addHeatArtifactFiles(HeatStructureTree fileHeatStructureTree, + Set<String> artifactSet) { + Artifact artifact; + for (String artifactName : artifactSet) { + FileData.Type type = + candidateOrphanArtifacts.get(artifactName) != null ? candidateOrphanArtifacts + .get(artifactName).getType() : null; + artifact = new Artifact(artifactName, type); + artifactRef.put(artifactName, artifact); + candidateOrphanArtifacts.remove(artifactName); + fileHeatStructureTree.addArtifactToArtifactList(artifact); + } } - for (FileData fileData : data) { - fileName = fileData.getFile(); - manifestFiles.add(fileName); - type = fileData.getType(); - if (Objects.nonNull(type) && FileData.Type.HEAT.equals(type)) { - fileHeatStructureTree = fileTreeRef.get(fileName); - if (fileHeatStructureTree == null) { - fileHeatStructureTree = new HeatStructureTree(); - fileTreeRef.put(fileName, fileHeatStructureTree); + private void addHeatNestedFiles(HeatStructureTree fileHeatStructureTree, Set<String> nestedSet) { + HeatStructureTree childHeatStructureTree; + for (String nestedName : nestedSet) { + childHeatStructureTree = fileTreeRef.get(nestedName); + if (childHeatStructureTree == null) { + childHeatStructureTree = new HeatStructureTree(); + childHeatStructureTree.setFileName(nestedName); + fileTreeRef.put(nestedName, childHeatStructureTree); + } + fileHeatStructureTree.addHeatStructureTreeToNestedHeatList(childHeatStructureTree); + nestedFiles.put(childHeatStructureTree.getFileName(), childHeatStructureTree); } - fileHeatStructureTree.setFileName(fileName); - fileHeatStructureTree.setBase(fileData.getBase()); - fileHeatStructureTree.setType(type); - handleHeatContentReference(fileHeatStructureTree, null); - parentHeatStructureTree.addHeatToHeatList(fileHeatStructureTree); - if (fileData.getData() != null) { - scanTree(fileName, fileData.getData()); + } + + + /** + * Add errors. + * + * @param validationErrors the validation errors + */ + public void addErrors(Map<String, List<ErrorMessage>> validationErrors) { + + validationErrors.entrySet().stream() + .filter(entry -> fileTreeRef.get(entry.getKey()) != null) + .forEach(entry -> entry.getValue().forEach(fileTreeRef.get(entry.getKey())::addErrorToErrorsList)); + + validationErrors.entrySet().stream() + .filter(entry -> artifactRef.get(entry.getKey()) != null) + .forEach(entry -> artifactRef.get(entry.getKey()).setErrors(entry.getValue())); + + } + + /** + * Scan tree. + * + * @param parent the parent + * @param data the data + */ + public void scanTree(String parent, List<FileData> data) { + String fileName; + FileData.Type type; + HeatStructureTree parentHeatStructureTree; + HeatStructureTree fileHeatStructureTree; + HeatStructureTree childHeatStructureTree; + Artifact artifact; + if (parent == null) { + parentHeatStructureTree = new HeatStructureTree(); + fileTreeRef.put(SdcCommon.PARENT, parentHeatStructureTree); + } else { + parentHeatStructureTree = fileTreeRef.get(parent); } - } else { - childHeatStructureTree = new HeatStructureTree(); - childHeatStructureTree.setFileName(fileName); - childHeatStructureTree.setBase(fileData.getBase()); - childHeatStructureTree.setType(type); - fileTreeRef.put(childHeatStructureTree.getFileName(), childHeatStructureTree); - - if (type == null) { - parentHeatStructureTree.addOtherToOtherList(childHeatStructureTree); - } else if (FileData.Type.HEAT_NET.equals(type)) { - networkFileToParent.put(childHeatStructureTree, parentHeatStructureTree); - if (fileData.getData() != null) { - scanTree(fileName, fileData.getData()); - } - handleHeatContentReference(childHeatStructureTree, null); - - } else if (FileData.Type.HEAT_VOL.equals(type)) { - volumeFileToParent.put(childHeatStructureTree, parentHeatStructureTree); - if (fileData.getData() != null) { - scanTree(fileName, fileData.getData()); - } - handleHeatContentReference(childHeatStructureTree, null); - } else if (FileData.Type.HEAT_ENV.equals(type)) { - if (parentHeatStructureTree != null && parentHeatStructureTree.getFileName() != null) { - parentHeatStructureTree.setEnv(childHeatStructureTree); - } else { - if (parentHeatStructureTree.getOther() == null) { - parentHeatStructureTree.setOther(new HashSet<>()); + + for (FileData fileData : data) { + fileName = fileData.getFile(); + manifestFiles.add(fileName); + type = fileData.getType(); + + if (Objects.nonNull(type) && FileData.Type.HEAT.equals(type)) { + fileHeatStructureTree = fileTreeRef.get(fileName); + if (fileHeatStructureTree == null) { + fileHeatStructureTree = new HeatStructureTree(); + fileTreeRef.put(fileName, fileHeatStructureTree); + } + fileHeatStructureTree.setFileName(fileName); + fileHeatStructureTree.setBase(fileData.getBase()); + fileHeatStructureTree.setType(type); + handleHeatContentReference(fileHeatStructureTree, null); + parentHeatStructureTree.addHeatToHeatList(fileHeatStructureTree); + if (fileData.getData() != null) { + scanTree(fileName, fileData.getData()); + } + } else { + childHeatStructureTree = new HeatStructureTree(); + childHeatStructureTree.setFileName(fileName); + childHeatStructureTree.setBase(fileData.getBase()); + childHeatStructureTree.setType(type); + fileTreeRef.put(childHeatStructureTree.getFileName(), childHeatStructureTree); + + if (type == null) { + parentHeatStructureTree.addOtherToOtherList(childHeatStructureTree); + } else if (FileData.Type.HEAT_NET.equals(type)) { + networkFileToParent.put(childHeatStructureTree, parentHeatStructureTree); + if (fileData.getData() != null) { + scanTree(fileName, fileData.getData()); + } + handleHeatContentReference(childHeatStructureTree, null); + + } else if (FileData.Type.HEAT_VOL.equals(type)) { + volumeFileToParent.put(childHeatStructureTree, parentHeatStructureTree); + if (fileData.getData() != null) { + scanTree(fileName, fileData.getData()); + } + handleHeatContentReference(childHeatStructureTree, null); + } else if (FileData.Type.HEAT_ENV.equals(type)) { + if (parentHeatStructureTree != null && parentHeatStructureTree.getFileName() != null) { + parentHeatStructureTree.setEnv(childHeatStructureTree); + } else { + if (parentHeatStructureTree.getOther() == null) { + parentHeatStructureTree.setOther(new HashSet<>()); + } + parentHeatStructureTree.getOther().add(childHeatStructureTree); + } + } else { + artifact = new Artifact(fileName, type); + if (!artifactRef.keySet().contains(fileName)) { + artifactRef.put(fileName, artifact); + candidateOrphanArtifacts.put(fileName, artifact); + } + } } - parentHeatStructureTree.getOther().add(childHeatStructureTree); - } - } else { - artifact = new Artifact(fileName, type); - if (!artifactRef.keySet().contains(fileName)) { - artifactRef.put(fileName, artifact); - candidateOrphanArtifacts.put(fileName, artifact); - } } - } } - } - - - private void addNonNestedVolumeNetworkToTree( - Map<HeatStructureTree, HeatStructureTree> netVolToParent, Set<String> nestedFileNames, - boolean isVolume) { - for (Map.Entry<HeatStructureTree, HeatStructureTree> entry : netVolToParent.entrySet()) { - HeatStructureTree netOrVolNode = entry.getKey(); - HeatStructureTree parent = entry.getValue(); - if (!nestedFileNames.contains(netOrVolNode.getFileName())) { - if (isVolume) { - parent.addVolumeFileToVolumeList(netOrVolNode); - } else { - parent.addNetworkToNetworkList(netOrVolNode); + + + private void addNonNestedVolumeNetworkToTree( + Map<HeatStructureTree, HeatStructureTree> netVolToParent, Set<String> nestedFileNames, + boolean isVolume) { + for (Map.Entry<HeatStructureTree, HeatStructureTree> entry : netVolToParent.entrySet()) { + HeatStructureTree netOrVolNode = entry.getKey(); + HeatStructureTree parent = entry.getValue(); + if (!nestedFileNames.contains(netOrVolNode.getFileName())) { + if (isVolume) { + parent.addVolumeFileToVolumeList(netOrVolNode); + } else { + parent.addNetworkToNetworkList(netOrVolNode); + } + } } - } } - } - public HeatStructureTree getTree() { - return tree; - } + public HeatStructureTree getTree() { + return tree; + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerUtil.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerUtil.java index 7a2dfc971b..8c6d1354c4 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerUtil.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerUtil.java @@ -12,11 +12,17 @@ * 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. -*/ + */ package org.openecomp.sdc.heat.services.tree; +import java.util.Collection; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.openecomp.core.utilities.file.FileContentHandler; @@ -30,196 +36,185 @@ import org.openecomp.sdc.heat.datatypes.model.PropertiesMapKeyTypes; import org.openecomp.sdc.heat.datatypes.model.Resource; import org.openecomp.sdc.heat.services.HeatStructureUtil; -import java.util.Collection; -import java.util.HashSet; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - public class HeatTreeManagerUtil { - private static final String TYPE = "type"; - private HeatTreeManagerUtil() { - - } - - /** - * Init heat tree manager heat tree manager. - * - * @param fileContentMap the file content map - * @return the heat tree manager - */ - public static HeatTreeManager initHeatTreeManager(FileContentHandler fileContentMap) { - - HeatTreeManager heatTreeManager = new HeatTreeManager(); - fileContentMap.getFileList().stream().forEach( - fileName -> heatTreeManager.addFile(fileName, fileContentMap.getFileContent(fileName))); - - return heatTreeManager; - } - - /** - * Gets nested files. - * - * @param filename the filename - * @param hot the hot - * @param globalContext the global context - * @return the nested files - */ - public static Set<String> getNestedFiles(String filename, HeatOrchestrationTemplate hot, - GlobalValidationContext globalContext) { - Set<String> nestedFileList = new HashSet<>(); - hot.getResources().values().stream().filter( - resource -> resource.getType().endsWith(".yaml") || resource.getType().endsWith(".yml")) - .forEach(resource -> nestedFileList.add(resource.getType())); - - Set<String> resourceDefNestedFiles = getResourceDefNestedFiles(hot); - nestedFileList.addAll(resourceDefNestedFiles); - return nestedFileList; - } - - /** - * Gets artifact files. - * - * @param filename the filename - * @param hot the hot - * @param globalContext the global context - * @return the artifact files - */ - public static Set<String> getArtifactFiles(String filename, HeatOrchestrationTemplate hot, - GlobalValidationContext globalContext) { - Set<String> artifactSet = new HashSet<>(); - Collection<Resource> resourcesValue = - hot.getResources() == null ? null : hot.getResources().values(); - if (CollectionUtils.isNotEmpty(resourcesValue)) { - for (Resource resource : resourcesValue) { - Collection<Object> properties = - resource.getProperties() == null ? null : resource.getProperties().values(); - - artifactSet.addAll(getArtifactsFromPropertiesAndAddInArtifactSet(properties, - filename, globalContext)); - } + private static final String TYPE = "type"; + + private HeatTreeManagerUtil() { + } - return artifactSet; - } - - private static Set<String> getArtifactsFromPropertiesAndAddInArtifactSet(Collection<Object> properties, - String filename, - GlobalValidationContext globalContext ){ - Set<String> artifactSet = new HashSet<>(); - if (CollectionUtils.isNotEmpty(properties)) { - - for (Object property : properties) { - Set<String> artifactNames = - HeatStructureUtil.getReferencedValuesByFunctionName(filename, "get_file", property, - globalContext); - artifactSet.addAll(artifactNames); - } + + /** + * Init heat tree manager heat tree manager. + * + * @param fileContentMap the file content map + * @return the heat tree manager + */ + public static HeatTreeManager initHeatTreeManager(FileContentHandler fileContentMap) { + + HeatTreeManager heatTreeManager = new HeatTreeManager(); + fileContentMap.getFileList().forEach( + fileName -> heatTreeManager.addFile(fileName, fileContentMap.getFileContent(fileName))); + + return heatTreeManager; } - return artifactSet; - } - - private static Set<String> getResourceDefNestedFiles(HeatOrchestrationTemplate hot) { - Set<String> resourceDefNestedFiles = new HashSet<>(); - hot.getResources() - .entrySet().stream().filter(entry -> entry.getValue().getType() - .equals(HeatResourcesTypes.RESOURCE_GROUP_RESOURCE_TYPE.getHeatResource())) - .filter(entry -> - getResourceDef(entry.getValue()) != null - && HeatStructureUtil.isNestedResource( - getResourceDef(entry.getValue()) - .getType())) - .forEach(entry -> resourceDefNestedFiles.add( - getResourceDef( entry.getValue()).getType())); - return resourceDefNestedFiles; - } - - /** - * Gets resource def. - * - * @param resource the resource - * @return the resource def - */ - @SuppressWarnings("unchecked") - public static Resource getResourceDef( Resource resource) { - Resource resourceDef = null; - Map<String, Object> resourceDefValueMap = resource.getProperties() == null ? null - : (Map<String, Object>) resource.getProperties().get( - PropertiesMapKeyTypes.RESOURCE_DEF.getKeyMap()); - if (resourceDefValueMap != null && MapUtils.isNotEmpty(resourceDefValueMap) ) { - Object resourceDefType = resourceDefValueMap.get(TYPE); - if ( resourceDefType instanceof String && isResourceGroupTypeNested((String) resourceDefType)) { - resourceDef = new Resource(); - resourceDef.setType((String) resourceDefType); - //noinspection unchecked - resourceDef.setProperties((Map<String, Object>) resourceDefValueMap.get("properties")); - } + /** + * Will verify the resource type and if type is of nested will return the nested file name + * + * @param hot Containing all translated data from heat file + * @return the nested files + */ + public static Set<String> getNestedFiles(HeatOrchestrationTemplate hot) { + Set<String> nestedFileList = new HashSet<>(); + hot.getResources().values().stream().filter( + resource -> resource.getType().endsWith(".yaml") || resource.getType().endsWith(".yml")) + .forEach(resource -> nestedFileList.add(resource.getType())); + + Set<String> resourceDefNestedFiles = getResourceDefNestedFiles(hot); + nestedFileList.addAll(resourceDefNestedFiles); + return nestedFileList; + } + + /** + * Verify if any artifact present in file whose detail is provided and return Artifact name + * + * @param filename name of file where artifact is too be looked for + * @param hot translated heat data + * @param globalContext the global context + * @return the artifact files name + */ + public static Set<String> getArtifactFiles(String filename, HeatOrchestrationTemplate hot, + GlobalValidationContext globalContext) { + Set<String> artifactSet = new HashSet<>(); + Collection<Resource> resourcesValue = + hot.getResources() == null ? null : hot.getResources().values(); + if (CollectionUtils.isNotEmpty(resourcesValue)) { + for (Resource resource : resourcesValue) { + Collection<Object> properties = + resource.getProperties() == null ? null : resource.getProperties().values(); + + artifactSet.addAll(getArtifactsFromPropertiesAndAddInArtifactSet(properties, + filename, globalContext)); + } + } + return artifactSet; + } + + private static Set<String> getArtifactsFromPropertiesAndAddInArtifactSet(Collection<Object> properties, + String filename, + GlobalValidationContext globalContext) { + Set<String> artifactSet = new HashSet<>(); + if (CollectionUtils.isNotEmpty(properties)) { + + for (Object property : properties) { + Set<String> artifactNames = + HeatStructureUtil.getReferencedValuesByFunctionName(filename, "get_file", property, + globalContext); + artifactSet.addAll(artifactNames); + } + } + + return artifactSet; + } + private static Set<String> getResourceDefNestedFiles(HeatOrchestrationTemplate hot) { + Set<String> resourceDefNestedFiles = new HashSet<>(); + hot.getResources() + .entrySet().stream().filter(entry -> entry.getValue().getType() + .equals(HeatResourcesTypes.RESOURCE_GROUP_RESOURCE_TYPE.getHeatResource())) + .filter(entry -> + getResourceDef(entry.getValue()) != null + && HeatStructureUtil.isNestedResource( + getResourceDef(entry.getValue()) + .getType())) + .forEach(entry -> resourceDefNestedFiles.add( + getResourceDef(entry.getValue()).getType())); + return resourceDefNestedFiles; } - return resourceDef; - } - - @SuppressWarnings("unchecked") - public static void checkResourceGroupTypeValid(String filename, String resourceName, - Resource resource, - GlobalValidationContext globalContext) { - Map<String, Object> resourceDefValueMap = resource.getProperties() == null ? null - : (Map<String, Object>) resource.getProperties().get( - PropertiesMapKeyTypes.RESOURCE_DEF.getKeyMap()); - if (resourceDefValueMap != null && MapUtils.isNotEmpty(resourceDefValueMap) ) { - Object resourceDefType = resourceDefValueMap.get(TYPE); - if (Objects.nonNull(resourceDefType) && !(resourceDefType instanceof String) ) { - globalContext.addMessage(filename, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + + /** + * Gets resource def. + * + * @param resource the resource + * @return the resource def + */ + @SuppressWarnings("unchecked") + public static Resource getResourceDef(Resource resource) { + Resource resourceDef = null; + Map<String, Object> resourceDefValueMap = resource.getProperties() == null ? null + : (Map<String, Object>) resource.getProperties().get( + PropertiesMapKeyTypes.RESOURCE_DEF.getKeyMap()); + if (MapUtils.isNotEmpty(resourceDefValueMap)) { + Object resourceDefType = resourceDefValueMap.get(TYPE); + if (resourceDefType instanceof String && isResourceGroupTypeNested((String) resourceDefType)) { + resourceDef = new Resource(); + resourceDef.setType((String) resourceDefType); + //noinspection unchecked + resourceDef.setProperties((Map<String, Object>) resourceDefValueMap.get("properties")); + } + + } + return resourceDef; + } + + @SuppressWarnings("unchecked") + public static void checkResourceGroupTypeValid(String filename, String resourceName, + Resource resource, + GlobalValidationContext globalContext) { + Map<String, Object> resourceDefValueMap = resource.getProperties() == null ? null + : (Map<String, Object>) resource.getProperties().get( + PropertiesMapKeyTypes.RESOURCE_DEF.getKeyMap()); + if (MapUtils.isNotEmpty(resourceDefValueMap)) { + Object resourceDefType = resourceDefValueMap.get(TYPE); + if (Objects.nonNull(resourceDefType) && !(resourceDefType instanceof String)) { + globalContext.addMessage(filename, ErrorLevel.WARNING, ErrorMessagesFormatBuilder .getErrorWithParameters( globalContext.getMessageCode(), Messages.INVALID_RESOURCE_GROUP_TYPE.getErrorMessage(), resourceName, resourceDefType.toString())); - } + } + } } - } - - @SuppressWarnings("unchecked") - public static void checkResourceTypeValid(String filename, String resourceName, - Resource resource, - GlobalValidationContext globalContext) { - Map<String, Object> resourceDefValueMap = resource.getProperties() == null ? null - : (Map<String, Object>) resource.getProperties().get( - PropertiesMapKeyTypes.RESOURCE_DEF.getKeyMap()); - if (resourceDefValueMap != null && MapUtils.isNotEmpty(resourceDefValueMap) ) { - Object resourceDefType = resourceDefValueMap.get(TYPE); - if (Objects.isNull(resourceDefType)) { - globalContext.addMessage(filename, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + + @SuppressWarnings("unchecked") + public static void checkResourceTypeValid(String filename, String resourceName, + Resource resource, + GlobalValidationContext globalContext) { + Map<String, Object> resourceDefValueMap = resource.getProperties() == null ? null + : (Map<String, Object>) resource.getProperties().get(PropertiesMapKeyTypes.RESOURCE_DEF.getKeyMap()); + if (MapUtils.isNotEmpty(resourceDefValueMap)) { + Object resourceDefType = resourceDefValueMap.get(TYPE); + if (Objects.isNull(resourceDefType)) { + globalContext.addMessage(filename, ErrorLevel.WARNING, ErrorMessagesFormatBuilder .getErrorWithParameters( globalContext.getMessageCode(), Messages.INVALID_RESOURCE_TYPE.getErrorMessage(), "null", resourceName)); - } + } + } } - } - - public static boolean isResourceGroupTypeNested(String resourceDefType) { - return HeatStructureUtil.isNestedResource(resourceDefType); - } - - public static boolean checkIfResourceGroupTypeIsNested(String filename, String resourceName, - Resource resource, - GlobalValidationContext globalContext) { - //noinspection unchecked - Map<String, Object> resourceDefValueMap = resource.getProperties() == null ? null - : (Map<String, Object>) resource.getProperties().get( - PropertiesMapKeyTypes.RESOURCE_DEF.getKeyMap()); - if (resourceDefValueMap != null && MapUtils.isNotEmpty(resourceDefValueMap) ) { - Object resourceDefType = resourceDefValueMap.get(TYPE); - if (resourceDefType instanceof String && isResourceGroupTypeNested((String) resourceDefType)) { - - globalContext.addMessage(filename, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + + public static boolean isResourceGroupTypeNested(String resourceDefType) { + return HeatStructureUtil.isNestedResource(resourceDefType); + } + + public static boolean checkIfResourceGroupTypeIsNested(String filename, String resourceName, + Resource resource, + GlobalValidationContext globalContext) { + //noinspection unchecked + Map<String, Object> resourceDefValueMap = resource.getProperties() == null ? null + : (Map<String, Object>) resource.getProperties().get(PropertiesMapKeyTypes.RESOURCE_DEF.getKeyMap()); + if (MapUtils.isNotEmpty(resourceDefValueMap)) { + Object resourceDefType = resourceDefValueMap.get(TYPE); + if (resourceDefType instanceof String && isResourceGroupTypeNested((String) resourceDefType)) { + globalContext.addMessage(filename, ErrorLevel.WARNING, ErrorMessagesFormatBuilder .getErrorWithParameters( globalContext.getMessageCode(), Messages.INVALID_RESOURCE_GROUP_TYPE.getErrorMessage(), resourceName, resourceDefType.toString())); - return true; - } + return true; + } + } + return false; } - return false; - } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManager.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManager.java index c711c72faf..944ab62f9f 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManager.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManager.java @@ -1,9 +1,20 @@ -package org.openecomp.sdc.heat.services.tree; +/* + * Copyright © 2017-2018 European Support Limited + * + * 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. +**/ -import org.openecomp.core.utilities.file.FileContentHandler; -import org.openecomp.sdc.common.utils.SdcCommon; -import org.openecomp.sdc.datatypes.error.ErrorMessage; -import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree; +package org.openecomp.sdc.heat.services.tree; import java.io.File; import java.util.HashMap; @@ -12,56 +23,84 @@ import java.util.Map; import java.util.Objects; import java.util.regex.Pattern; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree; + +/** + * The type Tosca tree manager. + */ public class ToscaTreeManager { - private FileContentHandler csarContentMap = new FileContentHandler(); - private HeatStructureTree tree = new HeatStructureTree(); - private Map<String, HeatStructureTree> fileTreeRef = new HashMap<>(); + private FileContentHandler csarContentMap = new FileContentHandler(); + private HeatStructureTree tree = new HeatStructureTree(); + private Map<String, HeatStructureTree> fileTreeRef = new HashMap<>(); - public void addFile(String fileName, byte[] content) { - if (!fileName.equals(SdcCommon.CSAR_MANIFEST_NAME)) { - csarContentMap.addFile(fileName, content); - } - } - public void createTree() { - for (Map.Entry<String, byte[]> fileEntry : csarContentMap.getFiles().entrySet()) { - String[] splitFilename = getFullFileNameAsArray(fileEntry.getKey()); - addFileToTree(splitFilename, 0, splitFilename[0], tree); + /** + * Add file. + * + * @param fileName the file name + * @param content the content + */ + public void addFile(String fileName, byte[] content) { + if (!fileName.equals(SdcCommon.CSAR_MANIFEST_NAME)) { + csarContentMap.addFile(fileName, content); + } } - } - private void addFileToTree(String[] splitFilename, int startIndex, String fullFileName, - HeatStructureTree parent) { - fileTreeRef.putIfAbsent(fullFileName, new HeatStructureTree()); - HeatStructureTree heatStructureTree = fileTreeRef.get(fullFileName); - heatStructureTree.setFileName(splitFilename[startIndex]); - if (startIndex < splitFilename.length - 1) { - addFileToTree(splitFilename, startIndex + 1, - getFullFileName(fullFileName, splitFilename[startIndex + 1]), heatStructureTree); + /** + * Create tree. + */ + public void createTree() { + for (Map.Entry<String, byte[]> fileEntry : csarContentMap.getFiles().entrySet()) { + String[] splitFilename = getFullFileNameAsArray(fileEntry.getKey()); + addFileToTree(splitFilename, 0, splitFilename[0], tree); + } } - parent.addHeatStructureTreeToNestedHeatList(heatStructureTree); - } - public void addErrors(Map<String, List<ErrorMessage>> validationErrors) { - validationErrors.entrySet().stream().filter(entry -> - Objects.nonNull(fileTreeRef.get(entry.getKey()))).forEach(entry -> entry.getValue() - .forEach(error -> fileTreeRef.get(entry.getKey()).addErrorToErrorsList(error))); - } + private void addFileToTree(String[] splitFilename, int startIndex, String fullFileName, + HeatStructureTree parent) { + fileTreeRef.putIfAbsent(fullFileName, new HeatStructureTree()); + HeatStructureTree heatStructureTree = fileTreeRef.get(fullFileName); + heatStructureTree.setFileName(splitFilename[startIndex]); + if (startIndex < splitFilename.length - 1) { + addFileToTree(splitFilename, startIndex + 1, + getFullFileName(fullFileName, splitFilename[startIndex + 1]), heatStructureTree); + } + parent.addHeatStructureTreeToNestedHeatList(heatStructureTree); + } - private String getFullFileName(String parentFullName, String fileName) { - return parentFullName + File.separator + fileName; - } + /** + * Add errors. + * + * @param validationErrors the validation errors + */ + public void addErrors(Map<String, List<ErrorMessage>> validationErrors) { + validationErrors.entrySet().stream().filter(entry -> + Objects.nonNull(fileTreeRef.get(entry.getKey()))).forEach(entry -> entry.getValue() + .forEach(error -> fileTreeRef.get(entry.getKey()).addErrorToErrorsList(error))); + } - private String[] getFullFileNameAsArray(String filename) { - if (filename.contains("/")) { - return filename.split("/"); + private String getFullFileName(String parentFullName, String fileName) { + return parentFullName + File.separator + fileName; } - return filename.split(Pattern.quote(File.separator)); - } + private String[] getFullFileNameAsArray(String filename) { + if (filename.contains("/")) { + return filename.split("/"); + } + + return filename.split(Pattern.quote(File.separator)); + } - public HeatStructureTree getTree() { - return tree; - } + /** + * Gets tree. + * + * @return the tree + */ + public HeatStructureTree getTree() { + return tree; + } } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/HeatResourceUtilTest.java b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/HeatResourceUtilTest.java new file mode 100644 index 0000000000..93f8fc9f23 --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/HeatResourceUtilTest.java @@ -0,0 +1,89 @@ +/* + * + * Copyright © 2017-2018 European Support Limited + * + * 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. + * / + * + */ + +package org.openecomp.sdc.heat.services; + +import java.util.Optional; + +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes; + +public class HeatResourceUtilTest { + + private static final String ROLE = "role"; + + @Test + public void testEvaluateNetworkRoleFromResourceIdEmpty() { + Assert.assertFalse(HeatResourceUtil.evaluateNetworkRoleFromResourceId(null, null).isPresent()); + } + + @Test + public void testEvaluateNetworkRoleFromResourceIdNeutronExternal() { + Optional<String> networkRole = HeatResourceUtil.evaluateNetworkRoleFromResourceId( + "vm_type_1_role_port_1", HeatResourcesTypes.NEUTRON_PORT_RESOURCE_TYPE.getHeatResource()); + + Assert.assertTrue(networkRole.isPresent()); + Assert.assertEquals(networkRole.get(), ROLE); + } + + @Test + public void testEvaluateNetworkRoleFromResourceIdNeutronInternal() { + Optional<String> networkRole = HeatResourceUtil.evaluateNetworkRoleFromResourceId( + "vm_type_1_int_role_port_1", HeatResourcesTypes.NEUTRON_PORT_RESOURCE_TYPE.getHeatResource()); + + Assert.assertTrue(networkRole.isPresent()); + Assert.assertEquals(networkRole.get(), ROLE); + } + + @Test + public void testEvaluateNetworkRoleFromResourceIdVMIExternal() { + Optional<String> networkRole = HeatResourceUtil.evaluateNetworkRoleFromResourceId( + "vm_type_1_role_vmi_1", HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE + .getHeatResource()); + + Assert.assertTrue(networkRole.isPresent()); + Assert.assertEquals(networkRole.get(), ROLE); + } + + @Test + public void testEvaluateNetworkRoleFromResourceIdVMIInternal() { + Optional<String> networkRole = HeatResourceUtil.evaluateNetworkRoleFromResourceId( + "vm_type_1_int_role_vmi_1", HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE + .getHeatResource()); + + Assert.assertTrue(networkRole.isPresent()); + Assert.assertEquals(networkRole.get(), ROLE); + } + + @Test + public void testExtractNetworkRoleFromSubInterfaceIdEmpty() { + Assert.assertFalse(HeatResourceUtil.extractNetworkRoleFromSubInterfaceId(null, null).isPresent()); + } + + @Test + public void testExtractNetworkRoleFromSubInterfaceId() { + Optional<String> networkRole = HeatResourceUtil.extractNetworkRoleFromSubInterfaceId( + "vm_type_1_subint_role_vmi_1", HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE + .getHeatResource()); + + Assert.assertTrue(networkRole.isPresent()); + Assert.assertEquals(networkRole.get(), ROLE); + } +} diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/HeatStructureUtilTest.java b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/HeatStructureUtilTest.java new file mode 100644 index 0000000000..70f149be2c --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/HeatStructureUtilTest.java @@ -0,0 +1,146 @@ +/* + * + * Copyright © 2017-2018 European Support Limited + * + * 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. + * / + * + */ + +package org.openecomp.sdc.heat.services; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.openecomp.core.validation.types.GlobalValidationContext; +import org.openecomp.sdc.heat.datatypes.model.ResourceReferenceFunctions; + +public class HeatStructureUtilTest { + + @Mock + private GlobalValidationContext globalValidationContextMock; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + } + + @Test + public void testIsResourceNestedFalse() { + Assert.assertFalse(HeatStructureUtil.isNestedResource("Test.txt")); + } + + @Test + public void testIsResourceNestedNull() { + Assert.assertFalse(HeatStructureUtil.isNestedResource(null)); + } + + @Test + public void testIsResourceNestedTrue() { + Assert.assertTrue(HeatStructureUtil.isNestedResource("Test.yml")); + } + + @Test + public void testGetReferencedValuesByFunctionNameAddMessageCall() { + Map<String, Object> propertyMap = new HashMap<>(); + propertyMap.put(ResourceReferenceFunctions.GET_RESOURCE.getFunction(), Collections.emptyList()); + + Mockito.doNothing().when(globalValidationContextMock).addMessage(Mockito.anyString(), Mockito.any(), + Mockito.anyString()); + + Set<String> valueNames = HeatStructureUtil.getReferencedValuesByFunctionName("Main.yml", + ResourceReferenceFunctions.GET_RESOURCE.getFunction(), propertyMap, globalValidationContextMock); + + Mockito.verify(globalValidationContextMock, Mockito.times(1)) + .addMessage(Mockito.anyString(), Mockito.any(), Mockito.anyString()); + Assert.assertTrue(valueNames.isEmpty()); + } + + @Test + public void testGetReferencedValuesByFunctionNameGetFile() { + Map<String, Object> propertyMap = new HashMap<>(); + propertyMap.put(ResourceReferenceFunctions.GET_FILE.getFunction(), "file:///filename"); + + Set<String> valueNames = HeatStructureUtil.getReferencedValuesByFunctionName("Main.yml", + ResourceReferenceFunctions.GET_FILE.getFunction(), propertyMap, globalValidationContextMock); + + Assert.assertFalse(valueNames.isEmpty()); + Assert.assertTrue(valueNames.contains("filename")); + } + + @Test + public void testGetReferencedValuesByFunctionNameGetFileValueList() { + Map<String, Object> propertyMap = new HashMap<>(); + propertyMap + .put(ResourceReferenceFunctions.GET_FILE.getFunction(), Collections.singletonList("file:///filename")); + + Set<String> valueNames = HeatStructureUtil.getReferencedValuesByFunctionName("Main.yml", + ResourceReferenceFunctions.GET_FILE.getFunction(), propertyMap, globalValidationContextMock); + + Assert.assertFalse(valueNames.isEmpty()); + Assert.assertTrue(valueNames.contains("filename")); + } + + @Test + public void testGetReferencedValuesByFunctionNameGetFileValueListWithAnotherList() { + Map<String, Object> propertyMap = new HashMap<>(); + propertyMap.put(ResourceReferenceFunctions.GET_FILE.getFunction(), + Collections.singletonList(Collections.emptyList())); + + Set<String> valueNames = HeatStructureUtil.getReferencedValuesByFunctionName("Main.yml", + ResourceReferenceFunctions.GET_FILE.getFunction(), propertyMap, globalValidationContextMock); + + Assert.assertTrue(valueNames.isEmpty()); + } + + @Test + public void testGetReferencedValuesByFunctionNamePassingPropertyMapWithSet() { + Set<String> valueNames = HeatStructureUtil.getReferencedValuesByFunctionName("Main.yml", + ResourceReferenceFunctions.GET_FILE.getFunction(), Collections.singletonList(new HashSet<>()), + globalValidationContextMock); + + Assert.assertTrue(valueNames.isEmpty()); + } + + @Test + public void testGetReferencedValuesByFunctionNameGetFileValueListSet() { + Map<String, Object> propertyMap = new HashMap<>(); + propertyMap.put(ResourceReferenceFunctions.GET_FILE.getFunction(), + new HashSet<>()); + + Set<String> valueNames = HeatStructureUtil.getReferencedValuesByFunctionName("Main.yml", + ResourceReferenceFunctions.GET_FILE.getFunction(), propertyMap, globalValidationContextMock); + + Assert.assertTrue(valueNames.isEmpty()); + } + + @Test + public void testGetReferencedValuesByFunctionNameIncorrectKeyWithSet() { + Map<String, Object> propertyMap = new HashMap<>(); + propertyMap.put("test", new HashSet<>()); + + Set<String> valueNames = HeatStructureUtil.getReferencedValuesByFunctionName("Main.yml", + ResourceReferenceFunctions.GET_FILE.getFunction(), propertyMap, globalValidationContextMock); + + Assert.assertTrue(valueNames.isEmpty()); + } +} diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/manifest/ManifestUtilTest.java b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/manifest/ManifestUtilTest.java new file mode 100644 index 0000000000..13cf5c901e --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/manifest/ManifestUtilTest.java @@ -0,0 +1,109 @@ +/* + * + * Copyright © 2017-2018 European Support Limited + * + * 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. + * / + * + */ + +package org.openecomp.sdc.heat.services.manifest; + +import java.util.Collections; +import java.util.Map; +import java.util.Set; +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.sdc.heat.datatypes.manifest.FileData; +import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent; + +public class ManifestUtilTest { + + @Test + public void testGetFileAndItsEnvNull() { + Assert.assertTrue(ManifestUtil.getFileAndItsEnv(new ManifestContent()).isEmpty()); + } + + @Test + public void testGetFileAndItsEnv() { + + Assert.assertEquals(ManifestUtil.getFileAndItsEnv(createManifestContent()).size(), 1); + } + + @Test + public void testGetFileTypeMapDataNull() { + Assert.assertTrue(ManifestUtil.getFileTypeMap(new ManifestContent()).isEmpty()); + } + + @Test + public void testGetFileTypeMap() { + Map<String, FileData.Type> fileTypeMap = ManifestUtil.getFileTypeMap(createManifestContent()); + + Assert.assertEquals(fileTypeMap.size(), 2); + Assert.assertTrue(fileTypeMap.containsKey("Main.yml") && fileTypeMap.containsKey("Test.yml")); + } + + @Test + public void testGetFileTypeMapDataBlank() { + ManifestContent manifestContent = new ManifestContent(); + manifestContent.setData(Collections.emptyList()); + + Assert.assertTrue(ManifestUtil.getFileTypeMap(manifestContent).isEmpty()); + } + + @Test + public void testGetArtifactsDataNull() { + Assert.assertTrue(ManifestUtil.getArtifacts(new ManifestContent()).isEmpty()); + } + + @Test + public void testGetArtifacts() { + ManifestContent manifestContent = createManifestContent(); + manifestContent.getData().get(0).getData().get(0).setType(FileData.Type.OTHER); + + Set<String> typeSet = ManifestUtil.getArtifacts(manifestContent); + Assert.assertEquals(typeSet.size(), 1); + Assert.assertTrue(typeSet.contains("Test.yml")); + } + + @Test + public void testGetBaseFilesDataNull() { + Assert.assertTrue(ManifestUtil.getArtifacts(new ManifestContent()).isEmpty()); + } + + @Test + public void testGetBaseFiles() { + Set<String> typeSet = ManifestUtil.getBaseFiles(createManifestContent()); + Assert.assertEquals(typeSet.size(), 1); + Assert.assertTrue(typeSet.contains("Main.yml")); + } + + private ManifestContent createManifestContent() { + + FileData fileData1 = new FileData(); + fileData1.setFile("Test.yml"); + fileData1.setType(FileData.Type.HEAT_ENV); + + FileData fileData = new FileData(); + fileData.setFile("Main.yml"); + fileData.setType(FileData.Type.HEAT_ENV); + fileData.setBase(true); + + fileData.setData(Collections.singletonList(fileData1)); + + ManifestContent manifestContent = new ManifestContent(); + manifestContent.setData(Collections.singletonList(fileData)); + + return manifestContent; + } +} diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerTest.java b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerTest.java new file mode 100644 index 0000000000..e3e19792f5 --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerTest.java @@ -0,0 +1,65 @@ +/* + * + * Copyright © 2017-2018 European Support Limited + * + * 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. + * / + * + */ + +package org.openecomp.sdc.heat.services.tree; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.List; +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree; + +public class HeatTreeManagerTest { + + @Test + public void testCreateTree() throws IOException { + HeatTreeManager heatTreeManager = new HeatTreeManager(); + addFile(heatTreeManager, "mock/model/MANIFEST.json", SdcCommon.MANIFEST_NAME); + addFile(heatTreeManager, "mock/model/first.yaml", "first.yaml"); + addFile(heatTreeManager, "mock/model/second.yaml", "second.yaml"); + addFile(heatTreeManager, "mock/model/first.env", "first.env"); + addFile(heatTreeManager, "mock/model/base_cscf_volume.yaml", "base_cscf_volume.yaml"); + addFile(heatTreeManager, "mock/model/network.yml", "network.yml"); + addFile(heatTreeManager, "mock/model/testHeat.yml", "testHeat.yml"); + addFile(heatTreeManager, "mock/model/nested.yml", "nested.yml"); + addFile(heatTreeManager, "mock/model/base_cscf_volume.env", "base_cscf_volume.env"); + + heatTreeManager.createTree(); + + HeatStructureTree heatStructureTree = heatTreeManager.getTree(); + Assert.assertNotNull(heatStructureTree); + Assert.assertEquals(1, heatStructureTree.getHeat().size()); + Assert.assertEquals(1, heatStructureTree.getNetwork().size()); + } + + private void addFile(HeatTreeManager heatTreeManager, String fileLocation, String fileName) + throws IOException { + + List<URL> urlList = FileUtils.getAllLocations(fileLocation); + try (InputStream inputStream = new FileInputStream(new File(urlList.get(0).getPath()))) { + heatTreeManager.addFile(fileName, inputStream); + } + } +} diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerUtilTest.java b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerUtilTest.java new file mode 100644 index 0000000000..6e34350d19 --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerUtilTest.java @@ -0,0 +1,230 @@ +/* + * + * Copyright © 2017-2018 European Support Limited + * + * 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. + * / + * + */ + +package org.openecomp.sdc.heat.services.tree; + +import java.io.File; +import java.net.URL; +import java.util.AbstractMap; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.validation.types.GlobalValidationContext; +import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate; +import org.openecomp.sdc.heat.datatypes.model.Resource; + +public class HeatTreeManagerUtilTest { + + private static final String TEST_YML = "test.yml"; + private static final String TEST = "test"; + private static final String RESOURCE_DEF = "resource_def"; + + @Mock + private HeatTreeManager heatTreeManager; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + } + + @Test + public void testInitHeatTreeManager() { + FileContentHandler fileContentHandler = getFileContentHandler(); + + Mockito.doNothing().when(heatTreeManager).addFile(Mockito.any(), Mockito.any()); + HeatTreeManagerUtil.initHeatTreeManager(fileContentHandler); + Mockito.verify(heatTreeManager, Mockito.times(0)).addFile(Mockito.any(), Mockito.any()); + } + + @Test + public void testGetNestedFiles() { + HeatOrchestrationTemplate heatOrchestrationTemplate = new HeatOrchestrationTemplate(); + heatOrchestrationTemplate.setResources(getResourceMap("Type1.yml")); + Set<String> nestedFilesSet = HeatTreeManagerUtil.getNestedFiles(heatOrchestrationTemplate); + + Assert.assertNotNull(nestedFilesSet); + Assert.assertEquals(nestedFilesSet.size(), 1); + } + + @Test + public void testGetResourceDefNested() { + HeatOrchestrationTemplate heatOrchestrationTemplate = new HeatOrchestrationTemplate(); + heatOrchestrationTemplate.setResources(getResourceMap("OS::Heat::ResourceGroup")); + + Set<String> nestedFilesSet = HeatTreeManagerUtil.getNestedFiles(heatOrchestrationTemplate); + Assert.assertNotNull(nestedFilesSet); + Assert.assertTrue(nestedFilesSet.size() == 1 && nestedFilesSet.contains(TEST_YML)); + } + + @Test + public void testGetArtifactFiles() { + HeatOrchestrationTemplate heatOrchestrationTemplate = new HeatOrchestrationTemplate(); + heatOrchestrationTemplate.setResources(getResourceMap("Type1.yml")); + Set<String> nestedFilesSet = HeatTreeManagerUtil.getArtifactFiles("filename.yml", heatOrchestrationTemplate, + null); + + Assert.assertNotNull(nestedFilesSet); + Assert.assertTrue(nestedFilesSet.contains(TEST)); + } + + @Test + public void testGetResourceDefIfProvidedResourceIsNull() { + Assert.assertNull(HeatTreeManagerUtil.getResourceDef(new Resource())); + } + + @Test + public void testGetResourceDef() { + Resource resource = new Resource(); + + Map<String, Object> resourceMap = new HashMap<>(); + Map<String, String> nestedResourceMap = new HashMap<String, String>() {{ + put("type", TEST_YML); + }}; + + resourceMap.put(RESOURCE_DEF, nestedResourceMap); + resource.setProperties(resourceMap); + Resource resultResource = HeatTreeManagerUtil.getResourceDef(resource); + Assert.assertNotNull(resultResource); + Assert.assertEquals(TEST_YML, resultResource.getType()); + } + + @Test + public void testCheckResourceGroupTypeValid() { + Resource resource = new Resource(); + + Map<String, Object> resourceMap = new HashMap<>(); + Map<String, Object> nestedResourceMap = new HashMap<String, Object>() {{ + put("type", Collections.emptyList()); + }}; + + resourceMap.put(RESOURCE_DEF, nestedResourceMap); + resource.setProperties(resourceMap); + + GlobalValidationContext globalValidationContextMock = Mockito.mock(GlobalValidationContext.class); + Mockito.doNothing().when(globalValidationContextMock).addMessage(Mockito.anyString(), Mockito.any(), Mockito + .anyString()); + + HeatTreeManagerUtil.checkResourceGroupTypeValid(TEST_YML, TEST, resource, globalValidationContextMock); + + Mockito.verify(globalValidationContextMock, Mockito.times(1)) + .addMessage(Mockito.anyString(), Mockito.any(), Mockito.anyString()); + } + + @Test + public void testCheckResourceTypeValid() { + Resource resource = new Resource(); + + Map<String, Object> resourceMap = new HashMap<>(); + Map<String, Object> nestedResourceMap = new HashMap<String, Object>() {{ + put("properties", Collections.emptyList()); + }}; + + resourceMap.put(RESOURCE_DEF, nestedResourceMap); + resource.setProperties(resourceMap); + + GlobalValidationContext globalValidationContextMock = Mockito.mock(GlobalValidationContext.class); + Mockito.doNothing().when(globalValidationContextMock).addMessage(Mockito.anyString(), Mockito.any(), Mockito + .anyString()); + + HeatTreeManagerUtil.checkResourceTypeValid(TEST_YML, TEST, resource, globalValidationContextMock); + + Mockito.verify(globalValidationContextMock, Mockito.times(1)) + .addMessage(Mockito.anyString(), Mockito.any(), Mockito.anyString()); + } + + @Test + public void testCheckIfResourceGroupTypeIsNested() { + Resource resource = new Resource(); + + Map<String, Object> resourceMap = new HashMap<>(); + Map<String, Object> nestedResourceMap = new HashMap<String, Object>() {{ + put("type", TEST_YML); + }}; + + resourceMap.put(RESOURCE_DEF, nestedResourceMap); + resource.setProperties(resourceMap); + + GlobalValidationContext globalValidationContextMock = Mockito.mock(GlobalValidationContext.class); + Mockito.doNothing().when(globalValidationContextMock).addMessage(Mockito.anyString(), Mockito.any(), Mockito + .anyString()); + + boolean result = HeatTreeManagerUtil + .checkIfResourceGroupTypeIsNested(TEST_YML, TEST, resource, globalValidationContextMock); + + Mockito.verify(globalValidationContextMock, Mockito.times(1)) + .addMessage(Mockito.anyString(), Mockito.any(), Mockito.anyString()); + + Assert.assertTrue(result); + } + + @Test + public void testCheckIfResourceGroupTypeIsNestedNull() { + Assert.assertFalse(HeatTreeManagerUtil.checkIfResourceGroupTypeIsNested(TEST_YML, TEST, new Resource(), + null)); + } + + private FileContentHandler getFileContentHandler() { + FileContentHandler fileContentHandler = new FileContentHandler(); + Map<String, byte[]> filesByteMap = new HashMap<>(); + List<URL> urlList = FileUtils.getAllLocations("mock/model"); + File files = new File(urlList.get(0).getPath()); + if (files.isDirectory()) { + int fileCount = 0; + for (File file : Objects.requireNonNull(files.listFiles())) { + byte[] bytesArray = new byte[(int) file.length()]; + filesByteMap.put("File" + ++fileCount, bytesArray); + } + } + + fileContentHandler.setFiles(filesByteMap); + + return fileContentHandler; + } + + private Map<String, Resource> getResourceMap(String type) { + Resource resource = new Resource(); + resource.setType(type); + Map<String, String> map = new HashMap<>(); + map.put("get_file", TEST); + resource.setProperties(new HashMap<String, Object>() {{ + put("get_file", Collections.singletonList(map)); + put("resource_def", new HashMap<String, Object>() {{ + put("type", TEST_YML); + }}); + }}); + + + return Stream.of(new AbstractMap.SimpleEntry<>("Res1", resource)) + .collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue)); + } +} diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManagerTest.java b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManagerTest.java index 0cfac52318..4ccf7ea623 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManagerTest.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/ToscaTreeManagerTest.java @@ -1,86 +1,103 @@ +/* + * Copyright © 2017-2018 European Support Limited + * + * 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. + **/ + package org.openecomp.sdc.heat.services.tree; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.regex.Pattern; + import org.junit.Assert; import org.junit.Test; import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.core.utilities.json.JsonUtil; import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.regex.Pattern; - public class ToscaTreeManagerTest { - private static final String BASE_DIR = "/mock/toscaTree/"; - private static final String IN = "in"; - private static final String OUT = "out"; - private static final String EXPECTED_TREE_FILE = "/expectedTree.json"; - private ToscaTreeManager toscaTreeManager = new ToscaTreeManager(); - - @Test - public void testTreeWithDiffFileNames() throws IOException { - String inputDirectory = BASE_DIR + "diffFileNames/" + IN; - String outputFileName = BASE_DIR + "diffFileNames/" + OUT + EXPECTED_TREE_FILE; - - testTreeManager(inputDirectory, outputFileName); - } - - @Test - public void testDirectoriesWithSimilarNameUnderDifferentRoots() throws IOException { - String inputDirectory = BASE_DIR + "similarDirectoryName/" + IN; - String outputFileName = BASE_DIR + "similarDirectoryName/" + OUT + EXPECTED_TREE_FILE; - - testTreeManager(inputDirectory, outputFileName); - } - - @Test - public void testTwoFilesUnderSameDirectory() throws IOException { - String inputDirectory = BASE_DIR + "twoFilesUnderSameDirectory/" + IN; - String outputFileName = BASE_DIR + "twoFilesUnderSameDirectory/" + OUT + EXPECTED_TREE_FILE; - - testTreeManager(inputDirectory, outputFileName); - } - - private void testTreeManager(String inputDirectory, String outputFileName) throws IOException { - initTreeManager(inputDirectory); - toscaTreeManager.createTree(); - HeatStructureTree tree = toscaTreeManager.getTree(); - - validateToscaTree(outputFileName, tree); - } - - private void validateToscaTree(String outputFileName, HeatStructureTree tree) throws IOException { - String actualTree = JsonUtil.object2Json(tree); - File expectedTreeFile = new File(this.getClass().getResource(outputFileName).getFile()); - - String expectedTree; - try(FileInputStream fis = new FileInputStream(expectedTreeFile)) { - expectedTree = new String(FileUtils.toByteArray(fis)); + + private static final String BASE_DIR = "/mock/toscaTree/"; + private static final String IN = "in"; + private static final String OUT = "out"; + private static final String EXPECTED_TREE_FILE = "/expectedTree.json"; + private ToscaTreeManager toscaTreeManager = new ToscaTreeManager(); + + @Test + public void testTreeWithDiffFileNames() throws IOException { + String inputDirectory = BASE_DIR + "diffFileNames/" + IN; + String outputFileName = BASE_DIR + "diffFileNames/" + OUT + EXPECTED_TREE_FILE; + + testTreeManager(inputDirectory, outputFileName); + } + + @Test + public void testDirectoriesWithSimilarNameUnderDifferentRoots() throws IOException { + String inputDirectory = BASE_DIR + "similarDirectoryName/" + IN; + String outputFileName = BASE_DIR + "similarDirectoryName/" + OUT + EXPECTED_TREE_FILE; + + testTreeManager(inputDirectory, outputFileName); + } + + @Test + public void testTwoFilesUnderSameDirectory() throws IOException { + String inputDirectory = BASE_DIR + "twoFilesUnderSameDirectory/" + IN; + String outputFileName = BASE_DIR + "twoFilesUnderSameDirectory/" + OUT + EXPECTED_TREE_FILE; + + testTreeManager(inputDirectory, outputFileName); } - Assert.assertNotNull(expectedTree); - expectedTree = expectedTree.trim().replace("\r", ""); - Assert.assertEquals(expectedTree, actualTree); - } - - private void initTreeManager(String inputDir) throws IOException { - String fileName = inputDir.replace("/", File.separator); - File directory = new File(this.getClass().getResource(inputDir).getFile()); - - addFilesToTreeManager(fileName, directory.listFiles()); - } - - private void addFilesToTreeManager(String baseDir, File[] listFiles) throws IOException { - for (File file : listFiles) { - if (file.isDirectory()) { - addFilesToTreeManager(baseDir, file.listFiles()); - } else { - toscaTreeManager.addFile(getFileNameWithoutTestDirectory(baseDir, file.getPath()), new byte[2]); - } + + private void testTreeManager(String inputDirectory, String outputFileName) throws IOException { + initTreeManager(inputDirectory); + toscaTreeManager.createTree(); + HeatStructureTree tree = toscaTreeManager.getTree(); + + validateToscaTree(outputFileName, tree); } - } - private String getFileNameWithoutTestDirectory(String baseDir, String fileName) { - return fileName.split(Pattern.quote(baseDir) + Pattern.quote(File.separator))[1]; - } + private void validateToscaTree(String outputFileName, HeatStructureTree tree) throws IOException { + File expectedTreeFile = new File(this.getClass().getResource(outputFileName).getFile()); + + String expectedTree; + try (FileInputStream fis = new FileInputStream(expectedTreeFile)) { + expectedTree = new String(FileUtils.toByteArray(fis)); + } + Assert.assertNotNull(expectedTree); + expectedTree = expectedTree.trim().replace("\r", ""); + String actualTree = JsonUtil.object2Json(tree); + Assert.assertEquals(expectedTree, actualTree); + } + + private void initTreeManager(String inputDir) { + String fileName = inputDir.replace("/", File.separator); + File directory = new File(this.getClass().getResource(inputDir).getFile()); + + addFilesToTreeManager(fileName, directory.listFiles()); + } + + private void addFilesToTreeManager(String baseDir, File[] listFiles) { + for (File file : listFiles) { + if (file.isDirectory()) { + addFilesToTreeManager(baseDir, file.listFiles()); + } else { + toscaTreeManager.addFile(getFileNameWithoutTestDirectory(baseDir, file.getPath()), new byte[2]); + } + } + } + + private String getFileNameWithoutTestDirectory(String baseDir, String fileName) { + return fileName.split(Pattern.quote(baseDir) + Pattern.quote(File.separator))[1]; + } }
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/MANIFEST.json b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/MANIFEST.json new file mode 100644 index 0000000000..fefb79cf5b --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/MANIFEST.json @@ -0,0 +1,48 @@ +{ + "name": "validTest", + "description": "Valid Test", + "version": "1610", + "data": [ + { + "file": "first.yaml", + "type": "HEAT", + "isBase": true, + "data": [ + { + "file": "first.env", + "type": "HEAT_ENV" + }, + { + "file": "base_cscf_volume.yaml", + "type": "HEAT_VOL", + "data": [ + { + "file": "base_cscf_volume.env", + "type": "HEAT_ENV" + } + ] + } + ] + }, + { + "file": "nested.yml", + "type": "HEAT", + "isBase": false + }, + { + "file": "network.yml", + "type": "HEAT_NET" + }, + { + "file": "testHeat.yml", + "type": "OTHER" + }, + { + "file": "testHeat.yml", + "type": "VF_LICENSE" + }, + { + "file": "envSettings.env" + } + ] +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/base_cscf_volume.env b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/base_cscf_volume.env new file mode 100644 index 0000000000..9f0eef670c --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/base_cscf_volume.env @@ -0,0 +1,9 @@ +## Name: "base_cscf_volume.env" +## Date: 20 Mar 2017 +## Kilo Version +parameters: +# PSEUDO CONSTANTS +# ----------------------------------------------------------------------------- + cif_volume_size_0: 300 + oam_volume_size_0: 300 + vcscf_name_delimeter: "_"
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/base_cscf_volume.yaml b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/base_cscf_volume.yaml new file mode 100644 index 0000000000..145f82e9ec --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/base_cscf_volume.yaml @@ -0,0 +1,103 @@ +## Name: "base_cscf_volume.yaml" +## Date: 20 Mar 2017 +## Kilo Version +heat_template_version: 2015-04-30 + +description: Volume template for CFX + +parameters: + vnf_name: + type: string + description: Unique name for this VF instance + + vcscf_name_delimeter: + type: string + description: 'delimeter used in concatenating different words while naming (ex: "-","_",".",...)' + constraints: + - allowed_values: [ '-', '', '_', '.'] + + availability_zone_0: + type: string + description: Storage availability zone for volume of first vm + + availability_zone_1: + type: string + description: Storage availability zone for volume of second vm + + cif_volume_size_0: + type: number + description: Size of Volume for cif VMs + constraints: + - range: { min: 1, max: 300 } + + oam_volume_size_0: + type: number + description: Size of Volume for oam VMs + constraints: + - range: { min: 1, max: 300 } + +resources: + cif_volume_0: + type: OS::Cinder::Volume + properties: + size: { get_param: cif_volume_size_0 } + availability_zone: { get_param: availability_zone_0} + name: + str_replace: + template: "$VNF$DELcif$DELvolume$DEL0" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + + cif_volume_1: + type: OS::Cinder::Volume + properties: + availability_zone: { get_param: availability_zone_1} + size: { get_param: cif_volume_size_0 } + name: + str_replace: + template: "$VNF$DELcif$DELvolume$DEL1" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + + oam_volume_0: + type: OS::Cinder::Volume + properties: + size: { get_param: oam_volume_size_0 } + availability_zone: { get_param: availability_zone_0} + name: + str_replace: + template: "$VNF$DELoam$DELvolume$DEL0" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + + oam_volume_1: + type: OS::Cinder::Volume + properties: + size: { get_param: oam_volume_size_0 } + availability_zone: { get_param: availability_zone_1} + name: + str_replace: + template: "$VNF$DELoam$DELvolume$DEL1" + params: + $VNF: { get_param: vnf_name } + $DEL: { get_param: vcscf_name_delimeter } + +outputs: + cif_volume_id_0: + description: volume id for first cif + value: {get_resource: cif_volume_0} + + cif_volume_id_1: + description: volume id for second cif + value: {get_resource: cif_volume_1} + + oam_volume_id_0: + description: volume id for first oam + value: {get_resource: oam_volume_0} + + oam_volume_id_1: + description: volume id for second oam + value: {get_resource: oam_volume_1} diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/first.env b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/first.env new file mode 100644 index 0000000000..90bdb18e56 --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/first.env @@ -0,0 +1,2 @@ +parameters: +network_ids: Internal2_net_id
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/first.yaml b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/first.yaml new file mode 100644 index 0000000000..02234e9222 --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/first.yaml @@ -0,0 +1,71 @@ +heat_template_version: 2013-05-23 +description: heat expose volume resource + +parameters: + network_ids: + type: string + label: FBS2 label + description: FBS2 internal id2 + +resources: + vm_config: + type: OS::Heat::SoftwareConfig + properties: + group: ungrouped + config: + str_replace: + template: {get_file: envSettings.env} + + cmaui_port_2: + type: OS::Neutron::Port + properties: + network: { get_resource: test_net1 } + fixed_ips: [{"ip_address": {get_param: [cmaui_oam_ips, 0]}}] + security_groups: [{get_param: security_group_name}] + replacement_policy: AUTO + + test_net1: + type: OS::Neutron::Net + properties: + name: {get_param: jsa_net_name} + shared: True + + FSB2_Internal1: + type: OS::Neutron::Port + properties: + network_id: Internal1_net_id + FSB2_Internal2: + type: OS::Neutron::Port + properties: + network_id: { get_param: [network_ids, 0] } + FSB2_OAM: + type: OS::Neutron::Port + properties: + network_id: { get_param: Internal1_net_name } + FSB2: + type: OS::Nova::Server + properties: + name: fsb2_name_2 + block_device_mapping: [{device_name: "vda", volume_id : {get_param: cif_volume_id_0 }, delete_on_termination: "false" }] + flavor: fsb2_flavor_name + availability_zone: availability_zone_0 + metadata: + VNF_id: { get_param: vnfvfVF_id } + vf_module_id: { get_param: vf_module_id } + networks: + - port: { get_resource: FSB2_Internal1 } + - port: { get_resource: FSB2_Internal2 } + - port: { get_resource: FSB2_OAM } + + test_nested: + type: nested.yml + properties: + p2: { get_resource: cmaui_port_2} + net1: { get_resource: test_net1} + +outputs: + expose_resource_nove_output: + description: the pcrf_server + value: { get_resource: FSB2 } + + diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/nested.yml b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/nested.yml new file mode 100644 index 0000000000..e68541e3ae --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/nested.yml @@ -0,0 +1,76 @@ +heat_template_version: 2013-05-23 + +description: cmaui server template for vMMSC + +parameters: + p1: + type: number + p2: + type: string + net1: + type: string + net2: + type: string + lb_st_vlan_type_oam: + description: dummy + type: string + mac_address: + type: string + virtual_ip_address: + type: string + virtual_ipv6_address: + type: string + vlan_ids: + type: string + subinterface_name_prefix: + type: string + subinterface_instance_index: + type: number +resources: + + + vdbe_0_subint_untr_vmi_0: + type: OS::ContrailV2::VirtualMachineInterface + properties: + name: + str_replace: + template: $NAME$VLAN + params: + $NAME: { get_param: subinterface_name_prefix } + $VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] } + virtual_machine_interface_properties: + { + virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: lb_st_vlan_type_oam } + } + virtual_machine_interface_mac_addresses: + { + virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }], + } + virtual_machine_interface_allowed_address_pairs: + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [ + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address }, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address }, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32 + } + }, + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address }, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address }, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128 + } + } + ] + } + virtual_network_refs: [{ get_param: net2 },{ get_param: net1 }] + virtual_machine_interface_refs: [{ get_param: p2 }] + + + diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/network.yml b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/network.yml new file mode 100644 index 0000000000..f069d4dd23 --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/network.yml @@ -0,0 +1,733 @@ +heat_template_version: 2013-05-23 + +description: heat template that creates MOG stack + +parameters: + pd_server_names: + type: comma_delimited_list + label: PD server names + description: name of the PD instance + pd_image_name: + type: string + label: image name + description: PD image name + pd_flavor_name: + type: string + label: PD flavor name + description: flavor name of PD instance + oam_server_names: + type: comma_delimited_list + label: OAM server names + description: name of the OAM instance + oam_image_name: + type: string + label: image name + description: OAM image name + oam_flavor_name: + type: string + label: OAM flavor name + description: flavor name of OAM instance + sm_server_names: + type: comma_delimited_list + label: SM server names + description: name of the SM instance + sm_image_name: + type: string + label: image name + description: SM image name + sm_flavor_name: + type: string + label: SM flavor name + description: flavor name of SM instance + ps_server_names: + type: comma_delimited_list + label: PS server names + description: name of the PS instance + ps_image_name: + type: string + label: PS image name + description: PS image name + ps_flavor_name: + type: string + label: PS flavor name + description: flavor name of PS instance + cm_server_names: + type: comma_delimited_list + label: CM server names + description: name of the CM instance + cm_image_name: + type: string + label: image name + description: CM image name + cm_flavor_name: + type: string + label: CM flavor name + description: flavor name of CM instance + availabilityzone_name: + type: string + label: availabilityzone name + description: availabilityzone name + oam_net_name: + type: string + label: oam network name + description: name of the oam network + oam_net_ips: + type: comma_delimited_list + label: internet network ips + description: ip of the OAM network + # internet_net_name: + # type: string + # label: internet network name + # description: id of the internet network + # internet_net_ips: + # type: comma_delimited_list + # label: internet network ips + # description: ip of the internet network + # internet_net_floating_ip: + # type: string + # label: mog internet virtual ip + # description: mog internet virtual ip + sl_net_name: + type: string + label: silver lining network name + description: id of the sl network + sl_net_ips: + type: comma_delimited_list + label: silver lining network ips + description: ips of the sl network + sl_net_floating_ip: + type: string + label: mog sl net virtual ip + description: mog sl net virtual ip + repl_net_name: + type: string + label: Replication network name + description: name of the replication network + repl_net_ips: + type: comma_delimited_list + label: repl network ips + description: ips of repl network + rx_net_name: + type: string + label: Rx network name + description: Rx network name + rx_net_ips: + type: comma_delimited_list + label: Rx network ips + description: Rx network ips + rx_net_floating_ip: + type: string + label: mog rx net virtual ip + description: mog rx net virtual ip + ran_net_name: + type: string + label: RAN network name + description: RAN network name + ran_net_ips: + type: comma_delimited_list + label: RAN network ips + description: RAN network ip + ran_net_floating_ip: + type: string + label: mog ran net virtual ip + description: mog ran net virtual ip + csb_net_name: + type: string + label: csb internal network name + description: csb internal network name + csb_net_start: + type: string + label: csb internal start + description: csb internal start + csb_net_end: + type: string + label: csb internal end + description: csb internal end + csb_net_cidr: + type: string + label: csb ineternal cidr + description: csb internal cidr + csb_net_netmask: + type: string + description: CSB internal network subnet mask + csb_net_ips: + type: comma_delimited_list + description: mog_csb_net IP addresses + dummy_net_name_0: + type: string + label: csb internal network name + description: csb internal network name + dummy_net_start_0: + type: string + label: csb internal start + description: csb internal start + dummy_net_end_0: + type: string + label: csb internal end + description: csb internal end + dummy_net_cidr_0: + type: string + label: csb ineternal cidr + description: csb internal cidr + dummy_net_netmask_0: + type: string + description: CSB internal network subnet mask + dummy_net_name_1: + type: string + label: csb internal network name + description: csb internal network name + dummy_net_start_1: + type: string + label: csb internal start + description: csb internal start + dummy_net_end_1: + type: string + label: csb internal end + description: csb internal end + dummy_net_cidr_1: + type: string + label: csb ineternal cidr + description: csb internal cidr + dummy_net_netmask_1: + type: string + description: CSB internal network subnet mask + + security_group_name: + type: string + label: security group name + description: the name of security group + cluster-manager-vol-1: + type: string + label: mog-cm-vol-1 + description: Cluster Manager volume 1 + session-manager-vol-1: + type: string + label: mog-sm-vol-1 + description: Session Manager volume 1 + session-manager-vol-2: + type: string + label: mog-sm-vol-2 + description: Session Manager volume 2 + oam-vol-1: + type: string + label: mog-oam-vol-1 + description: OAM volume 1 + oam-vol-2: + type: string + label: mog-oam-vol-2 + description: OAM volume 2 + mog_swift_container: + type: string + label: mog Config URL + description: Config URL + mog_script_dir: + type: string + label: mog Config script directory + description: Config script directory + mog_script_name: + type: string + label: mog Config script name + description: Config script name + mog_parameter_name: + type: string + label: mog script parameter name + description: Config script parameter csv file name + cluster-manager-vol-2: + type: string + label: mog-cm-vol-2 + description: Cluster Manager volume 2 with ISO image + +resources: + mog_security_group: + type: OS::Neutron::SecurityGroup + properties: + description: mog security group + name: {get_param: security_group_name} + rules: [{"direction": egress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": 0.0.0.0/0}, + {"direction": egress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": 0.0.0.0/0}, + {"direction": egress, "ethertype": IPv4, "protocol": icmp, "remote_ip_prefix": 0.0.0.0/0}, + {"direction": ingress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": 0.0.0.0/0}, + {"direction": ingress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": 0.0.0.0/0}, + {"direction": ingress, "ethertype": IPv4, "protocol": icmp, "remote_ip_prefix": 0.0.0.0/0} + ] + + csb_net: + type: OS::Contrail::VirtualNetwork + properties: + name: { get_param: csb_net_name} + + csb_ip_subnet: + type: OS::Neutron::Subnet + properties: + name: {get_param: csb_net_name} + network_id: { get_resource: csb_net } + cidr: { get_param: csb_net_cidr } + allocation_pools: [{"start": {get_param: csb_net_start}, "end": {get_param: csb_net_end}}] + enable_dhcp: true + + dummy_net_0: + type: OS::Contrail::VirtualNetwork + properties: + name: { get_param: dummy_net_name_0} + + dummy_ip_subnet_0: + type: OS::Neutron::Subnet + properties: + name: {get_param: dummy_net_name_0} + network_id: { get_resource: dummy_net_0 } + cidr: { get_param: dummy_net_cidr_0 } + allocation_pools: [{"start": {get_param: dummy_net_start_0}, "end": {get_param: dummy_net_end_0}}] + enable_dhcp: true + + dummy_net_1: + type: OS::Contrail::VirtualNetwork + properties: + name: { get_param: dummy_net_name_1} + + dummy_ip_subnet_1: + type: OS::Neutron::Subnet + properties: + name: {get_param: dummy_net_name_1} + network_id: { get_resource: dummy_net_1 } + cidr: { get_param: dummy_net_cidr_1 } + allocation_pools: [{"start": {get_param: dummy_net_start_1}, "end": {get_param: dummy_net_end_1}}] + enable_dhcp: true + + + mogconfig: + type: OS::Heat::SoftwareConfig + properties: + group: ungrouped + config: + str_replace: + template: | + #!/bin/bash + wget -P script_dir swift_container/script_name + wget -P script_dir swift_container/parameter_name + chmod 755 script_dir/script_name + script_dir/script_name + params: + swift_container: {get_param: mog_swift_container} + script_dir: {get_param: mog_script_dir} + script_name: {get_param: mog_script_name} + #parameter_name: {get_param: mog_parameter_name} + + + servergroup_mog01: + type: OS::Nova::ServerGroup + properties: + policies: + - anti-affinity + server_pd_01: + type: OS::Nova::Server + properties: +# config_drive: "True" + name: {get_param: [pd_server_names, 0]} + image: {get_param: pd_image_name} + flavor: {get_param: pd_flavor_name} + availability_zone: {get_param: availabilityzone_name} + networks: + - port: {get_resource: pd01_port_0} + - port: {get_resource: pd01_port_1} + - port: {get_resource: pd01_port_2} + - port: {get_resource: pd01_port_3} + - port: {get_resource: pd01_port_4} + - port: {get_resource: pd01_port_5} + - port: {get_resource: pd01_port_6} + # - port: {get_resource: pd01_port_7} + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog01}} + user_data_format: RAW + + + pd01_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + security_groups: [{get_resource: mog_security_group}] + pd01_port_1: + type: OS::Neutron::Port + properties: + network: {get_param: oam_net_name} + fixed_ips: [{"ip_address": {get_param: [oam_net_ips, 0]}}] + security_groups: [{get_resource: mog_security_group}] + pd01_port_2: + type: OS::Neutron::Port + properties: + network: {get_resource: dummy_net_0} + security_groups: [{get_resource: mog_security_group}] + pd01_port_3: + type: OS::Neutron::Port + properties: + network: {get_param: rx_net_name} + fixed_ips: [{"ip_address": {get_param: [rx_net_ips, 0]}}] + allowed_address_pairs: [{"ip_address": {get_param: rx_net_floating_ip} }] + security_groups: [{get_resource: mog_security_group}] + pd01_port_4: + type: OS::Neutron::Port + properties: + network: {get_resource: dummy_net_1} + security_groups: [{get_resource: mog_security_group}] + pd01_port_5: + type: OS::Neutron::Port + properties: + network: {get_param: ran_net_name} + fixed_ips: [{"ip_address": {get_param: [ran_net_ips, 0]}}] + allowed_address_pairs: [{"ip_address": {get_param: ran_net_floating_ip} }] + security_groups: [{get_resource: mog_security_group}] + + pd01_port_6: + type: OS::Neutron::Port + properties: + network: {get_param: sl_net_name} + fixed_ips: [{"ip_address": {get_param: [sl_net_ips, 0]}}] + allowed_address_pairs: [{"ip_address": {get_param: sl_net_floating_ip}}] + security_groups: [{get_resource: mog_security_group}] + + # pd01_port_7: + #j type: OS::Neutron::Port + # properties: + # network: {get_param: internet_net_name} + # fixed_ips: [{"ip_address": {get_param: [internet_net_ips, 0]}}] + # allowed_address_pairs: [{"ip_address": {get_param: internet_net_floating_ip} }] + # security_groups: [{get_resource: mog_security_group}] + + server_pd_02: + type: OS::Nova::Server + properties: +# config_drive: "True" + name: {get_param: [pd_server_names, 1]} + image: {get_param: pd_image_name} + flavor: {get_param: pd_flavor_name} + availability_zone: {get_param: availabilityzone_name} + networks: + - port: {get_resource: pd02_port_0} + - port: {get_resource: pd02_port_1} + - port: {get_resource: pd01_port_2} + - port: {get_resource: pd01_port_3} + - port: {get_resource: pd02_port_4} + - port: {get_resource: pd02_port_5} + - port: {get_resource: pd02_port_6} + # - port: {get_resource: pd02_port_7} + + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog01}} + user_data_format: RAW + + pd02_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + security_groups: [{get_resource: mog_security_group}] + + pd02_port_1: + type: OS::Neutron::Port + properties: + network: {get_param: oam_net_name} + fixed_ips: [{"ip_address": {get_param: [oam_net_ips, 1]}}] + security_groups: [{get_resource: mog_security_group}] + + pd02_port_2: + type: OS::Neutron::Port + properties: + network: {get_resource: dummy_net_0} + security_groups: [{get_resource: mog_security_group}] + + pd02_port_3: + type: OS::Neutron::Port + properties: + network: {get_param: rx_net_name} + fixed_ips: [{"ip_address": {get_param: [rx_net_ips, 1]}}] + allowed_address_pairs: [{"ip_address": {get_param: rx_net_floating_ip} }] + security_groups: [{get_resource: mog_security_group}] + + pd02_port_4: + type: OS::Neutron::Port + properties: + network: {get_resource: dummy_net_1} + security_groups: [{get_resource: mog_security_group}] + + pd02_port_5: + type: OS::Neutron::Port + properties: + network: {get_param: ran_net_name} + fixed_ips: [{"ip_address": {get_param: [ran_net_ips, 1]}}] + allowed_address_pairs: [{"ip_address": {get_param: ran_net_floating_ip} }] + security_groups: [{get_resource: mog_security_group}] + + pd02_port_6: + type: OS::Neutron::Port + properties: + network: {get_param: sl_net_name} + fixed_ips: [{"ip_address": {get_param: [sl_net_ips, 1]}}] + allowed_address_pairs: [{"ip_address": {get_param: sl_net_floating_ip}}] + security_groups: [{get_resource: mog_security_group}] + + # pd02_port_7: + # type: OS::Neutron::Port + # properties: + # network: {get_param: internet_net_name} + # fixed_ips: [{"ip_address": {get_param: [internet_net_ips, 1]}}] + # allowed_address_pairs: [{"ip_address": {get_param: internet_net_floating_ip} }] + # security_groups: [{get_resource: mog_security_group}] + + servergroup_mog02: + type: OS::Nova::ServerGroup + properties: + policies: + - anti-affinity + server_oam01: + type: OS::Nova::Server + properties: +# config_drive: "True" + name: {get_param: [oam_server_names, 0]} + image: {get_param: oam_image_name} + flavor: {get_param: oam_flavor_name} + availability_zone: {get_param: availabilityzone_name} + networks: + - port: {get_resource: oam01_port_0} + - port: {get_resource: oam01_port_1} +# block_device_mapping: +# - device_name: vdd +# volume_id: { get_param: oam-vol-1 } + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog02}} + user_data_format: RAW + + oam01_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + security_groups: [{get_resource: mog_security_group}] + + oam01_port_1: + type: OS::Neutron::Port + properties: + network: {get_param: oam_net_name} + fixed_ips: [{"ip_address": {get_param: [oam_net_ips, 2]}}] + security_groups: [{get_resource: mog_security_group}] + + + server_oam02: + type: OS::Nova::Server + properties: +# config_drive: "True" + name: {get_param: [oam_server_names, 1]} + image: {get_param: oam_image_name} + flavor: {get_param: oam_flavor_name} + availability_zone: {get_param: availabilityzone_name} + networks: + - port: {get_resource: oam02_port_0} + - port: {get_resource: oam02_port_1} +# block_device_mapping: +# - device_name: vdd +# volume_id: { get_param: oam-vol-2 } + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog02}} + user_data_format: RAW + + oam02_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + security_groups: [{get_resource: mog_security_group}] + + oam02_port_1: + type: OS::Neutron::Port + properties: + network: {get_param: oam_net_name} + fixed_ips: [{"ip_address": {get_param: [oam_net_ips, 3]}}] + security_groups: [{get_resource: mog_security_group}] + + + server_sm01: + type: OS::Nova::Server + properties: +# config_drive: "True" + name: {get_param: [sm_server_names, 0]} + image: {get_param: sm_image_name} + flavor: {get_param: sm_flavor_name} + availability_zone: {get_param: availabilityzone_name} + networks: + - port: {get_resource: sm01_port_0} + - port: {get_resource: sm01_port_1} +# block_device_mapping: +# - device_name: vdd +# volume_id: { get_param: session-manager-vol-1 } + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog02}} + user_data_format: RAW + + sm01_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + security_groups: [{get_resource: mog_security_group}] + + sm01_port_1: + type: OS::Neutron::Port + properties: + network: {get_resource: dummy_net_0} + security_groups: [{get_resource: mog_security_group}] + + sm01_port_2: + type: OS::Neutron::Port + properties: + network: {get_param: repl_net_name} + fixed_ips: [{"ip_address": {get_param: [repl_net_ips, 0]}}] + security_groups: [{get_resource: mog_security_group}] + + server_sm02: + type: OS::Nova::Server + properties: +# config_drive: "True" + name: {get_param: [sm_server_names, 1]} + image: {get_param: sm_image_name} + flavor: {get_param: sm_flavor_name} + availability_zone: {get_param: availabilityzone_name} +# block_device_mapping: +# - device_name: vdd +# volume_id: { get_param: session-manager-vol-2 } + networks: + - port: {get_resource: sm02_port_0} + - port: {get_resource: sm02_port_1} + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog02}} + user_data_format: RAW + + sm02_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + security_groups: [{get_resource: mog_security_group}] + + sm02_port_1: + type: OS::Neutron::Port + properties: + network: {get_resource: dummy_net_0} + security_groups: [{get_resource: mog_security_group}] + + sm02_port_2: + type: OS::Neutron::Port + properties: + network: {get_param: repl_net_name} + fixed_ips: [{"ip_address": {get_param: [repl_net_ips, 1]}}] + security_groups: [{get_resource: mog_security_group}] + + servergroup_mog03: + type: OS::Nova::ServerGroup + properties: + policies: + - anti-affinity + server_ps01: + type: OS::Nova::Server + properties: +# config_drive: "True" + name: {get_param: [ps_server_names, 0]} + image: {get_param: ps_image_name} + flavor: {get_param: ps_flavor_name} + availability_zone: {get_param: availabilityzone_name} + networks: + - port: {get_resource: ps01_port_0} + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog03}} + user_data_format: RAW + + ps01_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + security_groups: [{get_resource: mog_security_group}] + + server_ps02: + type: OS::Nova::Server + properties: +# config_drive: "True" + name: {get_param: [ps_server_names, 1]} + image: {get_param: ps_image_name} + flavor: {get_param: ps_flavor_name} + availability_zone: {get_param: availabilityzone_name} + networks: + - port: {get_resource: ps02_port_0} + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog03}} + user_data_format: RAW + + ps02_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + security_groups: [{get_resource: mog_security_group}] + + server_ps03: + type: OS::Nova::Server + properties: + name: {get_param: [ps_server_names, 2]} + image: {get_param: ps_image_name} + flavor: {get_param: ps_flavor_name} + availability_zone: {get_param: availabilityzone_name} + networks: + - port: {get_resource: ps03_port_0} + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog03}} + user_data_format: RAW + + ps03_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + security_groups: [{get_resource: mog_security_group}] + + server_ps04: + type: OS::Nova::Server + properties: + name: {get_param: [ps_server_names, 3]} + image: {get_param: ps_image_name} + flavor: {get_param: ps_flavor_name} + availability_zone: {get_param: availabilityzone_name} + networks: + - port: {get_resource: ps04_port_0} + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog03}} + user_data_format: RAW + + ps04_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + security_groups: [{get_resource: mog_security_group}] + + server_cm01: + type: OS::Nova::Server + properties: +# config_drive: "True" + name: {get_param: [cm_server_names, 0]} + image: {get_param: cm_image_name} + flavor: {get_param: cm_flavor_name} + availability_zone: {get_param: availabilityzone_name} + networks: + - port: {get_resource: cm01_port_0} + - port: {get_resource: cm01_port_1} +# block_device_mapping: +# - device_name: vdd +# volume_id: { get_param: cluster-manager-vol-2 } +# - device_name: vde +# volume_id: { get_param: cluster-manager-vol-1 } + user_data: + scheduler_hints: {group: {get_resource: servergroup_mog03}} + user_data_format: RAW + + cm01_port_0: + type: OS::Neutron::Port + properties: + network: {get_resource: csb_net} + fixed_ips: [{"ip_address": {get_param: [csb_net_ips, 10]}}] + security_groups: [{get_resource: mog_security_group}] + + cm01_port_1: + type: OS::Neutron::Port + properties: + network: {get_param: oam_net_name} + fixed_ips: [{"ip_address": {get_param: [oam_net_ips, 4]}}] + security_groups: [{get_resource: mog_security_group}] + diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/second.yaml b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/second.yaml new file mode 100644 index 0000000000..bb06b9d60a --- /dev/null +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/model/second.yaml @@ -0,0 +1,14 @@ +heat_template_version: 2013-05-23 + +description: heat second + +resources: + network_expose: + type: OS::Neutron::Net + +outputs: + expose_resource_network_output: + description: the pcrf_server + value: { get_resource: network_expose } + + diff --git a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/ItemPermissionsDaoFactoryImpl.java b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/ItemPermissionsDaoFactoryImpl.java index 87c0338c25..d2430a6166 100644 --- a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/ItemPermissionsDaoFactoryImpl.java +++ b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/ItemPermissionsDaoFactoryImpl.java @@ -1,6 +1,5 @@ package org.openecomp.sdc.itempermissions.dao.impl; - import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao; import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDaoFactory; @@ -10,10 +9,10 @@ import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDaoFactory; */ public class ItemPermissionsDaoFactoryImpl extends ItemPermissionsDaoFactory { - private static ItemPermissionsDao INSTANCE =new ItemPermissionsDaoImpl(); + private static ItemPermissionsDao INSTANCE = new ItemPermissionsDaoImpl(); - @Override - public ItemPermissionsDao createInterface() { - return INSTANCE; - } + @Override + public ItemPermissionsDao createInterface() { + return INSTANCE; + } } diff --git a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/ItemPermissionsDaoImpl.java b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/ItemPermissionsDaoImpl.java index 6421c283f3..c9c4198081 100644 --- a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/ItemPermissionsDaoImpl.java +++ b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/ItemPermissionsDaoImpl.java @@ -13,75 +13,79 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.openecomp.sdc.itempermissions.dao.impl; import com.datastax.driver.core.ResultSet; import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; -import org.openecomp.core.nosqldb.api.NoSqlDb; -import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; -import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao; -import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity; import java.util.Collection; import java.util.Optional; import java.util.Set; +import org.openecomp.core.nosqldb.api.NoSqlDb; +import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; +import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao; +import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity; + /** * Created by ayalaben on 6/20/2017. */ public class ItemPermissionsDaoImpl implements ItemPermissionsDao { - private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); - private static ItemPermissionsAccessor accessor = - noSqlDb.getMappingManager().createAccessor(ItemPermissionsAccessor.class); - - @Override - public Collection<ItemPermissionsEntity> listItemPermissions(String itemId) { - return accessor.getItemPermissions(itemId).all(); - } - - @Override - public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds, - Set<String> removedUsersIds) { - addedUsersIds.forEach(userId -> accessor.addPermission(itemId, userId, permission)); - removedUsersIds.stream() - .filter(userId -> getUserItemPermission(itemId, userId) - .map(userPermissionOnItem -> userPermissionOnItem.equals(permission)) - .orElse(false)) - .forEach(userId -> accessor.deletePermission(itemId, userId)); - } - - @Override - public Optional<String> getUserItemPermission(String itemId, String userId) { - ResultSet result = accessor.getUserItemPermission(itemId, userId); - return result.getAvailableWithoutFetching() < 1 - ? Optional.empty() - : Optional.of(result.one().getString(0)); - } - - @Override - public void deleteItemPermissions(String itemId) { - accessor.deleteItemPermissions(itemId); - } - - - @Accessor - interface ItemPermissionsAccessor { - @Query("select * from dox.item_permissions WHERE item_id = ?") - Result<ItemPermissionsEntity> getItemPermissions(String itemId); - - @Query("select permission from dox.item_permissions WHERE item_id = ? AND user_id=?") - ResultSet getUserItemPermission(String itemId, String userId); - - @Query("delete from dox.item_permissions where item_id = ? and user_id = ?") - void deletePermission(String itemId, String userId); - - @Query("insert into dox.item_permissions (item_id,user_id,permission) values (?,?,?)") - void addPermission(String itemId, String userId, String permission); - - @Query("delete from dox.item_permissions where item_id=?") - void deleteItemPermissions(String itemId); - - } + + private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); + private static ItemPermissionsAccessor accessor = + noSqlDb.getMappingManager().createAccessor(ItemPermissionsAccessor.class); + + @Override + public Collection<ItemPermissionsEntity> listItemPermissions(String itemId) { + return accessor.getItemPermissions(itemId).all(); + } + + @Override + public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds, + Set<String> removedUsersIds) { + addedUsersIds.forEach(userId -> accessor.addPermission(itemId, userId, permission)); + removedUsersIds.stream() + .filter(userId -> getUserItemPermission(itemId, userId) + .map(userPermissionOnItem -> userPermissionOnItem.equals(permission)) + .orElse(false)) + .forEach(userId -> accessor.deletePermission(itemId, userId)); + } + + @Override + public Optional<String> getUserItemPermission(String itemId, String userId) { + ResultSet result = accessor.getUserItemPermission(itemId, userId); + return result.getAvailableWithoutFetching() < 1 + ? Optional.empty() + : Optional.of(result.one().getString(0)); + } + + @Override + public void deleteItemPermissions(String itemId) { + accessor.deleteItemPermissions(itemId); + } + + + @Accessor + interface ItemPermissionsAccessor { + + @Query("select * from dox.item_permissions WHERE item_id = ?") + Result<ItemPermissionsEntity> getItemPermissions(String itemId); + + @Query("select permission from dox.item_permissions WHERE item_id = ? AND user_id=?") + ResultSet getUserItemPermission(String itemId, String userId); + + @Query("delete from dox.item_permissions where item_id = ? and user_id = ?") + void deletePermission(String itemId, String userId); + + @Query("insert into dox.item_permissions (item_id,user_id,permission) values (?,?,?)") + void addPermission(String itemId, String userId, String permission); + + @Query("delete from dox.item_permissions where item_id=?") + void deleteItemPermissions(String itemId); + + } } diff --git a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsServicesImpl.java b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsServicesImpl.java index ec914b1530..d0e41d8c91 100644 --- a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsServicesImpl.java +++ b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsServicesImpl.java @@ -13,8 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.openecomp.sdc.itempermissions.dao.impl; +import java.util.Collection; +import java.util.Optional; +import java.util.Set; + import org.openecomp.sdc.common.session.SessionContextProviderFactory; import org.openecomp.sdc.itempermissions.PermissionsRules; import org.openecomp.sdc.itempermissions.PermissionsServices; @@ -22,83 +27,79 @@ import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao; import org.openecomp.sdc.itempermissions.dao.UserPermissionsDao; import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity; -import java.util.Collection; -import java.util.Optional; -import java.util.Set; - /** * Created by ayalaben on 6/22/2017. */ public class PermissionsServicesImpl implements PermissionsServices { - private ItemPermissionsDao itemPermissionsDao; + private ItemPermissionsDao itemPermissionsDao; - private UserPermissionsDao userPermissionsDao; + private UserPermissionsDao userPermissionsDao; - private PermissionsRules permissionsRules; + private PermissionsRules permissionsRules; - private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions"; + private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions"; - public PermissionsServicesImpl(PermissionsRules permissionsRules, - ItemPermissionsDao itemPermissionsDao, - UserPermissionsDao userPermissionsDao) { - this.itemPermissionsDao = itemPermissionsDao; - this.permissionsRules = permissionsRules; - this.userPermissionsDao = userPermissionsDao; - } + public PermissionsServicesImpl(PermissionsRules permissionsRules, + ItemPermissionsDao itemPermissionsDao, + UserPermissionsDao userPermissionsDao) { + this.itemPermissionsDao = itemPermissionsDao; + this.permissionsRules = permissionsRules; + this.userPermissionsDao = userPermissionsDao; + } - @Override - public Collection<ItemPermissionsEntity> listItemPermissions(String itemId) { - return itemPermissionsDao.listItemPermissions(itemId); - } + @Override + public Collection<ItemPermissionsEntity> listItemPermissions(String itemId) { + return itemPermissionsDao.listItemPermissions(itemId); + } - @Override - public Set<String> listUserPermittedItems(String userId, String permission) { - return userPermissionsDao.listUserPermittedItems(userId, permission); - } + @Override + public Set<String> listUserPermittedItems(String userId, String permission) { + return userPermissionsDao.listUserPermittedItems(userId, permission); + } - @Override - public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds, - Set<String> removedUsersIds) { + @Override + public void updateItemPermissions(String itemId, String permission, Set<String> addedUsersIds, + Set<String> removedUsersIds) { - String currentUserId = SessionContextProviderFactory.getInstance() - .createInterface().get().getUser().getUserId(); + String currentUserId = SessionContextProviderFactory.getInstance() + .createInterface().get().getUser().getUserId(); - permissionsRules.executeAction(itemId, currentUserId, CHANGE_PERMISSIONS); + permissionsRules.executeAction(itemId, currentUserId, CHANGE_PERMISSIONS); - permissionsRules.updatePermission(itemId, currentUserId, permission, addedUsersIds, - removedUsersIds); + permissionsRules.updatePermission(itemId, currentUserId, permission, addedUsersIds, + removedUsersIds); - itemPermissionsDao.updateItemPermissions(itemId, permission, - addedUsersIds, removedUsersIds); + itemPermissionsDao.updateItemPermissions(itemId, permission, + addedUsersIds, removedUsersIds); - userPermissionsDao.updatePermissions(itemId, permission, - addedUsersIds, removedUsersIds); + userPermissionsDao.updatePermissions(itemId, permission, + addedUsersIds, removedUsersIds); - } + } - @Override - public boolean isAllowed(String itemId, String userId, String action) { - return itemPermissionsDao.getUserItemPermission(itemId, userId) - .map(permission -> permissionsRules.isAllowed(permission, action)) - .orElse(false); - } + @Override + public boolean isAllowed(String itemId, String userId, String action) { + return itemPermissionsDao.getUserItemPermission(itemId, userId) + .map(permission -> permissionsRules.isAllowed(permission, action)) + .orElse(false); + } - @Override - public void execute(String itemId, String userId, String action) { - permissionsRules.executeAction(itemId, userId, action); - } + @Override + public void execute(String itemId, String userId, String action) { + permissionsRules.executeAction(itemId, userId, action); + } - @Override - public Optional<String> getUserItemPermission(String itemId, String userId) { - return itemPermissionsDao.getUserItemPermission(itemId, userId); - } + @Override + public Optional<String> getUserItemPermission(String itemId, String userId) { + return itemPermissionsDao.getUserItemPermission(itemId, userId); + } - @Override - public void deleteItemPermissions(String itemId) { - itemPermissionsDao.deleteItemPermissions(itemId); - } + @Override + public void deleteItemPermissions(String itemId) { + itemPermissionsDao.deleteItemPermissions(itemId); + } } diff --git a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/UserPermissionsDaoFactoryImpl.java b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/UserPermissionsDaoFactoryImpl.java index 86a64ddf1d..4c23743ea5 100644 --- a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/UserPermissionsDaoFactoryImpl.java +++ b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/UserPermissionsDaoFactoryImpl.java @@ -21,7 +21,7 @@ import org.openecomp.sdc.itempermissions.dao.UserPermissionsDaoFactory; public class UserPermissionsDaoFactoryImpl extends UserPermissionsDaoFactory { - private static UserPermissionsDao INSTANCE =new UserPermissionsDaoImpl(); + private static UserPermissionsDao INSTANCE = new UserPermissionsDaoImpl(); @Override public UserPermissionsDao createInterface() { diff --git a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/UserPermissionsDaoImpl.java b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/UserPermissionsDaoImpl.java index dad8f25535..8609f2f4a8 100644 --- a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/UserPermissionsDaoImpl.java +++ b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/dao/impl/UserPermissionsDaoImpl.java @@ -19,14 +19,15 @@ package org.openecomp.sdc.itempermissions.dao.impl; import com.datastax.driver.core.ResultSet; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; -import org.openecomp.core.nosqldb.api.NoSqlDb; -import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; -import org.openecomp.sdc.itempermissions.dao.UserPermissionsDao; import java.util.Collections; import java.util.HashSet; import java.util.Set; +import org.openecomp.core.nosqldb.api.NoSqlDb; +import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; +import org.openecomp.sdc.itempermissions.dao.UserPermissionsDao; + public class UserPermissionsDaoImpl implements UserPermissionsDao { private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); @@ -36,23 +37,23 @@ public class UserPermissionsDaoImpl implements UserPermissionsDao { @Override public Set<String> listUserPermittedItems(String userId, String permission) { - ResultSet resultSet = accessor.getUserPermissionItems(userId,permission); - if(resultSet.isExhausted()){ + ResultSet resultSet = accessor.getUserPermissionItems(userId, permission); + if (resultSet.isExhausted()) { return new HashSet<>(); } else { - return resultSet.one().getSet(0,String.class); + return resultSet.one().getSet(0, String.class); } } @Override public void updatePermissions(String itemId, String permission, Set<String> addedUsersIds, - Set<String> removedUsersIds) { + Set<String> removedUsersIds) { Set<String> itemSet = Collections.singleton(itemId); addedUsersIds.forEach(userId -> - accessor.addItem(itemSet, userId,permission)); + accessor.addItem(itemSet, userId, permission)); removedUsersIds.forEach(userId -> - accessor.removeItem(itemSet,userId,permission)); + accessor.removeItem(itemSet, userId, permission)); } @Accessor diff --git a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/servlet/PermissionsFilter.java b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/servlet/PermissionsFilter.java index 30472d6e80..9fe045f25d 100644 --- a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/servlet/PermissionsFilter.java +++ b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/main/java/org/openecomp/sdc/itempermissions/servlet/PermissionsFilter.java @@ -48,7 +48,11 @@ public class PermissionsFilter implements Filter { private static final String EDIT_ITEM = "Edit_Item"; public PermissionsFilter() { - this.permissionsServices = PermissionsServicesFactory.getInstance().createInterface(); + this(PermissionsServicesFactory.getInstance().createInterface()); + } + + PermissionsFilter(PermissionsServices permissionsServices) { + this.permissionsServices = permissionsServices; } @Override diff --git a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/test/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsServicesImplTest.java b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/test/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsServicesImplTest.java index 9574d4175a..0e27dcae4c 100644 --- a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/test/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsServicesImplTest.java +++ b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/test/java/org/openecomp/sdc/itempermissions/dao/impl/PermissionsServicesImplTest.java @@ -1,8 +1,21 @@ package org.openecomp.sdc.itempermissions.dao.impl; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; import java.util.Optional; +import java.util.Set; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.Spy; import org.openecomp.sdc.common.session.SessionContextProviderFactory; @@ -14,99 +27,132 @@ import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - -import static org.mockito.Matchers.anyObject; -import static org.mockito.Mockito.*; - /** * Created by ayalaben on 7/9/2017 */ public class PermissionsServicesImplTest { - private static final String ITEM1_ID = "1"; - private static final String PERMISSION = "Owner"; - private static final String USER2_ID = "testUser2"; - private static final String USER1_ID = "testUser1"; - private static final String ACTION_SUBMIT = "Submit_Item"; - private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions"; - - static { - SessionContextProviderFactory.getInstance().createInterface().create("testUser1", "dox"); - } - - @Mock - private ItemPermissionsDao permissionsDaoMock; - @Mock - private UserPermissionsDao userPermissionsDao; // do not delete. needed for permissionService - @Mock - private PermissionsRules permissionsRules; - @InjectMocks - @Spy - private PermissionsServicesImpl permissionsServices; - - - @BeforeMethod - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - } - - @Test - public void testListItemPermissionsWhenNone() { - Collection<ItemPermissionsEntity> permissions = - permissionsServices.listItemPermissions(ITEM1_ID); - Assert.assertEquals(permissions.size(), 0); - } - - - @Test - public void testListItemPermissions(){ - doReturn(Arrays.asList( - createPermissionEntity(ITEM1_ID, USER1_ID, PERMISSION), - createPermissionEntity(ITEM1_ID, USER2_ID, PERMISSION))) - .when(permissionsDaoMock).listItemPermissions(anyObject()); - - Collection<ItemPermissionsEntity> actual = - permissionsServices.listItemPermissions(ITEM1_ID); - Assert.assertEquals(actual.size(), 2); - } - - - @Test - public void testIsAllowed(){ - when(permissionsDaoMock.getUserItemPermission(ITEM1_ID,USER1_ID)).thenReturn(Optional.of(PERMISSION)); - when(permissionsRules.isAllowed(PERMISSION,ACTION_SUBMIT)).thenReturn(true); - - Boolean result = permissionsServices.isAllowed(ITEM1_ID,USER1_ID,ACTION_SUBMIT); - - Assert.assertTrue(result); - - } - @Test - public void testUpdatePermissions(){ - - Set<String> addedUsers = new HashSet<>(); - addedUsers.add(USER2_ID); - - permissionsServices.updateItemPermissions(ITEM1_ID,PERMISSION,addedUsers, new HashSet<>()); - - verify(permissionsRules).executeAction(ITEM1_ID,USER1_ID,CHANGE_PERMISSIONS); - verify(permissionsRules).updatePermission(ITEM1_ID,USER1_ID,PERMISSION,addedUsers, new HashSet<>()); - verify(permissionsDaoMock).updateItemPermissions(ITEM1_ID,PERMISSION,addedUsers,new - HashSet<>()); - } - - - public static ItemPermissionsEntity createPermissionEntity(String itemId, String - userId, String permission) { - ItemPermissionsEntity permissionsEntity = new ItemPermissionsEntity(); - permissionsEntity.setItemId(itemId); - permissionsEntity.setUserId(userId); - permissionsEntity.setPermission(permission); - return permissionsEntity; - } + private static final String ITEM1_ID = "1"; + private static final String PERMISSION = "Owner"; + private static final String USER2_ID = "testUser2"; + private static final String USER1_ID = "testUser1"; + private static final String ACTION_SUBMIT = "Submit_Item"; + private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions"; + + static { + SessionContextProviderFactory.getInstance().createInterface().create("testUser1", "dox"); + } + + @Mock + private ItemPermissionsDao permissionsDaoMock; + @Mock + private UserPermissionsDao userPermissionsDao; // do not delete. needed for permissionService + @Mock + private PermissionsRules permissionsRules; + @InjectMocks + @Spy + private PermissionsServicesImpl permissionsServices; + + + @BeforeMethod + public void setUp() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void testListUserPermittedItems() { + Set<String> userPermissionSet = Collections.emptySet(); + + Mockito.when(userPermissionsDao.listUserPermittedItems(anyString(), anyString())).thenReturn(userPermissionSet); + + Set<String> permissionsSet = permissionsServices.listUserPermittedItems(USER1_ID, PERMISSION); + + Assert.assertEquals(0, permissionsSet.size()); + } + + @Test + public void testExecute() { + Mockito.doNothing().when(permissionsRules).executeAction(anyString(), anyString(), anyString()); + + permissionsServices.execute(ITEM1_ID, USER1_ID, PERMISSION); + + Mockito.verify(permissionsRules, times(1)).executeAction(anyString(), anyString(), anyString()); + } + + @Test + public void testDeleteItemPermissions() { + Mockito.doNothing().when(permissionsDaoMock).deleteItemPermissions(anyString()); + + permissionsServices.deleteItemPermissions(ITEM1_ID); + + Mockito.verify(permissionsDaoMock, times(1)).deleteItemPermissions(anyString()); + } + + @Test + public void testGetUserItemPermission() { + Mockito.when(permissionsDaoMock.getUserItemPermission(anyString(), anyString())) + .thenReturn(Optional.of(PERMISSION)); + + Optional<String> permission = permissionsServices.getUserItemPermission(ITEM1_ID, USER1_ID); + + Assert.assertTrue(permission.isPresent()); + Assert.assertEquals(permission.get(), PERMISSION); + } + + @Test + public void testListItemPermissionsWhenNone() { + Collection<ItemPermissionsEntity> permissions = + permissionsServices.listItemPermissions(ITEM1_ID); + Assert.assertEquals(permissions.size(), 0); + } + + + @Test + public void testListItemPermissions() { + doReturn(Arrays.asList( + createPermissionEntity(ITEM1_ID, USER1_ID, PERMISSION), + createPermissionEntity(ITEM1_ID, USER2_ID, PERMISSION))) + .when(permissionsDaoMock).listItemPermissions(anyObject()); + + Collection<ItemPermissionsEntity> actual = + permissionsServices.listItemPermissions(ITEM1_ID); + Assert.assertEquals(actual.size(), 2); + } + + + @Test + public void testIsAllowed() { + when(permissionsDaoMock.getUserItemPermission(ITEM1_ID, USER1_ID)).thenReturn(Optional.of(PERMISSION)); + when(permissionsRules.isAllowed(PERMISSION, ACTION_SUBMIT)).thenReturn(true); + + boolean result = permissionsServices.isAllowed(ITEM1_ID, USER1_ID, ACTION_SUBMIT); + + Assert.assertTrue(result); + + } + + @Test + public void testUpdatePermissions() { + + Set<String> addedUsers = new HashSet<>(); + addedUsers.add(USER2_ID); + + permissionsServices.updateItemPermissions(ITEM1_ID, PERMISSION, addedUsers, new HashSet<>()); + + verify(permissionsRules).executeAction(ITEM1_ID, USER1_ID, CHANGE_PERMISSIONS); + verify(permissionsRules).updatePermission(ITEM1_ID, USER1_ID, PERMISSION, addedUsers, new HashSet<>()); + verify(permissionsDaoMock).updateItemPermissions(ITEM1_ID, PERMISSION, addedUsers, new + HashSet<>()); + } + + + private static ItemPermissionsEntity createPermissionEntity(String itemId, String + userId, String permission) { + ItemPermissionsEntity permissionsEntity = new ItemPermissionsEntity(); + permissionsEntity.setItemId(itemId); + permissionsEntity.setUserId(userId); + permissionsEntity.setPermission(permission); + return permissionsEntity; + } }
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/test/java/org/openecomp/sdc/itempermissions/servlet/PermissionsFilterTest.java b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/test/java/org/openecomp/sdc/itempermissions/servlet/PermissionsFilterTest.java new file mode 100644 index 0000000000..6bb51c30dd --- /dev/null +++ b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-core/src/test/java/org/openecomp/sdc/itempermissions/servlet/PermissionsFilterTest.java @@ -0,0 +1,90 @@ +/* + * + * Copyright © 2017-2018 European Support Limited + * + * 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. + * / + * + */ + +package org.openecomp.sdc.itempermissions.servlet; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintWriter; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.HttpMethod; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.mockito.Spy; +import org.openecomp.sdc.itempermissions.PermissionsServices; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +public class PermissionsFilterTest { + + @Mock + private PermissionsServices permissionsServicesMock; + + @InjectMocks + @Spy + private PermissionsFilter permissionsFilter; + + @BeforeMethod + public void setUp() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void testDoFilter() throws ServletException, IOException { + HttpServletRequest httpServletRequest = Mockito.spy(HttpServletRequest.class); + HttpServletResponse httpServletResponse = Mockito.spy(HttpServletResponse.class); + FilterChain filterChain = Mockito.mock(FilterChain.class); + + initializeMocking(httpServletRequest, httpServletResponse, filterChain); + Mockito.when(httpServletRequest.getPathInfo()).thenReturn("onboardingci/onbrest/onboarding-api/v1.0"); + + permissionsFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); + + Mockito.verify(filterChain, Mockito.times(0)).doFilter(Mockito.any(), Mockito.any()); + } + + @Test + public void testDoFilterPass() throws ServletException, IOException { + HttpServletRequest httpServletRequest = Mockito.spy(HttpServletRequest.class); + HttpServletResponse httpServletResponse = Mockito.spy(HttpServletResponse.class); + FilterChain filterChain = Mockito.mock(FilterChain.class); + + initializeMocking(httpServletRequest, httpServletResponse, filterChain); + Mockito.when(httpServletRequest.getPathInfo()).thenReturn("onboardingci/onbrest/onboarding-api"); + permissionsFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); + + Mockito.verify(filterChain, Mockito.times(1)).doFilter(Mockito.any(), Mockito.any()); + } + + private void initializeMocking(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, + FilterChain filterChain) throws ServletException, IOException { + PrintWriter printWriter = new PrintWriter(new ByteArrayOutputStream()); + Mockito.when(httpServletRequest.getMethod()).thenReturn(HttpMethod.POST); + Mockito.when(httpServletRequest.getHeader("USER_ID")).thenReturn("cs0008"); + Mockito.when(httpServletResponse.getWriter()).thenReturn(printWriter); + Mockito.doNothing().when(filterChain).doFilter(Mockito.any(), Mockito.any()); + Mockito.when(permissionsServicesMock.isAllowed( + Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenReturn(false); + } +} |