Skip to content

Commit df36094

Browse files
committed
Pass the event tag and stamp explicitly when calling saf.utils.eventbus._construct_event()
Signed-off-by: Pedro Algarvio <[email protected]>
1 parent f1d2fd5 commit df36094

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

changelog/68.improvement.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
Several improvements to the project
22

33
* When loading plugin configs, catch `KeyError` on unavailable plugins and list all available.
4+
* Pass the event tag and stamp explicitly when calling `saf.utils.eventbus._construct_event()`

src/saf/utils/eventbus.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@
1919
from saf.models import SaltEvent
2020

2121
if TYPE_CHECKING:
22+
from datetime import datetime
2223
from queue import Queue
2324

2425
log = logging.getLogger(__name__)
2526

2627

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:
2829
"""
2930
Construct a :py:class:`~saf.models.SaltEvent` from a salt event payload.
3031
"""
@@ -37,9 +38,9 @@ def _construct_event(event_data: dict[str, Any]) -> SaltEvent | None:
3738
if key.startswith("_"):
3839
event_data.pop(key)
3940
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,
4344
raw_data=event_raw_data,
4445
)
4546
log.debug("Constructed SaltEvent: %s", salt_event)
@@ -80,9 +81,6 @@ def _process_events(
8081
for tag in tags:
8182
try:
8283
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"]
8684
# Unwrap the nested data key/value pair if needed
8785
if "data" in beacon_event_data["data"]:
8886
beacon_event_data["data"] = beacon_event_data["data"].pop(
@@ -93,7 +91,11 @@ def _process_events(
9391
beacon_event_data["tag"],
9492
beacon_event_data["data"],
9593
)
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+
)
9799
if salt_event:
98100
events_queue.put_nowait(salt_event)
99101
# We found a matching tag, stop iterating tags
@@ -109,7 +111,7 @@ def _process_events(
109111
for tag in tags:
110112
if fnmatch.fnmatch(event_tag, tag):
111113
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)
113115
if salt_event:
114116
events_queue.put_nowait(salt_event)
115117
# We found a matching tag, stop iterating tags

0 commit comments

Comments
 (0)