mirror of
https://github.com/openvswitch/ovs
synced 2025-09-05 08:45:23 +00:00
Most of ofproto and dpif flows are based on key-value pairs. These key-value pairs can be represented in several ways, eg: key:value, key=value, key(value). Add the following classes that allow parsing of key-value strings: * KeyValue: holds a key-value pair * KeyMetadata: holds some metadata associated with a KeyValue such as the original key and value strings and their position in the global string * KVParser: is able to parse a string and extract it's key-value pairs as KeyValue instances. Before creating the KeyValue instance it tries to decode the value via the KVDecoders * KVDecoders holds a number of decoders that KVParser can use to decode key-value pairs. It accepts a dictionary of keys and callables to allow users to specify what decoder (i.e: callable) to use for each key Also, flake8 seems to be incorrectly reporting an error (E203) in: "slice[index + offset : index + offset]" which is PEP8 compliant. So, ignore this error. Acked-by: Terry Wilson <twilson@redhat.com> Acked-by: Eelco Chaudron <echaudro@redhat.com> Signed-off-by: Adrian Moreno <amorenoz@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
19 lines
411 B
Python
19 lines
411 B
Python
"""Defines helpful decoders that can be used to decode information from the
|
|
flows.
|
|
|
|
A decoder is generally a callable that accepts a string and returns the value
|
|
object.
|
|
"""
|
|
|
|
|
|
def decode_default(value):
|
|
"""Default decoder.
|
|
|
|
It tries to convert into an integer value and, if it fails, just
|
|
returns the string.
|
|
"""
|
|
try:
|
|
return int(value, 0)
|
|
except ValueError:
|
|
return value
|