@@ -336,6 +336,21 @@ class ODPFlow(Flow):
**ODPFlow._tnl_action_decoder_args(),
}
+ _decoders["sample"] = nested_kv_decoder(
+ KVDecoders(
+ {
+ "sample": (lambda x: float(x.strip("%"))),
+ "actions": nested_kv_decoder(
+ KVDecoders(
+ decoders=_decoders,
+ default_free=decode_free_output,
+ ),
+ is_list=True,
+ ),
+ }
+ )
+ )
+
_decoders["clone"] = nested_kv_decoder(
KVDecoders(decoders=_decoders, default_free=decode_free_output),
is_list=True,
@@ -343,20 +358,6 @@ class ODPFlow(Flow):
return {
**_decoders,
- "sample": nested_kv_decoder(
- KVDecoders(
- {
- "sample": (lambda x: float(x.strip("%"))),
- "actions": nested_kv_decoder(
- KVDecoders(
- decoders=_decoders,
- default_free=decode_free_output,
- ),
- is_list=True,
- ),
- }
- )
- ),
"check_pkt_len": nested_kv_decoder(
KVDecoders(
{
@@ -569,6 +569,20 @@ def do_test_section(input_string, section, expected):
),
],
),
+ (
+ "actions=LOCAL,clone(sample(probability=123))",
+ [
+ KeyValue("output", {"port": "LOCAL"}),
+ KeyValue(
+ "clone",
+ [
+ {"sample": {
+ "probability": 123,
+ }},
+ ]
+ ),
+ ],
+ ),
(
"actions=doesnotexist(1234)",
ParseError,
Add the sample action to those that can be called in nested actions (such as clone). Signed-off-by: Adrian Moreno <amorenoz@redhat.com> --- python/ovs/flow/odp.py | 29 +++++++++++++++-------------- python/ovs/tests/test_ofp.py | 14 ++++++++++++++ 2 files changed, 29 insertions(+), 14 deletions(-)