summaryrefslogtreecommitdiffstats
path: root/csarvalidation/python/main/validation/rules/providers/RulesDescriptionsProvider.py
blob: a34bbe386bb3e20f222c83ef49de1a848a576441 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# ============LICENSE_START====================================
# vnfsdk-validation
# =========================================================
# Copyright (C) 2020 Nokia. All rights reserved.
# =========================================================
# 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.
# ============LICENSE_END=====================================

import os
import yaml


class RulesDescriptionsProvider:

    def __init__(self, directory_containing_rules: str, rule_description_file_name_pattern: str):
        self._directory_containing_rules = directory_containing_rules
        self._rule_description_file_name_pattern = rule_description_file_name_pattern

    def contains_rule(self, rule: str) -> bool:
        description_file_name = self._rule_description_file_name_pattern % rule
        return os.path.isfile(self._directory_containing_rules + description_file_name)

    def get_rule_description(self, rule: str) -> str:
        description_file_name = self._rule_description_file_name_pattern % rule
        return self._get_yaml_description(description_file_name)

    def _get_yaml_description(self, yaml_file: str) -> str:
        with open(self._directory_containing_rules + yaml_file, 'r') as description_file:
            description_yaml = yaml.load(description_file, Loader=yaml.FullLoader)
            return description_yaml