19
19
from saf .models import SaltEvent
20
20
21
21
if TYPE_CHECKING :
22
+ from datetime import datetime
22
23
from queue import Queue
23
24
24
25
log = logging .getLogger (__name__ )
25
26
26
27
27
- def _construct_event (event_data : dict [str , Any ]) -> SaltEvent | None :
28
+ def _construct_event (tag : str , stamp : datetime , event_data : dict [str , Any ]) -> SaltEvent | None :
28
29
"""
29
30
Construct a :py:class:`~saf.models.SaltEvent` from a salt event payload.
30
31
"""
@@ -37,9 +38,9 @@ def _construct_event(event_data: dict[str, Any]) -> SaltEvent | None:
37
38
if key .startswith ("_" ):
38
39
event_data .pop (key )
39
40
salt_event = SaltEvent (
40
- tag = event_data [ " tag" ] ,
41
- stamp = event_raw_data [ "_stamp" ] ,
42
- data = event_data [ "data" ] ,
41
+ tag = tag ,
42
+ stamp = stamp ,
43
+ data = event_data . get ( "data" ) or event_data ,
43
44
raw_data = event_raw_data ,
44
45
)
45
46
log .debug ("Constructed SaltEvent: %s" , salt_event )
@@ -80,9 +81,6 @@ def _process_events(
80
81
for tag in tags :
81
82
try :
82
83
if fnmatch .fnmatch (beacon_event_data ["tag" ], tag ):
83
- if "_stamp" not in beacon_event_data :
84
- # Wrapped beacon data usually lack the _stamp key/value pair. Use parent's.
85
- beacon_event_data ["_stamp" ] = event_data ["_stamp" ]
86
84
# Unwrap the nested data key/value pair if needed
87
85
if "data" in beacon_event_data ["data" ]:
88
86
beacon_event_data ["data" ] = beacon_event_data ["data" ].pop (
@@ -93,7 +91,11 @@ def _process_events(
93
91
beacon_event_data ["tag" ],
94
92
beacon_event_data ["data" ],
95
93
)
96
- salt_event = _construct_event (beacon_event_data )
94
+ salt_event = _construct_event (
95
+ beacon_event_data ["tag" ],
96
+ event_data ["_stamp" ],
97
+ beacon_event_data ,
98
+ )
97
99
if salt_event :
98
100
events_queue .put_nowait (salt_event )
99
101
# We found a matching tag, stop iterating tags
@@ -109,7 +111,7 @@ def _process_events(
109
111
for tag in tags :
110
112
if fnmatch .fnmatch (event_tag , tag ):
111
113
log .debug ("Matching event; TAG: %r DATA: %r" , event_tag , event_data )
112
- salt_event = _construct_event (event_data )
114
+ salt_event = _construct_event (event_tag , event_data [ "_stamp" ], event_data )
113
115
if salt_event :
114
116
events_queue .put_nowait (salt_event )
115
117
# We found a matching tag, stop iterating tags
0 commit comments