Example #1
0
    def set(self,
            key: str,
            value: Any,
            owners: Optional[OptionOwners] = None) -> None:
        if not self.is_setup:
            return
        if not self.can_handle(key=key):
            raise ConfException(
                "{} service request an unknown key `{}`.".format(
                    self.service_name, key))
        if value is None:
            raise ConfException(
                "{} service requires a value for key `{}` to set.".format(
                    self.service_name, key))
        option = self.get_option(key=key, owners=owners)
        # Convert value
        try:
            value = option.parse(value=value)
        except PolyaxonException as e:
            raise ConfException(e)

        store = self.get_store(option=option)
        store.set(option=option, value=value, owners=owners)
        # Cache value
        self.cache_manager.set_to_cache(key=key,
                                        value=value,
                                        ttl=option.cache_ttl,
                                        owners=owners)
Example #2
0
    def get(
        self,
        key: str,
        check_cache: bool = True,
        to_dict: bool = False,
        owners: Optional[OptionOwners] = None,
    ) -> Any:
        if not self.is_setup:
            return
        if not self.can_handle(key=key):
            raise ConfException(
                "{} service request an unknown key `{}`.".format(
                    self.service_name, key))

        option = self.get_option(key=key, owners=owners)

        if check_cache:
            value = self.cache_manager.get_from_cache(key=key, owners=owners)
            if self.cache_manager.is_valid_value(value=value):
                return self._get_value(option=option,
                                       value=value,
                                       to_dict=to_dict)

        store = self.get_store(option=option)
        value = store.get(option=option, owners=owners)

        # Cache value
        self.cache_manager.set_to_cache(key=key,
                                        value=value,
                                        ttl=option.cache_ttl,
                                        owners=owners)

        return self._get_value(option=option, value=value, to_dict=to_dict)
Example #3
0
 def get_option(self, key: str, owners: OptionOwners) -> Option:
     option = self.option_manager.get(key=key)
     if self.check_ownership and not option.is_global():
         if not owners or not [i for i in owners if i]:
             raise ConfException("Option `{}` requires an owner.".format(
                 option.key))
     return option
Example #4
0
 def get(self, option: Option, **kwargs) -> Any:  # pylint:disable=arguments-differ
     if hasattr(self.settings, option.key):
         return getattr(self.settings, option.key)
     if not option.is_optional:
         raise ConfException(
             "The config option `{}` was not found or not correctly "
             "set on the settings backend.".format(option.key))
     return option.default_value()
Example #5
0
 def get(self, option: Option, **kwargs) -> Any:  # pylint:disable=arguments-differ
     value = os.environ.get(option.key)
     if value:
         return option.parse(value)
     if not option.is_optional:
         raise ConfException(
             "The config option `{}` was not found or not correctly "
             "set on the settings backend.".format(option.key))
     return option.default_value()
Example #6
0
    def delete(self, key: str, owners: Optional[OptionOwners] = None) -> None:
        if not self.is_setup:
            return
        if not self.can_handle(key=key):
            raise ConfException(
                "{} service request an unknown key `{}`.".format(
                    self.service_name, key))

        option = self.get_option(key=key, owners=owners)
        store = self.get_store(option=option)
        store.delete(option=option, owners=owners)
        # Clear Cache key
        self.cache_manager.clear_key(key=key, owners=owners)
Example #7
0
    def get_store(self, option: Option) -> Any:
        if option.store not in self.stores:
            raise ConfException("Option `{}` has an invalid store.".format(
                option.key))

        return self.stores[option.store]
Example #8
0
 def delete(  # pylint:disable=arguments-differ
         self, option: Option, **kwargs) -> None:
     raise ConfException(
         "The settings backend does not allow to delete values, "
         "are you sure the key `{}` was correctly defined.".format(
             option.key))