On Tue, Sep 9, 2025 at 10:31 AM Dumitru Ceara <[email protected]> wrote:
> On 9/9/25 9:09 AM, Ales Musil wrote:
> > The commit mentioned below removed bunch of features, however in
> > order for ovn-controller to work with older northd we need to
> > report them. Those features can be removed once we release the
> > next LTS. As the upgrade beyond the next LTS is not supported.
> >
> > Fixes: 92ba14e0d34e ("features: Consolidate chassis features usage,
> reporting and testing.")
> > Signed-off-by: Ales Musil <[email protected]>
> > ---
>
> Hi Ales,
>
Hi Dumitru,
>
> Ah, sorry, I should've been more thorough when checking the 24.03 code,
> I missed that these were still used there. Luckily CI caught it:
>
>
> https://github.com/ovn-org/ovn/actions/runs/17567481613/job/49911260927#step:19:43
Yes, we are both guilty. However as discussed offline I will post a patch
that should prevent this in the future. It will highlight which
feature/action
can be deprecated/removed in future releases.
>
>
> > controller/chassis.c | 6 ++++++
> > include/ovn/features.h | 6 ++++++
> > 2 files changed, 12 insertions(+)
> >
> > diff --git a/controller/chassis.c b/controller/chassis.c
> > index 118e60748..60c01eb24 100644
> > --- a/controller/chassis.c
> > +++ b/controller/chassis.c
> > @@ -408,7 +408,10 @@ chassis_build_other_config(const struct
> ovs_chassis_cfg *ovs_cfg,
> > smap_replace(config, "ovn-evpn-local-ip", ovs_cfg->evpn_local_ip);
> > smap_replace(config, "is-interconn",
> > ovs_cfg->is_interconn ? "true" : "false");
> > + smap_replace(config, OVN_FEATURE_PORT_UP_NOTIF, "true");
> > + smap_replace(config, OVN_FEATURE_CT_NO_MASKED_LABEL, "true");
> > smap_replace(config, OVN_FEATURE_MAC_BINDING_TIMESTAMP, "true");
> > + smap_replace(config, OVN_FEATURE_CT_LB_RELATED, "true");
> > smap_replace(config, OVN_FEATURE_FDB_TIMESTAMP, "true");
> > smap_replace(config, OVN_FEATURE_LS_DPG_COLUMN, "true");
> > smap_replace(config, OVN_FEATURE_CT_COMMIT_NAT_V2, "true");
> > @@ -742,7 +745,10 @@ update_supported_sset(struct sset *supported)
> > /* Internal options. */
> > sset_add(supported, "is-vtep");
> > sset_add(supported, "is-remote");
> > + sset_add(supported, OVN_FEATURE_PORT_UP_NOTIF);
> > + sset_add(supported, OVN_FEATURE_CT_NO_MASKED_LABEL);
> > sset_add(supported, OVN_FEATURE_MAC_BINDING_TIMESTAMP);
> > + sset_add(supported, OVN_FEATURE_CT_LB_RELATED);
> > sset_add(supported, OVN_FEATURE_FDB_TIMESTAMP);
> > sset_add(supported, OVN_FEATURE_LS_DPG_COLUMN);
> > sset_add(supported, OVN_FEATURE_CT_COMMIT_NAT_V2);
>
> I think unfortunately this is not enough though. We should also add
> back the part that reconciles Sb.Chassis.other_config for these
> features. Otherwise, if the SB record is changed externally
> ovn-controller won't re-enable the feature, causing old northds
> (24.03) to fall back the old way of doing things even if
> ovn-controller has been upgraded already.
>
> That's what we do for all feature flags (non-deprecated too).
>
> Something like:
> diff --git a/controller/chassis.c b/controller/chassis.c
> index 60c01eb245..07bef1c56d 100644
> --- a/controller/chassis.c
> +++ b/controller/chassis.c
> @@ -538,12 +538,29 @@ chassis_other_config_changed(const struct
> ovs_chassis_cfg *ovs_cfg,
> return true;
> }
>
> + if (!smap_get_bool(&chassis_rec->other_config,
> OVN_FEATURE_PORT_UP_NOTIF,
> + false)) {
> + return true;
> + }
> +
> + if (!smap_get_bool(&chassis_rec->other_config,
> + OVN_FEATURE_CT_NO_MASKED_LABEL,
> + false)) {
> + return true;
> + }
> +
> if (!smap_get_bool(&chassis_rec->other_config,
> OVN_FEATURE_MAC_BINDING_TIMESTAMP,
> false)) {
> return true;
> }
>
> + if (!smap_get_bool(&chassis_rec->other_config,
> + OVN_FEATURE_CT_LB_RELATED,
> + false)) {
> + return true;
> + }
> +
> if (!smap_get_bool(&chassis_rec->other_config,
> OVN_FEATURE_FDB_TIMESTAMP,
> false)) {
> diff --git a/tests/ovn-controller.at b/tests/ovn-controller.at
> index 17ec3c5d95..0b00906ae7 100644
> --- a/tests/ovn-controller.at
> +++ b/tests/ovn-controller.at
> @@ -642,7 +642,9 @@ ovn_attach n1 br-phys 192.168.0.1
>
> # Wait for ovn-controller to register in the SB.
> wait_row_count Chassis 1 name=hv1
> other_config:mac-binding-timestamp="true"
> -check_row_count Chassis 1 name=hv1 other_config:fdb-timestamp="true"
> +check_row_count Chassis 1 name=hv1 other_config:port-up-notif="true"
> +check_row_count Chassis 1 name=hv1 other_config:ct-no-masked-label="true"
> +check_row_count Chassis 1 name=hv1 other_config:ovn-ct-lb-related="true"
> check_row_count Chassis 1 name=hv1 other_config:ls-dpg-column="true"
> check_row_count Chassis 1 name=hv1 other_config:ct-commit-nat-v2="true"
> check_row_count Chassis 1 name=hv1 other_config:ct-commit-to-zone="true"
> ---
>
> With that addressed, and assuming CI is green:
>
> Acked-by: Dumitru Ceara <[email protected]>
>
I have added the following diff and merged this into main.
>
> Regards,
> Dumitru
>
> > diff --git a/include/ovn/features.h b/include/ovn/features.h
> > index d5828a7e5..3caeaea25 100644
> > --- a/include/ovn/features.h
> > +++ b/include/ovn/features.h
> > @@ -31,6 +31,12 @@
> > #define OVN_FEATURE_CT_LABEL_FLUSH "ct-label-flush"
> > #define OVN_FEATURE_CT_STATE_SAVE "ct-state-save"
> >
> > +/* DEPRACATED: The following features can be removed
> > + * after the next LTS version release. */
> > +#define OVN_FEATURE_PORT_UP_NOTIF "port-up-notif"
> > +#define OVN_FEATURE_CT_NO_MASKED_LABEL "ct-no-masked-label"
> > +#define OVN_FEATURE_CT_LB_RELATED "ovn-ct-lb-related"
> > +
> > /* OVS datapath supported features. Based on availability OVN might
> generate
> > * different types of openflows.
> > */
>
>
Thank you,
Ales
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev