loxi-prep: use plain lists to hold OF actions
Some callsites needed to be changed because they depended on action_list.append
taking a shallow copy.
diff --git a/tests/flow_query.py b/tests/flow_query.py
index ee72fc3..2d5c7b5 100644
--- a/tests/flow_query.py
+++ b/tests/flow_query.py
@@ -69,7 +69,6 @@
import oftest.controller as controller
import ofp
import oftest.dataplane as dataplane
-import oftest.action_list as action_list
import oftest.parse as parse
import pktact
import oftest.base_tests as base_tests
@@ -333,7 +332,7 @@
# - idle_timeout
# - hard_timeout
# - priority
- # - action_list
+ # - actions
def __init__(self):
self.priority = 0
@@ -341,7 +340,7 @@
self.match.wildcards = ofp.OFPFW_ALL
self.idle_timeout = 0
self.hard_timeout = 0
- self.actions = action_list.action_list()
+ self.actions = []
# {pri, match} is considered a flow key
def key_equal(self, x):
@@ -396,8 +395,8 @@
if test_param_get("conservative_ordered_actions", True):
# Compare actions lists as unordered
- aa = copy.deepcopy(x.actions.actions)
- for a in self.actions.actions:
+ aa = copy.deepcopy(x.actions)
+ for a in self.actions:
i = 0
while i < len(aa):
if a == aa[i]:
@@ -473,7 +472,7 @@
result = result + (", cookie=%d" % self.cookie)
result = result + (", idle_timeout=%d" % self.idle_timeout)
result = result + (", hard_timeout=%d" % self.hard_timeout)
- for a in self.actions.actions:
+ for a in self.actions:
result = result + (", action=%s" % ofp.ofp_action_type_map[a.type])
if a.type == ofp.OFPAT_OUTPUT:
result = result + ("(%d)" % (a.port))
@@ -519,7 +518,7 @@
set_vlanf = False
strip_vlanf = False
- self.actions = action_list.action_list()
+ self.actions = []
for a in actions:
act = None
if a == ofp.OFPAT_OUTPUT:
@@ -627,7 +626,7 @@
actions = shuffle(actions)
- self.actions = action_list.action_list()
+ self.actions = []
for a in actions:
if a == ofp.OFPAT_OUTPUT:
# TBD - Output actions are clustered in list, spread them out?
diff --git a/tests/pktact.py b/tests/pktact.py
index 9e81af6..bd3e79f 100644
--- a/tests/pktact.py
+++ b/tests/pktact.py
@@ -501,7 +501,6 @@
match.wildcards &= ~ofp.OFPFW_IN_PORT
self.assertTrue(match is not None,
"Could not generate flow match from pkt")
- act = ofp.action.output()
for idx in range(len(of_ports)):
delete_all_flows(self.controller)
@@ -518,10 +517,8 @@
request = ofp.message.flow_mod()
request.match = match
request.buffer_id = 0xffffffff
- act.port = egress_port1
- request.actions.append(act)
- act.port = egress_port2
- request.actions.append(act)
+ request.actions.append(ofp.action.output(port=egress_port1))
+ request.actions.append(ofp.action.output(port=egress_port2))
# logging.info(request.show())
logging.info("Inserting flow")
@@ -559,7 +556,6 @@
match.wildcards &= ~ofp.OFPFW_IN_PORT
self.assertTrue(match is not None,
"Could not generate flow match from pkt")
- act = ofp.action.output()
for ingress_port in of_ports:
delete_all_flows(self.controller)
@@ -574,8 +570,7 @@
for egress_port in of_ports:
if egress_port == ingress_port:
continue
- act.port = egress_port
- request.actions.append(act)
+ request.actions.append(ofp.action.output(port=egress_port))
logging.debug(request.show())
logging.info("Inserting flow")
@@ -611,7 +606,6 @@
match.wildcards &= ~ofp.OFPFW_IN_PORT
self.assertTrue(match is not None,
"Could not generate flow match from pkt")
- act = ofp.action.output()
for ingress_port in of_ports:
delete_all_flows(self.controller)
@@ -623,6 +617,7 @@
request.match = match
request.buffer_id = 0xffffffff
for egress_port in of_ports:
+ act = ofp.action.output()
if egress_port == ingress_port:
act.port = ofp.OFPP_IN_PORT
else:
@@ -713,7 +708,6 @@
match.wildcards &= ~ofp.OFPFW_IN_PORT
self.assertTrue(match is not None,
"Could not generate flow match from pkt")
- act = ofp.action.output()
for ingress_port in of_ports:
delete_all_flows(self.controller)
@@ -724,10 +718,8 @@
request = ofp.message.flow_mod()
request.match = match
request.buffer_id = 0xffffffff
- act.port = ofp.OFPP_FLOOD
- request.actions.append(act)
- act.port = ofp.OFPP_IN_PORT
- request.actions.append(act)
+ request.actions.append(ofp.action.output(port=ofp.OFPP_FLOOD))
+ request.actions.append(ofp.action.output(port=ofp.OFPP_IN_PORT))
logging.info(request.show())
logging.info("Inserting flow")
@@ -804,7 +796,6 @@
match.wildcards &= ~ofp.OFPFW_IN_PORT
self.assertTrue(match is not None,
"Could not generate flow match from pkt")
- act = ofp.action.output()
for ingress_port in of_ports:
delete_all_flows(self.controller)
@@ -815,10 +806,8 @@
request = ofp.message.flow_mod()
request.match = match
request.buffer_id = 0xffffffff
- act.port = ofp.OFPP_ALL
- request.actions.append(act)
- act.port = ofp.OFPP_IN_PORT
- request.actions.append(act)
+ request.actions.append(ofp.action.output(port=ofp.OFPP_ALL))
+ request.actions.append(ofp.action.output(port=ofp.OFPP_IN_PORT))
logging.info(request.show())
logging.info("Inserting flow")