From 0e2e6cdfb6b659c29ad1a59ac37d3a50191577a0 Mon Sep 17 00:00:00 2001 From: "Lovett, Trevor (tl2972)" Date: Thu, 16 May 2019 11:31:07 -0500 Subject: [VVP] Add test for R-100260 and fix mapping Re-arranged some helper and util functions to more logical locations. Added test to verify than an internal subnet parameter used in an incremental module is defined in the base module. Change-Id: I20369396b18820f0e321c0e75bd47446b0a7a39f Issue-ID: VVP-215 Signed-off-by: Lovett, Trevor (tl2972) --- ice_validator/tests/utils/incrementals.py | 63 +++++++++++++++++++++++++++++++ ice_validator/tests/utils/nested_files.py | 33 +++++++++++++++- 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 ice_validator/tests/utils/incrementals.py (limited to 'ice_validator/tests/utils') diff --git a/ice_validator/tests/utils/incrementals.py b/ice_validator/tests/utils/incrementals.py new file mode 100644 index 0000000..2728d3b --- /dev/null +++ b/ice_validator/tests/utils/incrementals.py @@ -0,0 +1,63 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START==================================================== +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ============LICENSE_END============================================ +# +# +import os + +from tests.helpers import get_base_template_from_yaml_files +from tests.utils.nested_files import get_nested_files + + +def is_incremental_module(yaml_file, yaml_files): + """ + Returns true if the file is not a base module, volume module, or nested module. + """ + base_template = get_base_template_from_yaml_files(yaml_files) + nested_templates = get_nested_files(yaml_files) + is_volume_module = os.path.splitext(yaml_file)[0].endswith("_volume") + return ( + yaml_file != base_template + and yaml_file not in nested_templates + and not is_volume_module + ) + + +def get_incremental_modules(yaml_files): + """ + Returns the a list of file paths for the incremental modules in yaml_files + """ + return [f for f in yaml_files if is_incremental_module(f, yaml_files)] diff --git a/ice_validator/tests/utils/nested_files.py b/ice_validator/tests/utils/nested_files.py index 5f1f174..c7a5601 100644 --- a/ice_validator/tests/utils/nested_files.py +++ b/ice_validator/tests/utils/nested_files.py @@ -40,7 +40,7 @@ """nested files """ -from os import path +from os import path, listdir import re from tests import cached_yaml as yaml from tests.structures import Heat @@ -258,3 +258,34 @@ def get_type_nested_files(yml, dirpath): if path.exists(filepath): nested_files[rid] = nested_file return nested_files + + +def get_nested_files(filenames): + """ + returns all the nested files for a set of filenames + """ + nested_files = [] + for filename in filenames: + if file_is_a_nested_template(filename): + nested_files.append(filename) + return nested_files + + +def file_is_a_nested_template(file): + directory = path.dirname(file) + nested_files = [] + for filename in listdir(directory): + if filename.endswith(".yaml") or filename.endswith(".yml"): + filename = "{}/{}".format(directory, filename) + try: + with open(filename) as fh: + yml = yaml.load(fh) + if "resources" not in yml: + continue + nested_files.extend( + get_list_of_nested_files(yml["resources"], path.dirname(filename)) + ) + except yaml.YAMLError as e: + print(e) # pylint: disable=superfluous-parens + continue + return file in nested_files -- cgit 1.2.3-korg