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)
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)
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
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()
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()
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)
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]
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))