diff options
author | stark, steven <steven.stark@att.com> | 2019-01-28 14:59:01 -0800 |
---|---|---|
committer | stark, steven <steven.stark@att.com> | 2019-01-29 08:03:41 -0800 |
commit | 48a07b6942d3956666d30947372653feb702fdae (patch) | |
tree | 5a5fc3135f2703ad19543b78e661ea954e98bb33 /ice_validator/tests/helpers.py | |
parent | 43130f8b173d9053ad4f56f264376851d3fb890c (diff) |
[VVP] stand alone tool, script updates
1) Validation script updates:
Various bug fixes and script enhancements
New tests for:
R-18683
R-94669
R-304011
R-01455
R-86476
R-708564
R-85734
R-18683
R-94669
R-304011
R-01455
R-86476
R-86476
R-589037
Removed tests for:
R-75202
R-62954
R-22441
R-49177
R-16576
R-86237
R-44491
R-70757
R-01896
R-26124
2) Stand Alone tool introduced
3) Added optional "categories" capability
Change-Id: I193cd5c267750791d97b350e91fc36faa72d8d5f
Issue-ID: VVP-143
Signed-off-by: stark, steven <steven.stark@att.com>
Diffstat (limited to 'ice_validator/tests/helpers.py')
-rw-r--r-- | ice_validator/tests/helpers.py | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/ice_validator/tests/helpers.py b/ice_validator/tests/helpers.py index fa106c3..0b33c0c 100644 --- a/ice_validator/tests/helpers.py +++ b/ice_validator/tests/helpers.py @@ -2,7 +2,7 @@ # ============LICENSE_START==================================================== # org.onap.vvp/validation-scripts # =================================================================== -# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. # =================================================================== # # Unless otherwise specified, all software contained herein is licensed @@ -113,6 +113,19 @@ def validates(*requirement_ids): return decorator +def categories(*categories): + def decorator(func): + @funcutils.wraps(func) + def wrapper(*args, **kw): + return func(*args, **kw) + + wrapper.categories = categories + return wrapper + + decorator.categories = categories + return decorator + + def get_environment_pair(heat_template): """Returns a yaml/env pair given a yaml file""" base_dir, filename = os.path.split(heat_template) @@ -130,6 +143,47 @@ def get_environment_pair(heat_template): return None +def find_environment_file(yaml_files): + """ + Pass file and recursively step backwards until environment file is found + + :param yaml_files: list or string, start at size 1 and grows recursively + :return: corresponding environment file for a file, or None + """ + # sanitize + if isinstance(yaml_files, str): + yaml_files = [yaml_files] + + yaml_file = yaml_files[-1] + filepath, filename = os.path.split(yaml_file) + + environment_pair = get_environment_pair(yaml_file) + if environment_pair: + return environment_pair + + for file in os.listdir(filepath): + fq_name = "{}/{}".format(filepath, file) + if fq_name.endswith("yaml") or fq_name.endswith("yml"): + if fq_name not in yaml_files: + with open(fq_name) as f: + yml = yaml.load(f) + resources = yml.get("resources", {}) + for resource_id, resource in resources.items(): + resource_type = resource.get("type", "") + if resource_type == "OS::Heat::ResourceGroup": + resource_type = ( + resource.get("properties", {}) + .get("resource_def", {}) + .get("type", "") + ) + # found called nested file + if resource_type == filename: + yaml_files.append(fq_name) + environment_pair = find_environment_file(yaml_files) + + return environment_pair + + def load_yaml(yaml_file): """ Load the YAML file at the given path. If the file has previously been |