def get_parameter_values(self, group_name): if group_name not in self._groups: self.log.info("Unknown parameter group: %s", group_name) return {} result = {} group = self._groups[group_name] multi_level_access = MultiLevelDictionaryAccess(result) for parameter in group["parameters"].values(): value = parameter["get_func"]() try: multi_level_access.set_value(parameter["name"], value) except TypeError as exc: self.log.error( "Failed to get parameter '%s' for group '%s': %s", parameter["name"], group_name, exc) return result
def set_parameter_values(self, group_name, value_dict): if group_name not in self._groups: self.log.info("Unknown parameter group: %s", group_name) return group = self._groups[group_name] multi_level_access = MultiLevelDictionaryAccess(value_dict) for parameter in group["parameters"].values(): try: value = multi_level_access.get_value(parameter["name"]) except KeyError: # the incoming value dictionary does not contain the key - we can skip it pass except TypeError as exc: # this should not happen: the value dictionary is malformed self.log.error( "Failed to get parameter '%s' for group '%s': %s", parameter["name"], group_name, exc) else: parameter["set_func"](value)
def get_default_parameter_values(self, group_name, set_name=None): """ retrieve the default values of a given parameter group @param group_name: name of the parameter group """ result = {} if group_name not in self._groups: self.log.info( "Default Parameter Values: unknown parameter group: %s", group_name) return result group = self._groups[group_name] if not group["sets"]: self.log.info( "Default Parameter Values: missing parameter sets in group: %s", group_name) return result multi_level_access = MultiLevelDictionaryAccess(result) if set_name is None: default_set = sorted(group["sets"].values(), key=lambda item: item["weight"])[0] else: try: default_set = group["sets"][set_name] except KeyError: self.log.warning( "Default Parameter Values: failed to find request set: %s", set_name) return result for key, value in default_set["parameters"].items(): try: multi_level_access.set_value(key, value) except TypeError as exc: self.log.error( "Failed to get default parameter '%s' for group '%s': %s", key, group_name, exc) return result