summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorAdrian Moreno <amorenoz@redhat.com>2022-12-19 17:13:49 +0100
committerIlya Maximets <i.maximets@ovn.org>2022-12-21 18:36:02 +0100
commitc395e9810e07ab957676b4f75e9cacd39dca6839 (patch)
tree40d0681df1edc90dd7f72a1cd839980ab0a4b4de /python
parent542fdad701403c11cfe8356957f934fa657c1742 (diff)
downloadopenvswitch-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.py6
-rw-r--r--python/ovs/tests/test_ofp.py13
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,
),