Processors Plugins
Processors used to process loaded data before its rendered.
Multitemplate Processor
Plugin reference name: multitemplate
Processor to extract multiple template dictionaries from each data item based on suffix values.
Takes a list of dictionaries:
[{'device': 'r1',
'hostname': 'r1',
'lo0_ip': '1.1.1.1',
'lo0_ip_rollback': '1.1.1.11',
'template': 'test_path/device_base',
'template_rollback': 'test_path/device_base_rollback'},
{'device:a': 'r1',
'device:b': 'r2',
'interface:a': 'Eth1',
'interface:b': 'Eth1',
'ip:a': '10.0.0.1',
'ip:b': '10.0.0.2',
'mask': 24,
'template:a': 'test_path/interf_cfg',
'template:b': 'test_path/interf_cfg_b'}]
Returns:
[{'device': 'r1',
'hostname': 'r1',
'lo0_ip': '1.1.1.11',
'template': 'test_path/device_base_rollback'},
{'device': 'r1',
'hostname': 'r1',
'lo0_ip': '1.1.1.1',
'template': 'test_path/device_base'},
{'device': 'r1',
'interface': 'Eth1',
'ip': '10.0.0.1',
'mask': 24,
'template': 'test_path/interf_cfg'},
{'device': 'r2',
'interface': 'Eth1',
'ip': '10.0.0.2',
'mask': 24,
'template': 'test_path/interf_cfg_b'}]
Where template_name_key
is template
.
Multitemplate processor detects suffixes/endings, :a
and :b
in this case, and uses them to split dictionaries apart,
populating them with values corresponding to certain suffixes.
Key names without suffixes considered as common values and shared across all dictionaries.
- ttr.plugins.processors.multitemplate_processor.process(data, template_name_key, **kwargs)
Function to process multitemplate data items.
- Parameters
data – (list), data to process - list of dictionaries
template_name_key – string, name of the template key
kwargs – (dict) any additional arguments ignored
Templates Split Processor
Plugin reference name: templates_split
Processor to support definition of several templates separated by
delimiter (default - ;
) consequentially splitting data into
several items with dedicated template.
Takes a list of dictionaries, for example:
[{'device': 'r1',
'hostname': 'r1',
'lo0_ip': '1.1.1.1',
'lo0_ip_rollback': '1.1.1.11',
'template': 'device_base; isis_base; bgp_base'},
{'device': 'r2',
'hostname': 'r2',
'lo0_ip': '1.1.1.2',
'lo0_ip_rollback': '1.1.1.22',
'template': 'device_base; bgp_base'}]
After splitting templates templates_split
processor returns:
[{'device': 'r1',
'hostname': 'r1',
'lo0_ip': '1.1.1.1',
'lo0_ip_rollback': '1.1.1.11',
'template': 'device_base'},
{'device': 'r1',
'hostname': 'r1',
'lo0_ip': '1.1.1.1',
'lo0_ip_rollback': '1.1.1.11',
'template': 'isis_base'},
{'device': 'r1',
'hostname': 'r1',
'lo0_ip': '1.1.1.1',
'lo0_ip_rollback': '1.1.1.11',
'template': 'bgp_base'},
{'device': 'r2',
'hostname': 'r2',
'lo0_ip': '1.1.1.2',
'lo0_ip_rollback': '1.1.1.22',
'template': 'device_base'},
{'device': 'r2',
'hostname': 'r2',
'lo0_ip': '1.1.1.2',
'lo0_ip_rollback': '1.1.1.22',
'template': 'bgp_base'}]
- ttr.plugins.processors.templates_split.process(data, template_name_key, split_char=';', **kwargs)
Function to split templates. e.g. if
template_name_key
value contains several templates, this processor will split them usingsplit_char
and produce data item for each template coping data accordingly.- Parameters
data – list of dictionaries to process
template_name_key – string, name of the template key
split_char – str, character to use to split template names
kwargs – (dict) any additional arguments ignored
Filtering Processor
Plugin reference name: filtering
Processor to filter data using glob patterns. Filtering done
against result_name_key
values.
Takes a list of dictionaries, for example:
[{'device': 'rr21',
'lo0_ip': '1.1.1.1',
'lo0_ip_rollback': '1.1.1.11',
'template': 'device_base},
{'device': 'core-1',
'lo0_ip': '1.1.1.2',
'lo0_ip_rollback': '1.1.1.22',
'template': 'device_base}]
If filter pattern is core-*
and result_name_key
is device
,
filtering
processor will return:
[{'device': 'core-1',
'lo0_ip': '1.1.1.2',
'lo0_ip_rollback': '1.1.1.22',
'template': 'device_base}]
- ttr.plugins.processors.filtering.process(data, result_name_key, filters=None, **kwargs)
Function to filter data using glob patterns.
- Parameters
data – list of dictionaries to process
filters – list, list of glob patterns to use for filtering. Filtering successful if at list one pattern matches
result_name_key – (str) name of the key in data items value of which should be used as a key in results dictionary, default
device
. Filtering done against values defined underresult_name_key
kwargs – (dict) any additional arguments ignored