def add_single_item(self, name, values, ctx=None): """ Add a single KB element with one or more values. Arguments: name (str): key name of a list. value (list): Elements to add to the key. ctx (redis obj, optional): Redis context to use. """ if not name: raise RequiredArgument('add_list_item requires a name argument.') if not values: raise RequiredArgument('add_list_item requires a value argument.') if not ctx: ctx = self.get_kb_context() ctx.rpush(name, *set(values))
def remove_list_item(self, key, value, ctx=None): """ Remove item from the key list. Arguments: key (str): key name of a list. value (str): Value to be removed from the key. ctx (redis obj, optional): Redis context to use. """ if not key: raise RequiredArgument('remove_list_item requires a key argument.') if not value: raise RequiredArgument('remove_list_item requires a value ' 'argument.') if not ctx: ctx = self.get_kb_context() ctx.lrem(key, count=LIST_ALL, value=value)
def set_single_item(self, name, value, ctx=None): """ Set (replace) a single KB element. Arguments: name (str): key name of a list. value (list): New elements to add to the key. ctx (redis obj, optional): Redis context to use. """ if not name: raise RequiredArgument('set_single_item requires a name argument.') if not value: raise RequiredArgument('set_single_item requires a value argument.') if not ctx: ctx = self.get_kb_context() pipe = ctx.pipeline() pipe.delete(name) pipe.rpush(name, *set(value)) pipe.execute()
def set_redisctx(self, ctx): """ Set the current rediscontext. Arguments: ctx (object): Redis context to be set as default. """ if not ctx: raise RequiredArgument('set_redisctx: A valid Redis context is ' 'required.') self.rediscontext = ctx
def select_kb(self, ctx, kbindex, set_global=False): """ Use an existent redis connection and select a redis kb. If needed, set the ctx as global. Arguments: ctx (redis obj): Redis context to use. kbindex (str): The new kb to select set_global (bool, optional): If should be the global context. """ if not ctx: raise RequiredArgument('select_kb(): A valid Redis context is ' 'required.') if not kbindex: raise RequiredArgument('select_kb(): A valid KB index is ' 'required.') ctx.execute_command('SELECT ' + str(kbindex)) if set_global: self.set_redisctx(ctx) self.db_index = str(kbindex)
def get_single_item(self, name, ctx=None, index=LIST_FIRST_POS): """ Get a single KB element. Arguments: name (str): key name of a list. ctx (redis obj, optional): Redis context to use. index (int, optional): index of the element to be return. Return an element. """ if not name: raise RequiredArgument('get_single_item requires a name argument.') if not ctx: ctx = self.get_kb_context() return ctx.lindex(name, index)
def get_list_item(self, name, ctx=None, start=LIST_FIRST_POS, end=LIST_LAST_POS): """ Returns the specified elements from `start` to `end` of the list stored as `name`. Arguments: name (str): key name of a list. ctx (redis obj, optional): Redis context to use. start (int, optional): first range element to get. end (int, optional): last range element to get. Return List specified elements in the key. """ if not name: raise RequiredArgument('get_list_item requires a name argument.') if not ctx: ctx = self.get_kb_context() return ctx.lrange(name, start, end)
def get_elem_pattern_by_index(self, pattern, index=1, ctx=None): """ Get all items with index 'index', stored under a given pattern. Arguments: pattern (str): key pattern to match. index (int, optional): Index of the element to get from the list. ctx (redis obj, optional): Redis context to use. Return a list with the elements under the matched key and given index. """ if not pattern: raise RequiredArgument('get_elem_pattern_by_index ' 'requires a pattern argument.') if not ctx: ctx = self.get_kb_context() items = ctx.keys(pattern) elem_list = [] for item in items: elem_list.append([item, ctx.lindex(item, index)]) return elem_list
def get_pattern(self, pattern, ctx=None): """ Get all items stored under a given pattern. Arguments: pattern (str): key pattern to match. ctx (redis obj, optional): Redis context to use. Return a list with the elements under the matched key. """ if not pattern: raise RequiredArgument('get_pattern requires a pattern argument.') if not ctx: ctx = self.get_kb_context() items = ctx.keys(pattern) elem_list = [] for item in items: elem_list.append([ item, ctx.lrange(item, start=LIST_FIRST_POS, end=LIST_LAST_POS), ]) return elem_list