Em ter., 20 de out. de 2026 às 19:55, Paulo Guilherme Silva
<[email protected]> escreveu:

> 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]>
> ---
>
Recheck-request: github-robot-_ovn-kubernetes

>  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