import logging from pprint import pprint # from .config import ResourceKind from . import exceptions as error from .framework import DictCtrl, DictItem, KeyValue, KeyValueExtra logger = logging.getLogger(__name__) # pprint (logger.__dict__) class Provider(DictItem): default_attrs = { "resources_def": {}, "resources": {}, "services": {}, } def init(self): payload = self._payload # Create resources Defs # res_def = payload.get("resources_def", {}) # {} # for key, val in payload.get("resources_def", {}).items(): # res_def[key] = ResourceKind(key, val) # self.resources_def = res_def self.resources_kind = payload.get("resources_def", {}) # Create resources instances res_inst_configs = {} for key, val in payload.get("resources", {}).items(): res_inst_configs[key] = val self.resources_inst = res_inst_configs self.resources_conf = res_inst_configs self.services_confs = payload.get("services", {}) class Providers(DictCtrl): items_class = Provider def get_resource_kinds(self): "Returns resources kinds for all providers" ret = {} for provider in self.values(): res = provider.resources_kind for name, config in res.items(): ret[name] = config or {} return ret def get_resource_configs(self): "Returns resources configurations for all providers" ret = {} for provider in self.values(): res = provider.resources_conf for name, config in res.items(): ret[name] = config or {} return ret def get_services_configs(self): ret = {} for prov_name, provider in self.items(): ret.update(provider.services_confs) return ret # def get_catalog_resources_inst(self): # ret = {} # for provider in self.providers.values(): # # res = provider.resources_def # for name, config in provider.resources_inst.items(): # ret[name] = config # return ret ######## BETA def expand_inputs(payload): "Expand dict for each of its list value" ret = [] expanded_keys = [key for key, val in payload.items() if isinstance(val, list)] return for exp_key in expanded_keys: items = len(payload[exp_key]) for idx in range(0, items): tmp = copy(payload) for subkey in expanded_keys: tmp[subkey] = payload[subkey][idx] ret.append(tmp) # V1 # for idx, exp_key in enumerate(expanded_keys): # tmp = copy(payload) # tmp[exp_key] = payload[exp_key][idx] # ret.append(tmp) # for key, val in payload.items(): # if isinstance(val, list): # # Expand # pass print("expanded_keys", expanded_keys) # pprint (ret) return ret