From: Aleksandr Smirnov <[email protected]>
northd does not populate Port_Binding:additional-chassis to
Ha_Chassis_Group:ref_chassis, so, bfd session is not created
for such chassis.
The fix populates additional chassis to ref chassis.
Signed-off-by: Aleksandr Smirnov <[email protected]>
Reported-at:
https://mail.openvswitch.org/pipermail/ovs-dev/2024-September/417293.html
Reported-by: Vladislav Odintsov <[email protected]>
Tested-by: Vladislav Odintsov <[email protected]>
---
northd/northd.c | 13 +++++++++++--
tests/ovn-northd.at | 7 +++++++
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/northd/northd.c b/northd/northd.c
index 0aa0de637..088617aae 100644
--- a/northd/northd.c
+++ b/northd/northd.c
@@ -19041,7 +19041,14 @@ collect_lr_groups_for_ha_chassis_groups(const struct
sbrec_port_binding *sb,
}
hmapx_add(lr_groups, lr_group);
- hmapx_add(&lr_group->tmp_ha_ref_chassis, sb->chassis);
+
+ if (sb->chassis) {
+ hmapx_add(&lr_group->tmp_ha_ref_chassis, sb->chassis);
+ }
+
+ for (size_t i = 0; i < sb->n_additional_chassis; i++) {
+ hmapx_add(&lr_group->tmp_ha_ref_chassis, sb->additional_chassis[i]);
+ }
}
static void
@@ -19158,7 +19165,9 @@ handle_port_binding_changes(struct ovsdb_idl_txn
*ovnsb_txn,
sbrec_port_binding_set_up(op->sb, &up, 1);
}
- if (build_ha_chassis_ref && ovnsb_txn && sb->chassis) {
+ if (build_ha_chassis_ref
+ && ovnsb_txn
+ && (sb->chassis || sb->n_additional_chassis)) {
/* Check and collect the chassis which has claimed this 'sb'
* in relation to LR groups. */
collect_lr_groups_for_ha_chassis_groups(sb, op, &lr_groups);
diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
index d6a8c4640..e295c721d 100644
--- a/tests/ovn-northd.at
+++ b/tests/ovn-northd.at
@@ -572,6 +572,7 @@ check ovn-sbctl chassis-add ch2 geneve 127.0.0.3
check ovn-sbctl chassis-add ch3 geneve 127.0.0.4
check ovn-sbctl chassis-add comp1 geneve 127.0.0.5
check ovn-sbctl chassis-add comp2 geneve 127.0.0.6
+check ovn-sbctl chassis-add cadd1 geneve 127.0.0.7
check ovn-nbctl lrp-add lr0 lr0-sw0 00:00:20:20:12:14 10.0.0.1/24
check ovn-nbctl lsp-add sw0 sw0-lr0
@@ -584,11 +585,17 @@ wait_row_count nb:Logical_Switch_Port 1 name=sw0-p1
up=true
comp1_ch_uuid=$(fetch_column Chassis _uuid name=comp1)
comp2_ch_uuid=$(fetch_column Chassis _uuid name=comp2)
+cadd1_ch_uuid=$(fetch_column Chassis _uuid name=cadd1)
+
ch2_ch_uuid=$comp1_ch_uuid
# Check ref_chassis.
echo "comp1_ch_uuid = $comp1_ch_uuid"
wait_column "$comp1_ch_uuid" HA_Chassis_Group ref_chassis
+ovn-sbctl set Port_Binding sw0-p1 additional_chassis=$cadd1_ch_uuid
+wait_column "$cadd1_ch_uuid $comp1_ch_uuid" HA_Chassis_Group ref_chassis
+ovn-sbctl clear Port_Binding sw0-p1 additional_chassis
+wait_column "$comp1_ch_uuid" HA_Chassis_Group ref_chassis
# unbind sw0-p1
ovn-sbctl lsp-unbind sw0-p1
--
2.46.2
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev