Generic Adder

This presentations goal it to introduce the features of the Generic Adder and how to configure it.

The challenge

I want add fields or values depending on a matching filter.

from this:

[24]:
document = {
    'message': {
        "time_in_ms": "bla",
        "tags": ["hello"]
        }
    }

to this:

[25]:
expected = {
    'message': {
        "time_in_ms": "bla",
        "tags": ["hello", "new"]
        }
    }

Create rule and processor

create the rule:

[ ]:

create the processor config:

[26]:
processor_config = {
    "almighty generic adder":{
        "type": "generic_adder",
        "rules": [{"filter": "*", "generic_adder": {"extend_target_list": True, "add": {"message.tags": "New"}} }],
        }
    }

create the processor with the factory:

[27]:
from unittest import mock
from logprep.factory import Factory

mock_logger = mock.MagicMock()
calculator = Factory.create(processor_config)
calculator
[27]:
generic_adder

Process event

[28]:
from copy import deepcopy
mydocument = deepcopy(document)


print(f"before: {mydocument}")
calculator.process(mydocument)
print(f"after: {mydocument}")
print(mydocument == expected)
before: {'message': {'time_in_ms': 'bla', 'tags': ['hello']}}
after: {'message': {'time_in_ms': 'bla', 'tags': ['hello', 'New']}}
False