diff options
author | Adrian Moreno <amorenoz@redhat.com> | 2022-12-19 17:13:49 +0100 |
---|---|---|
committer | Ilya Maximets <i.maximets@ovn.org> | 2022-12-21 18:36:02 +0100 |
commit | c395e9810e07ab957676b4f75e9cacd39dca6839 (patch) | |
tree | 40d0681df1edc90dd7f72a1cd839980ab0a4b4de /python | |
parent | 542fdad701403c11cfe8356957f934fa657c1742 (diff) | |
download | openvswitch-c395e9810e07ab957676b4f75e9cacd39dca6839.tar.gz |
python: Interpret free keys as output in clone.
clone-like actions can also output to ports by specifying the port name.
Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Diffstat (limited to 'python')
-rw-r--r-- | python/ovs/flow/ofp.py | 6 | ||||
-rw-r--r-- | python/ovs/tests/test_ofp.py | 13 |
2 files changed, 17 insertions, 2 deletions
diff --git a/python/ovs/flow/ofp.py b/python/ovs/flow/ofp.py index bf832f71b..eac8d0851 100644 --- a/python/ovs/flow/ofp.py +++ b/python/ovs/flow/ofp.py @@ -402,10 +402,12 @@ class OFPFlow(Flow): return { "learn": decode_learn(action_decoders), "clone": nested_kv_decoder( - KVDecoders(action_decoders, ignore_case=True), is_list=True + KVDecoders(action_decoders, default_free=decode_free_output, + ignore_case=True), is_list=True ), "write_actions": nested_kv_decoder( - KVDecoders(action_decoders, ignore_case=True), is_list=True + KVDecoders(action_decoders, default_free=decode_free_output, + ignore_case=True), is_list=True ), } diff --git a/python/ovs/tests/test_ofp.py b/python/ovs/tests/test_ofp.py index e17188e2b..27bcf0c47 100644 --- a/python/ovs/tests/test_ofp.py +++ b/python/ovs/tests/test_ofp.py @@ -533,6 +533,19 @@ from ovs.flow.decoders import EthMask, IPMask, decode_mask ], ), ( + "actions=LOCAL,clone(myport,CONTROLLER)", + [ + KeyValue("output", {"port": "LOCAL"}), + KeyValue( + "clone", + [ + {"output": {"port": "myport"}}, + {"output": {"port": "CONTROLLER"}}, + ] + ), + ], + ), + ( "actions=doesnotexist(1234)", ParseError, ), |