ovn-northd sets the ref_chassis of the SB HA chassis groups to the
chassis that claimed ports in the logical switches connected to their
routers.  When the first port of such a logical switch is bound to a
chassis, or the last one is unbound, the reference chassis change and
the update of ref_chassis, written by ovn-northd itself, triggers a full
recompute of the northd engine node, as it has no handler for the SB
HA_Chassis_Group input.

ovn-northd never reads ref_chassis, it only writes it, so disable the
alerting for that column like it is already done for other write-only
columns.

Assisted-by: Claude Opus 4.8, Claude Code
Signed-off-by: Paulo Guilherme Silva <[email protected]>
---
 northd/ovn-northd.c |  2 ++
 tests/ovn-northd.at | 46 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+)

diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
index b7bf310c2..8c4bd124e 100644
--- a/northd/ovn-northd.c
+++ b/northd/ovn-northd.c
@@ -946,6 +946,8 @@ main(int argc, char *argv[])
     ovsdb_idl_omit_alert(ovnsb_idl_loop.idl, &sbrec_sb_global_col_nb_cfg);
     ovsdb_idl_omit_alert(ovnsb_idl_loop.idl,
                          &sbrec_sb_global_col_nb_cfg_timestamp);
+    ovsdb_idl_omit_alert(ovnsb_idl_loop.idl,
+                         &sbrec_ha_chassis_group_col_ref_chassis);
     for (size_t i = 0; i < SBREC_ADDRESS_SET_N_COLUMNS; i++) {
         ovsdb_idl_omit_alert(ovnsb_idl_loop.idl,
                              &sbrec_address_set_columns[i]);
diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
index 7a0a400c4..d26143d14 100644
--- a/tests/ovn-northd.at
+++ b/tests/ovn-northd.at
@@ -810,6 +810,52 @@ OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
+OVN_FOR_EACH_NORTHD_NO_HV([
+AT_SETUP([HA_Chassis_Group ref_chassis updates - no recompute])
+ovn_start
+
+check ovn-sbctl chassis-add gw1 geneve 127.0.0.1
+check ovn-sbctl chassis-add gw2 geneve 127.0.0.2
+check ovn-sbctl chassis-add comp1 geneve 127.0.0.3
+
+check ovn-nbctl lr-add lr0
+check ovn-nbctl lrp-add lr0 lr0-public 00:00:20:20:12:13 172.168.0.100/24
+check ovn-nbctl lrp-set-gateway-chassis lr0-public gw1 20
+check ovn-nbctl lrp-set-gateway-chassis lr0-public gw2 10
+check ovn-nbctl ls-add sw0
+check ovn-nbctl lsp-add sw0 sw0-p1
+check ovn-nbctl lrp-add lr0 lr0-sw0 00:00:20:20:12:14 10.0.0.1/24
+check ovn-nbctl --wait=sb lsp-add-router-port sw0 sw0-lr0 lr0-sw0
+wait_column "" HA_Chassis_Group ref_chassis
+
+comp1=$(fetch_column Chassis _uuid name=comp1)
+
+# Binding the first port of sw0 makes comp1 a reference chassis of the
+# HA chassis group.  ovn-northd writes it to the SB but must not recompute
+# when the update comes back.
+check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats
+check ovn-sbctl lsp-bind sw0-p1 comp1
+wait_row_count nb:Logical_Switch_Port 1 name=sw0-p1 up=true
+wait_column "$comp1" HA_Chassis_Group ref_chassis
+check ovn-nbctl --wait=sb sync
+check_engine_stats northd norecompute compute
+check_engine_stats lflow norecompute compute
+CHECK_NO_CHANGE_AFTER_RECOMPUTE
+
+# Unbinding the last port of sw0 removes comp1 from the reference chassis.
+check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats
+check ovn-sbctl lsp-unbind sw0-p1
+wait_row_count nb:Logical_Switch_Port 1 name=sw0-p1 up=false
+wait_column "" HA_Chassis_Group ref_chassis
+check ovn-nbctl --wait=sb sync
+check_engine_stats northd norecompute compute
+check_engine_stats lflow norecompute compute
+CHECK_NO_CHANGE_AFTER_RECOMPUTE
+
+OVN_CLEANUP_NORTHD
+AT_CLEANUP
+])
+
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([ovn-northd pause and resume])
 # By starting the backup northd paused, we ensure that the primary
-- 
2.34.1


-- 




_'Esta mensagem é direcionada apenas para os endereços constantes no 
cabeçalho inicial. Se você não está listado nos endereços constantes no 
cabeçalho, pedimos-lhe que desconsidere completamente o conteúdo dessa 
mensagem e cuja cópia, encaminhamento e/ou execução das ações citadas estão 
imediatamente anuladas e proibidas'._


* **'Apesar do Magazine Luiza tomar 
todas as precauções razoáveis para assegurar que nenhum vírus esteja 
presente nesse e-mail, a empresa não poderá aceitar a responsabilidade por 
quaisquer perdas ou danos causados por esse e-mail ou por seus anexos'.*



_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to