# -*- coding: utf8 -*- # ============LICENSE_START==================================================== # org.onap.vvp/validation-scripts # =================================================================== # Copyright © 2017 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============================================ # # ECOMP is a trademark and service mark of AT&T Intellectual Property. # """structures """ import os import yaml from .utils import nested_dict VERSION = "1.4.0" class Heat(object): """A Heat template. filepath - absolute path to template file. envpath - absolute path to environmnt file. """ def __init__(self, filepath=None, envpath=None): self.filepath = None self.basename = None self.dirname = None self.yml = None self.heat_template_version = None self.description = None self.parameter_groups = None self.parameters = None self.resources = None self.outputs = None self.conditions = None if filepath: self.load(filepath) self.env = None if envpath: self.load_env(envpath) def load(self, filepath): """Load the Heat template given a filepath. """ self.filepath = filepath self.basename = os.path.basename(self.filepath) self.dirname = os.path.dirname(self.filepath) with open(self.filepath) as fi: self.yml = yaml.load(fi) self.heat_template_version = self.yml.get("heat_template_version", None) self.description = self.yml.get("description", "") self.parameter_groups = self.yml.get("parameter_groups", {}) self.parameters = self.yml.get("parameters", {}) self.resources = self.yml.get("resources", {}) self.outputs = self.yml.get("outputs", {}) self.conditions = self.yml.get("conditions", {}) def load_env(self, envpath): """Load the Environment template given a envpath. """ self.env = Env(filepath=envpath) @staticmethod def nested_get(dic, *keys): """make utils.nested_dict.get available as a class method. """ return nested_dict.get(dic, *keys) class Env(Heat): """An Environment file """ pass class Resource(object): """A Resource """ def __init__(self, resource_id=None, resource=None): self.resource_id = resource_id or "" self.resource = resource or {} @staticmethod def get_index_var(resource): """Return the index_var for this resource. """ index_var = nested_dict.get(resource, "properties", "index_var") or "index" return index_var