[BUG] EventEngine alert export crashes on any alert from a device that is a member of a device group #2229
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Describe the bug
Enabling an export script in
eventengine.conf
(as one would do to export alerts to Argus) causes the eventengine to sometimes fail to process alerts due to a serialization error.Apparently, Django 2.2 changes the behavior of
QuerySet.values_list()
, so that it no longer returns alist
, but aValuesListQuerySet
object. NAV's serializer definitions for alerts uses a call tovalues_list
to generate a list of Device Groups that a device is a member of. If the result is an empty QuerySet, everything is just peachy. If, however, the alert comes from a device that is a member of any device group,json.dumps
will be asked to dump aValuesListQuerySet
instead of aNone
value, which it can't, and aTypeError
is raised.To Reproduce
Steps to reproduce the behavior:
export=/bin/cat
ineventengine.conf
nav restart eventengine
tools/eventgenerators/boxstate.py
to inject a fake boxDown event for a device that is a member of any device groupeventengine.log
Expected behavior
Serialization should be able to produce a list of device group names, as it did in NAV 5.0.
Traceback
Environment (please complete the following information):