Example #1
0
 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
Example #2
0
 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)
Example #3
0
    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