in curator/indexlist.py [0:0]
def iterate_filters(self, filter_dict):
"""
Iterate over the filters defined in ``config`` and execute them.
:param filter_dict: The configuration dictionary
.. note:: ``filter_dict`` should be a dictionary with the following form:
.. code-block:: python
{ 'filters' : [
{
'filtertype': 'the_filter_type',
'key1' : 'value1',
...
'keyN' : 'valueN'
}
]
}
"""
self.loggit.debug('Iterating over a list of filters')
# Make sure we actually _have_ filters to act on
if 'filters' not in filter_dict or len(filter_dict['filters']) < 1:
self.loggit.info('No filters in config. Returning unaltered object.')
return
self.loggit.debug('All filters: %s', filter_dict['filters'])
for fil in filter_dict['filters']:
self.loggit.debug('Top of the loop: %s', self.indices)
self.loggit.debug('Un-parsed filter args: %s', fil)
# Make sure we got at least this much in the configuration
chk = SchemaCheck(
fil, filterstructure(), 'filter', 'IndexList.iterate_filters'
).result()
msg = f'Parsed filter args: {chk}'
self.loggit.debug(msg)
method = self.__map_method(fil['filtertype'])
del fil['filtertype']
# If it's a filtertype with arguments, update the defaults with the
# provided settings.
if fil:
self.loggit.debug('Filter args: %s', fil)
self.loggit.debug('Pre-instance: %s', self.indices)
method(**fil)
self.loggit.debug('Post-instance: %s', self.indices)
else:
# Otherwise, it's a settingless filter.
method()