diff mbox series

[ovs-dev] northd: Ignore VTEP chassis when evaluating chassis features.

Message ID 20260829181417.15197-1-ARukomoinikova@k2.cloud
State New
Headers show
Series [ovs-dev] northd: Ignore VTEP chassis when evaluating chassis features. | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success

Commit Message

Alexandra Rukomoinikova Aug. 29, 2026, 6:14 p.m. UTC
Chassis rows for VTEP physical switches are created by
ovn-controller-vtep, which never processes logical flows and therefore
never advertises any feature in other_config. northd code only
skipped remote chassis, so a single VTEP chassis disabled every
feature for the whole deployment.

The most visible effect is ct_no_masked_label being turned off, which
makes northd emit "ct_label.blocked" matches. That symbol was removed
in f1f5c34f1acf ("northd: Assume all chassis support the
"ct-no-masked-label" feature."), so any newer ovn-controller fails to
parse ct_label actions during a rolling upgrade from version < 24.09.
Skip VTEP chassis the same way remote ones are skipped.

[1] https://github.com/ovn-org/ovn/commit/f1f5c34f1acfc01d625984e3b4ceeb840fb234b1
Fixes: 40fe94bd4d4c ("northd: Use ct_mark.blocked and ecmp_reply_port only when all chassis support it.")
Signed-off-by: Alexandra Rukomoinikova <ARukomoinikova@k2.cloud>
---
 northd/en-global-config.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/northd/en-global-config.c b/northd/en-global-config.c
index 4e6b07ebe..6dd5e0977 100644
--- a/northd/en-global-config.c
+++ b/northd/en-global-config.c
@@ -532,8 +532,14 @@  build_chassis_features(const struct sbrec_chassis_table *sbrec_chassis_table,
     SBREC_CHASSIS_TABLE_FOR_EACH (chassis, sbrec_chassis_table) {
         /* Only consider local AZ chassis.  Remote ones don't install
          * flows generated by the local northd.
+         *
+         * Skip VTEP chassis too. Those are created by ovn-controller-vtep
+         * (which doesn't process logical flows at all) and therefore never
+         * advertise any feature in other_config. Taking them into account
+         * would disable features for the whole deployment.
          */
-        if (smap_get_bool(&chassis->other_config, "is-remote", false)) {
+        if (smap_get_bool(&chassis->other_config, "is-remote", false) ||
+            smap_get_bool(&chassis->other_config, "is-vtep", false)) {
             continue;
         }