diff options
author | Numan Siddique <nusiddiq@redhat.com> | 2019-03-28 11:40:11 +0530 |
---|---|---|
committer | Ben Pfaff <blp@ovn.org> | 2019-04-16 08:18:56 -0700 |
commit | bddb73db78f19af7dcfbf251f979a23d17caaac5 (patch) | |
tree | c9757835ff04daf3aee4cb40c9703e49b1a663ba /tests | |
parent | 8256e80b828fec0cee62e6fa1ef5c90ebacd5181 (diff) | |
download | openvswitch-bddb73db78f19af7dcfbf251f979a23d17caaac5.tar.gz |
ovn-northd: Delete the references to gateway_chasss in SB DB
Previous patch in the series added the support in ovn-controller
to use ha_chassis_group table in SB DB to support HA chassis
and establishing BFD tunnels instead of the gateway_chassis table.
There is no need for ovn-northd to create any gateway_chassis
rows in SB DB. This patch does that and deletes the code
which is not required anymore.
This patch also now supports 'ha_chassis_group' to be associated
with a distributed logical router port and ignores 'gateway_chassis'
and 'redirect-chassis' if set along with 'ha_chassis_group'.
Acked-by: Mark Michelson <mmichels@redhat.com>
Acked-by: Han Zhou <hzhou8@ebay.com>
Signed-off-by: Numan Siddique <nusiddiq@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ovn-northd.at | 232 | ||||
-rw-r--r-- | tests/ovn.at | 175 |
2 files changed, 376 insertions, 31 deletions
diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at index b4e8995be..bff0ca48a 100644 --- a/tests/ovn-northd.at +++ b/tests/ovn-northd.at @@ -20,18 +20,22 @@ ovn-nbctl --wait=sb \ set Logical_Router_Port alice 'gateway_chassis=[@gc0,@gc1]' nb_gwc1_uuid=`ovn-nbctl --bare --columns _uuid find Gateway_Chassis name="alice_gw1"` -gwc1_uuid=`ovn-sbctl --bare --columns _uuid find Gateway_Chassis name="alice_gw1"` -gwc2_uuid=`ovn-sbctl --bare --columns _uuid find Gateway_Chassis name="alice_gw2"` +# With the new ha_chassis_group table added, there should be no rows in +# gateway_chassis table in SB DB. +AT_CHECK([ovn-sbctl list gateway_chassis | wc -l], [0], [0 +]) -echo "Port_Binding for cr-alice:" -ovn-sbctl find port_binding logical_port="cr-alice" -echo "Gateway_Chassis list:" -ovn-sbctl list Gateway_Chassis +# There should be one ha_chassis_group with the name "alice" +ha_chassi_grp_name=`ovn-sbctl --bare --columns name find \ +ha_chassis_group name="alice"` -AT_CHECK([ovn-sbctl --bare --columns gateway_chassis find port_binding logical_port="cr-alice" | grep $gwc1_uuid | wc -l], [0], [1 -]) -AT_CHECK([ovn-sbctl --bare --columns gateway_chassis find port_binding logical_port="cr-alice" | grep $gwc2_uuid | wc -l], [0], [1 +AT_CHECK([test $ha_chassi_grp_name = alice]) + +ha_chgrp_uuid=`ovn-sbctl --bare --columns _uuid find ha_chassis_group name=alice` + +AT_CHECK([ovn-sbctl --bare --columns ha_chassis_group find port_binding \ +logical_port="cr-alice" | grep $ha_chgrp_uuid | wc -l], [0], [1 ]) # There should be one ha_chassis_group with the name "alice" @@ -62,15 +66,35 @@ ha_ch_list=`echo $ha_ch_list | sed 's/ //g'` AT_CHECK([test "$ha_ch_list" = "$ha_ch"]) # delete the 2nd Gateway_Chassis on NBDB for alice port +gw_ch=`ovn-sbctl --bare --columns gateway_chassis find port_binding \ +logical_port="cr-alice"` +AT_CHECK([test "$gw_ch" = ""]) -ovn-nbctl --wait=sb set Logical_Router_Port alice gateway_chassis=${nb_gwc1_uuid} +ha_ch=`ovn-sbctl --bare --columns ha_chassis find ha_chassis_group` +ha_ch=`echo $ha_ch | sed 's/ //g'` +# Trim the spaces. +echo "ha ch in grp = $ha_ch" + +ha_ch_list='' +for i in `ovn-sbctl --bare --columns _uuid list ha_chassis | sort` +do + ha_ch_list="$ha_ch_list $i" +done + +# Trim the spaces. +ha_ch_list=`echo $ha_ch_list | sed 's/ //g'` + +AT_CHECK([test "$ha_ch_list" = "$ha_ch"]) -gwc1_uuid=`ovn-sbctl --bare --columns _uuid find Gateway_Chassis name="alice_gw1"` +# delete the 2nd Gateway_Chassis on NBDB for alice port +ovn-nbctl --wait=sb set Logical_Router_Port alice gateway_chassis=${nb_gwc1_uuid} -AT_CHECK([ovn-sbctl --bare --columns gateway_chassis find port_binding logical_port="cr-alice" | grep $gwc1_uuid | wc -l], [0], [1 +# There should be only 1 row in ha_chassis SB DB table. +AT_CHECK([ovn-sbctl --bare --columns _uuid list ha_chassis | wc -l], [0], [1 ]) -AT_CHECK([ovn-sbctl find Gateway_Chassis name=alice_gw2], [0], []) +AT_CHECK([ovn-sbctl list gateway_chassis | wc -l], [0], [0 +]) # There should be only 1 row in ha_chassis SB DB table. AT_CHECK([ovn-sbctl --bare --columns _uuid list ha_chassis | wc -l], [0], [1 @@ -80,10 +104,15 @@ AT_CHECK([ovn-sbctl --bare --columns _uuid list ha_chassis | wc -l], [0], [1 ovn-nbctl --wait=sb clear Logical_Router_Port alice gateway_chassis -# expect that the Gateway_Chassis doesn't exist anymore +# expect that the ha_chassis doesn't exist anymore +AT_CHECK([ovn-sbctl list gateway_chassis | wc -l], [0], [0 +]) -AT_CHECK([ovn-sbctl find Gateway_Chassis name=alice_gw1], [0], []) -AT_CHECK([ovn-sbctl find Gateway_Chassis name=alice_gw2], [0], []) +AT_CHECK([ovn-sbctl list ha_chassis | wc -l], [0], [0 +]) + +AT_CHECK([ovn-sbctl list ha_chassis_group | wc -l], [0], [0 +]) # expect that the ha_chassis doesn't exist anymore AT_CHECK([ovn-sbctl list ha_chassis | wc -l], [0], [0 @@ -105,19 +134,40 @@ ovn-nbctl --wait=sb lrp-add R1 bob 00:00:02:01:02:03 172.16.1.1/24 \ -- set Logical_Router_Port bob options:redirect-chassis="gw1" -# It should be converted to Gateway_Chassis entries in SBDB, and +# It should be converted to ha_chassis_group entries in SBDB, and # still redirect-chassis is kept for backwards compatibility -gwc1_uuid=`ovn-sbctl --bare --columns _uuid find Gateway_Chassis name="bob_gw1"` +AT_CHECK([ovn-sbctl list gateway_chassis | wc -l], [0], [0 +]) + +AT_CHECK([ovn-sbctl --bare --columns _uuid list ha_chassis | wc -l], [0], [1 +]) -AT_CHECK([ovn-sbctl --bare --columns gateway_chassis find port_binding logical_port="cr-bob" | grep $gwc1_uuid | wc -l], [0], [1 +AT_CHECK([ovn-sbctl --bare --columns _uuid list ha_chassis_group | wc -l], [0], [1 +]) + +# There should be one ha_chassis_group with the name "bob_gw1" +ha_chassi_grp_name=`ovn-sbctl --bare --columns name find \ +ha_chassis_group name="bob_gw1"` + +AT_CHECK([test $ha_chassi_grp_name = bob_gw1]) + +ha_chgrp_uuid=`ovn-sbctl --bare --columns _uuid find ha_chassis_group name=bob_gw1` + +AT_CHECK([ovn-sbctl --bare --columns ha_chassis_group find port_binding \ +logical_port="cr-bob" | grep $ha_chgrp_uuid | wc -l], [0], [1 ]) ovn-nbctl --wait=sb remove Logical_Router_Port bob options redirect-chassis -# expect that the Gateway_Chassis doesn't exist anymore +# expect that the ha_chassis/ha_chassis_group doesn't exist anymore AT_CHECK([ovn-sbctl find Gateway_Chassis name=bob_gw1], [0], []) +AT_CHECK([ovn-sbctl list ha_chassis | wc -l], [0], [0 +]) + +AT_CHECK([ovn-sbctl list ha_chassis_group | wc -l], [0], [0 +]) AT_CLEANUP @@ -347,8 +397,7 @@ ovn-nbctl --wait=sb ha-chassis-group-add hagrp1 # ovn-northd should not create HA chassis group and HA chassis rows # unless the HA chassis group in OVN NB DB is associated to -# a logical router port. ovn-northd still doesn't support -# associating a HA chassis group to a logical router port. +# a logical router port. AT_CHECK([ovn-sbctl --bare --columns name find ha_chassis_group name="hagrp1" \ | wc -l], [0], [0 ]) @@ -372,25 +421,113 @@ AT_CHECK([ovn-sbctl list ha_chassis | grep chassis | awk '{print $3}' \ | grep -v '-' | wc -l ], [0], [0 ]) -ovn-nbctl ha-chassis-group-del hagrp1 -OVS_WAIT_UNTIL([test 0 = `ovn-sbctl list ha_chassis_group | wc -l`]) -OVS_WAIT_UNTIL([test 0 = `ovn-sbctl list ha_chassis | wc -l`]) - -# Create a logical router port and attach Gateway chassis. -# ovn-northd should create HA chassis group rows in SB DB. +# Create a logical router port and attach ha chassis group. ovn-nbctl lr-add lr0 +ovn-nbctl lrp-add lr0 lr0-public 00:00:20:20:12:13 172.168.0.100/24 + +hagrp1_uuid=`ovn-nbctl --bare --columns _uuid find ha_chassis_group name=hagrp1` +ovn-nbctl set logical_router_port lr0-public ha_chassis_group=$hagrp1_uuid + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="hagrp1" | wc -l`]) + +AT_CHECK([test 3 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +# 2 HA chassis should be created with 'chassis' column empty because +# we have not added hv1 and hv2 chassis to the SB DB. +AT_CHECK([test 2 = `ovn-sbctl list ha_chassis | grep chassis | awk '{print $3}' \ +| grep -v '-' | wc -l`]) + +# We should have 1 ha chassis with 'chassis' column set for hv1 +AT_CHECK([test 1 = `ovn-sbctl list ha_chassis | grep chassis | awk '{print $3}' \ +| grep '-' | wc -l`]) + +# Create another logical router port and associate to the same ha_chasis_group +ovn-nbctl lr-add lr1 +ovn-nbctl lrp-add lr1 lr1-public 00:00:20:20:12:14 182.168.0.100/24 + +ovn-nbctl set logical_router_port lr1-public ha_chassis_group=$hagrp1_uuid + +# We should still have 1 HA chassis group and 3 HA chassis in SB DB. +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="hagrp1" | wc -l`]) + +AT_CHECK([test 3 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +# Change the priority of ch1 - ha chassis in NB DB. It should get +# reflected in SB DB. +ovn-nbctl --wait=sb ha-chassis-group-add-chassis hagrp1 ch1 100 + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns priority find \ +ha_chassis | grep 100 | wc -l`]) + +# Delete ch1 HA chassis in NB DB. +ovn-nbctl --wait=sb ha-chassis-group-remove-chassis hagrp1 ch1 + +OVS_WAIT_UNTIL([test 2 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +# Add back the ha chassis +ovn-nbctl --wait=sb ha-chassis-group-add-chassis hagrp1 ch1 40 +OVS_WAIT_UNTIL([test 3 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +# Delete lr0-public. We should still have 1 HA chassis group and +# 3 HA chassis in SB DB. +ovn-nbctl --wait=sb lrp-del lr0-public + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="hagrp1" | wc -l`]) + +AT_CHECK([test 3 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +# Delete lr1-public. There should be no HA chassis group in SB DB. +ovn-nbctl --wait=sb lrp-del lr1-public + +OVS_WAIT_UNTIL([test 0 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="hagrp1" | wc -l`]) +AT_CHECK([test 0 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +# Add lr0-public again ovn-nbctl lrp-add lr0 lr0-public 00:00:20:20:12:13 172.168.0.100/24 -ovn-nbctl lrp-set-gateway-chassis lr0-public ch1 20 +ovn-nbctl set logical_router_port lr0-public ha_chassis_group=$hagrp1_uuid + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="hagrp1" | wc -l`]) + +AT_CHECK([test 3 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +# Create a Gateway chassis. ovn-northd should ignore this. +ovn-nbctl lrp-set-gateway-chassis lr0-public ch-1 20 -OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find ha_chassis_group \ -name="lr0-public" | wc -l`]) +# There should be only 1 HA chassis group in SB DB with the +# name hagrp1. +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group | wc -l`]) + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="hagrp1" | wc -l`]) + +AT_CHECK([test 3 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +# Now delete HA chassis group. ovn-northd should create HA chassis group +# with the Gateway chassis name +ovn-nbctl clear logical_router_port lr0-public ha_chassis_group +ovn-nbctl ha-chassis-group-del hagrp1 + +OVS_WAIT_UNTIL([test 0 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="hagrp1" | wc -l`]) + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="lr0-public" | wc -l`]) OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns _uuid \ find ha_chassis | wc -l`]) ovn-nbctl lrp-set-gateway-chassis lr0-public ch2 10 +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="lr0-public" | wc -l`]) + ovn-sbctl --bare --columns _uuid find ha_chassis OVS_WAIT_UNTIL([test 2 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) @@ -562,4 +699,37 @@ OVS_WAIT_UNTIL( ref_ch_list=`echo $ref_ch_list | sed 's/ //g'` test "$comp2_ch_uuid" = "$ref_ch_list"]) +# Set redirect-chassis option to lr0-public. It should be ignored. +ovn-nbctl set logical_router_port lr0-public options:redirect-chassis=ch1 + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group | wc -l`]) + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="lr0-public" | wc -l`]) + +ovn-sbctl --bare --columns _uuid find ha_chassis +OVS_WAIT_UNTIL([test 2 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +# Delete the gateway chassis. HA chassis group should be created in SB DB +# for the redirect-chassis option. +ovn-nbctl clear logical_router_port lr0-public gateway_chassis + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group | wc -l`]) + +ovn-sbctl list ha_chassis_group + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns name find \ +ha_chassis_group name="lr0-public_ch1" | wc -l`]) + +ovn-sbctl --bare --columns _uuid find ha_chassis +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +# Clear the redirect-chassis option. +ovn-nbctl clear logical_router_port lr0-public options + +OVS_WAIT_UNTIL([test 0 = `ovn-sbctl list ha_chassis_group | wc -l`]) +AT_CHECK([test 0 = `ovn-sbctl list ha_chassis | wc -l`]) + AT_CLEANUP diff --git a/tests/ovn.at b/tests/ovn.at index 6d3e6002a..17fd5f990 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -10059,6 +10059,181 @@ ovn-nbctl clear Logical_Router_Port outside gateway_chassis OVS_WAIT_UNTIL([test 0 = `ovn-sbctl list ha_chassis_group | wc -l`]) OVS_WAIT_UNTIL([test 0 = `ovn-sbctl list ha_chassis | wc -l`]) +ovn-nbctl remove NB_Global . options "bfd-min-rx" +ovn-nbctl remove NB_Global . options "bfd-min-tx" +ovn-nbctl remove NB_Global . options "bfd-mult" + +# Now test with HA chassis group instead of Gateway chassis in NB DB +ovn-nbctl --wait=sb ha-chassis-group-add hagrp1 + +ovn-nbctl list ha_chassis_group +ovn-nbctl --bare --columns _uuid find ha_chassis_group name=hagrp1 +hagrp1_uuid=`ovn-nbctl --bare --columns _uuid find ha_chassis_group name=hagrp1` +ovn-nbctl --wait=sb ha-chassis-group-add-chassis hagrp1 gw1 30 +ovn-nbctl --wait=sb ha-chassis-group-add-chassis hagrp1 gw2 20 + +# ovn-northd should not create HA chassis group and HA chassis rows +# unless the HA chassis group in OVN NB DB is associated to +# a logical router port. +OVS_WAIT_UNTIL([test 0 = `ovn-sbctl list ha_chassis | wc -l`]) + +# Associate hagrp1 to outside logical router port +ovn-nbctl set Logical_Router_Port outside ha_chassis_group=$hagrp1_uuid + +OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns _uuid \ +find ha_chassis_group | wc -l`]) + +OVS_WAIT_UNTIL([test 2 = `ovn-sbctl list ha_chassis | grep chassis | wc -l`]) + +OVS_WAIT_UNTIL([as hv1 ovs-ofctl dump-flows br-int table=32 | \ +grep active_backup | grep slaves:$hv1_gw1_ofport,$hv1_gw2_ofport \ +| wc -l], [0], [1 +]) + +OVS_WAIT_UNTIL([as hv2 ovs-ofctl dump-flows br-int table=32 | \ +grep active_backup | grep slaves:$hv2_gw1_ofport,$hv2_gw2_ofport \ +| wc -l], [0], [1 +]) + +# make sure that flows for handling the outside router port reside on gw1 +OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=24 | \ +grep 00:00:02:01:02:04 | wc -l], [0], [[1 +]]) +OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=24 | \ +grep 00:00:02:01:02:04 | wc -l], [0], [[0 +]]) + +# make sure ARP responder flows for outside router port reside on gw1 too +OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=9 | \ +grep arp_tpa=192.168.0.101 | wc -l], [0], [[1 +]]) +OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=9 | grep arp_tpa=192.168.0.101 | wc -l], [0], [[0 +]]) + +# check that the chassis redirect port has been claimed by the gw1 chassis +OVS_WAIT_UNTIL([ovn-sbctl --columns chassis --bare find Port_Binding \ +logical_port=cr-outside | grep $gw1_chassis | wc -l], [0],[[1 +]]) + +# Re add the ovs ports. +for i in 1 2; do + as hv$i + ovs-vsctl -- add-port br-int hv$i-vif1 -- \ + set interface hv$i-vif1 external-ids:iface-id=inside$i \ + options:tx_pcap=hv$i/vif1-tx.pcap \ + options:rxq_pcap=hv$i/vif1-rx.pcap \ + ofport-request=1 +done + +hv1_ch_uuid=`ovn-sbctl --bare --columns _uuid find chassis name="hv1"` +hv2_ch_uuid=`ovn-sbctl --bare --columns _uuid find chassis name="hv2"` + +exp_ref_ch_list='' +for i in `ovn-sbctl --bare --columns _uuid list chassis | sort` +do + if test $i = $hv1_ch_uuid; then + exp_ref_ch_list="${exp_ref_ch_list}$i" + elif test $i = $hv2_ch_uuid; then + exp_ref_ch_list="${exp_ref_ch_list}$i" + fi +done + +OVS_WAIT_UNTIL( + [ref_ch_list=`ovn-sbctl --bare --columns ref_chassis find ha_chassis_group | sort` + # Trim the spaces. + ref_ch_list=`echo $ref_ch_list | sed 's/ //g'` + test "$exp_ref_ch_list" = "$ref_ch_list"]) + +# Increase the priority of gw2 +ovn-nbctl --wait=sb ha-chassis-group-add-chassis hagrp1 gw2 40 + +OVS_WAIT_UNTIL([as hv1 ovs-ofctl dump-flows br-int table=32 | \ +grep active_backup | grep slaves:$hv1_gw2_ofport,$hv1_gw1_ofport \ +| wc -l], [0], [1 +]) + +OVS_WAIT_UNTIL([as hv2 ovs-ofctl dump-flows br-int table=32 | \ +grep active_backup | grep slaves:$hv2_gw2_ofport,$hv2_gw1_ofport \ +| wc -l], [0], [1 +]) + +# check that the chassis redirect port has been reclaimed by the gw2 chassis +OVS_WAIT_UNTIL([ovn-sbctl --columns chassis --bare find Port_Binding \ +logical_port=cr-outside | grep $gw2_chassis | wc -l], [0],[[1 +]]) + +# check BFD enablement on tunnel ports from gw1 ######### +as gw1 +for chassis in gw2 hv1 hv2; do + echo "checking gw1 -> $chassis" + AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], + [[enable=true +]]) +done + +# check BFD enablement on tunnel ports from gw2 ########## +as gw2 +for chassis in gw1 hv1 hv2; do + echo "checking gw2 -> $chassis" + AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], + [[enable=true +]]) +done + +# check BFD enablement on tunnel ports from hv1 ########### +as hv1 +for chassis in gw1 gw2; do + echo "checking hv1 -> $chassis" + AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], + [[enable=true +]]) +done +# make sure BFD is not enabled to hv2, we don't need it +AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-hv2-0],[0], + [[ +]]) + +# check BFD enablement on tunnel ports from hv2 ########## +as hv2 +for chassis in gw1 gw2; do + echo "checking hv2 -> $chassis" + AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-$chassis-0],[0], + [[enable=true +]]) +done +# make sure BFD is not enabled to hv1, we don't need it +AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-hv1-0],[0], + [[ +]]) + +# make sure that flows for handling the outside router port reside on gw2 now +OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=24 | \ +grep 00:00:02:01:02:04 | wc -l], [0], [[1 +]]) +OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=24 | \ +grep 00:00:02:01:02:04 | wc -l], [0], [[0 +]]) + +# disconnect GW2 from the network, GW1 should take over +as gw2 +port=${sandbox}_br-phys +as main ovs-vsctl del-port n1 $port + +bfd_dump + +# make sure that flows for handling the outside router port reside on gw2 now +OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=24 | \ +grep 00:00:02:01:02:04 | wc -l], [0], [[1 +]]) +OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=24 | \ +grep 00:00:02:01:02:04 | wc -l], [0], [[0 +]]) + +# check that the chassis redirect port has been reclaimed by the gw1 chassis +OVS_WAIT_UNTIL([ovn-sbctl --columns chassis --bare find Port_Binding \ +logical_port=cr-outside | grep $gw1_chassis | wc -l], [0],[[1 +]]) + OVN_CLEANUP([gw1],[gw2],[hv1],[hv2]) AT_CLEANUP |