aboutsummaryrefslogtreecommitdiffstats
path: root/ice_validator/tests/utils
diff options
context:
space:
mode:
authorLovett, Trevor <trevor.lovett@att.com>2020-01-16 15:47:59 -0600
committerLovett, Trevor <trevor.lovett@att.com>2020-01-16 15:47:59 -0600
commitded5c74ea07eb1541587de1042444fa6b590ddde (patch)
treef59f044962150b4f75d73f90e1ba59e4ff84c69d /ice_validator/tests/utils
parent60d5bfeff163a2155679c9dbece42dc4e085bfd9 (diff)
[VVP] Resources not allowed in 2nd level templates
Cleaned up nesting detection logic Deleted test in Nova Server file as the nesting is no longer related to Nova servers Added check for resources in 2nd level nested files to existing test. Change-Id: I136efb786f67cf4c45fe4da3abaa3fcec024ba50 Issue-ID: VVP-357 Signed-off-by: Lovett, Trevor <trevor.lovett@att.com>
Diffstat (limited to 'ice_validator/tests/utils')
-rw-r--r--ice_validator/tests/utils/nested_files.py83
1 files changed, 2 insertions, 81 deletions
diff --git a/ice_validator/tests/utils/nested_files.py b/ice_validator/tests/utils/nested_files.py
index e5f5941..e1918ad 100644
--- a/ice_validator/tests/utils/nested_files.py
+++ b/ice_validator/tests/utils/nested_files.py
@@ -34,26 +34,15 @@
# limitations under the License.
#
# ============LICENSE_END============================================
-#
-#
-"""nested files
-"""
from functools import lru_cache
from os import path, listdir
import re
from tests import cached_yaml as yaml
-from tests.structures import Heat
from tests.helpers import load_yaml
-VERSION = "1.4.0"
-
-"""
-test nesting depth
-0 -> 1 -> 2 -> too deep.
-"""
-MAX_DEPTH = 3
+MAX_DEPTH = 2
def check_for_invalid_nesting( # pylint: disable=too-many-branches
@@ -70,7 +59,7 @@ def check_for_invalid_nesting( # pylint: disable=too-many-branches
for v in yml.values():
if isinstance(v, dict) and "type" in v:
t = v["type"]
- if t.endswith(".yml") or t.endswith(".yaml"):
+ if t.lower().endswith(".yml") or t.lower().endswith(".yaml"):
filepath = path.join(dirpath, t)
elif t == "OS::Heat::ResourceGroup":
rd = v["properties"]["resource_def"]
@@ -98,18 +87,6 @@ def check_for_invalid_nesting( # pylint: disable=too-many-branches
return invalid_nesting
-def get_dict_of_nested_files(yml, dirpath):
- """Return dict.
- key: resource id in yml which references a nested file.
- value: the nested file name.
- Nested files are either referenced through "type", or
- for OS::Heat::ResourceGroup, through "resource_def type".
- """
- nested_files = get_type_nested_files(yml, dirpath)
- nested_files.update(get_resourcegroup_nested_files(yml, dirpath))
- return nested_files
-
-
@lru_cache(maxsize=None)
def get_list_of_nested_files(yml_path, dirpath):
"""
@@ -138,62 +115,6 @@ def get_list_of_nested_files(yml_path, dirpath):
return nested_files
-def get_nesting(yaml_files):
- """return bad, files, heat, depths
- bad - list of error messages.
- files - dict: key is filename, value is dict of nested files.
- This is the tree.
- heat - dict,: key is filename, value is Heat instance.
- depths - dict: key is filename, value is a depth tuple
-
- level: 0 1 2 3
- file: template -> nested -> nested -> nested
- depth: 3 2 1 0
- """
- bad = []
- files = {}
- heat = {}
- depths = {}
- for yaml_file in yaml_files:
- dirname, basename = path.split(yaml_file)
- h = Heat(filepath=yaml_file)
- heat[basename] = h
- files[basename] = get_dict_of_nested_files(h.yml, dirname)
- for filename in files:
- depths[filename] = _get_nesting_depth_start(0, filename, files, [])
- for depth in depths[filename]:
- if depth[0] > MAX_DEPTH:
- bad.append("{} {}".format(filename, str(depth[1])))
- return bad, files, heat, depths
-
-
-def _get_nesting_depth_start(depth, filename, files, context):
- depths = []
- for rid, nf in files[filename].items():
- depths.append(_get_nesting_depth(1, nf, files, context))
- return depths
-
-
-def _get_nesting_depth(depth, filename, files, context):
- """Return a depth tuple (max_depth, current_context).
- `context` is the list of filenames.
- `depth` is the length of `context`.
- Finds the max_depth of all the resources of `filename`.
- current_context is the updated list of filenames
- and max_depth is its length.
- """
- max_depth = depth + 1
- current_context = context + [filename]
- if depth <= MAX_DEPTH:
- nested_filenames = files.get(filename, {})
- if nested_filenames:
- max_depth, current_context = max(
- _get_nesting_depth(depth + 1, nested_filename, files, current_context)
- for nested_filename in nested_filenames.values()
- )
- return max_depth, current_context
-
-
def get_resourcegroup_nested_files(yml, dirpath):
"""
return a dict.