diff mbox series

[ovs-dev,v3,10/18] python: add a json encoder to flow fields

Message ID 20220311152128.3988946-11-amorenoz@redhat.com
State Changes Requested
Headers show
Series python: add flow parsing library | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/intel-ovs-compilation success test: success
ovsrobot/github-robot-_Build_and_Test success github build: passed

Commit Message

Adrian Moreno March 11, 2022, 3:21 p.m. UTC
The json encoder can be used to convert Flows to json.

Acked-by: Eelco Chaudron <echaudro@redhat.com>
Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
---
 python/ovs/flows/decoders.py | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
diff mbox series

Patch

diff --git a/python/ovs/flows/decoders.py b/python/ovs/flows/decoders.py
index 73d28e057..7378d4176 100644
--- a/python/ovs/flows/decoders.py
+++ b/python/ovs/flows/decoders.py
@@ -5,6 +5,7 @@  A decoder is generally a callable that accepts a string and returns the value
 object.
 """
 
+import json
 import netaddr
 import re
 
@@ -522,3 +523,16 @@  def decode_nat(value):
             result[flag] = True
 
     return result
+
+
+class FlowEncoder(json.JSONEncoder):
+    """FlowEncoder is a json.JSONEncoder instance that can be used to
+    serialize flow fields."""
+
+    def default(self, obj):
+        if isinstance(obj, Decoder):
+            return obj.to_json()
+        elif isinstance(obj, netaddr.IPAddress):
+            return str(obj)
+
+        return json.JSONEncoder.default(self, obj)