On 3/14/23 17:53, Numan Siddique wrote: > On Thu, Mar 9, 2023 at 9:21 AM Dumitru Ceara <dce...@redhat.com> wrote: >> >> On 3/8/23 15:48, Ales Musil wrote: >>> On Wed, Mar 8, 2023 at 3:44 PM Dumitru Ceara <dce...@redhat.com> wrote: >>> >>>> Chassis in remote AZs are not programmed by the local ovn-northd. So we >>>> don't need to take into account their supported feature set when >>>> building logical flows. >>>> >>>> This patch also introduces a new northd unix command, >>>> "debug/chassis-features-list". This is used by the newly added self >>>> test but might also be useful when debugging live issues. >>>> >>>> Suggested-by: Numan Siddique <num...@ovn.org> >>>> Signed-off-by: Dumitru Ceara <dce...@redhat.com> >>>> --- >>>> V2: >>>> - Addressed Ales' comment: >>>> - explicitly set remote chassis features as unsupported in the test. >>>> --- >>>> northd/inc-proc-northd.c | 26 ++++++++++++++++++++++++++ >>>> northd/northd.c | 7 +++++++ >>>> tests/ovn-northd.at | 36 ++++++++++++++++++++++++++++++++++++ >>>> 3 files changed, 69 insertions(+) >>>> >>>> diff --git a/northd/inc-proc-northd.c b/northd/inc-proc-northd.c >>>> index 1c8550df5d..b28f551895 100644 >>>> --- a/northd/inc-proc-northd.c >>>> +++ b/northd/inc-proc-northd.c >>>> @@ -34,10 +34,13 @@ >>>> #include "en-lflow.h" >>>> #include "en-northd-output.h" >>>> #include "en-sync-sb.h" >>>> +#include "unixctl.h" >>>> #include "util.h" >>>> >>>> VLOG_DEFINE_THIS_MODULE(inc_proc_northd); >>>> >>>> +static unixctl_cb_func chassis_features_list; >>>> + >>>> #define NB_NODES \ >>>> NB_NODE(nb_global, "nb_global") \ >>>> NB_NODE(copp, "copp") \ >>>> @@ -305,6 +308,12 @@ void inc_proc_northd_init(struct ovsdb_idl_loop *nb, >>>> engine_ovsdb_node_add_index(&en_sb_address_set, >>>> "sbrec_address_set_by_name", >>>> sbrec_address_set_by_name); >>>> + >>>> + struct northd_data *northd_data = >>>> + engine_get_internal_data(&en_northd); >>>> + unixctl_command_register("debug/chassis-features-list", "", 0, 0, >>>> + chassis_features_list, >>>> + &northd_data->features); >>>> } >>>> >>>> /* Returns true if the incremental processing ended up updating nodes. */ >>>> @@ -355,3 +364,20 @@ void inc_proc_northd_cleanup(void) >>>> engine_cleanup(); >>>> engine_set_context(NULL); >>>> } >>>> + >>>> +static void >>>> +chassis_features_list(struct unixctl_conn *conn, int argc OVS_UNUSED, >>>> + const char *argv[] OVS_UNUSED, void *features_) >>>> +{ >>>> + struct chassis_features *features = features_; >>>> + struct ds ds = DS_EMPTY_INITIALIZER; >>>> + >>>> + ds_put_format(&ds, "ct_no_masked_label: %s\n", >>>> + features->ct_no_masked_label ? "true" : "false"); >>>> + ds_put_format(&ds, "ct_lb_related: %s\n", >>>> + features->ct_lb_related ? "true" : "false"); >>>> + ds_put_format(&ds, "mac_binding_timestamp: %s\n", >>>> + features->mac_binding_timestamp ? "true" : "false"); >>>> + unixctl_command_reply(conn, ds_cstr(&ds)); >>>> + ds_destroy(&ds); >>>> +} >>>> diff --git a/northd/northd.c b/northd/northd.c >>>> index ab10fea6ab..661f91ff7e 100644 >>>> --- a/northd/northd.c >>>> +++ b/northd/northd.c >>>> @@ -432,6 +432,13 @@ build_chassis_features(const struct northd_input >>>> *input_data, >>>> const struct sbrec_chassis *chassis; >>>> >>>> SBREC_CHASSIS_TABLE_FOR_EACH (chassis, input_data->sbrec_chassis) { >>>> + /* Only consider local AZ chassis. Remote ones don't install >>>> + * flows generated by the local northd. >>>> + */ >>>> + if (smap_get_bool(&chassis->other_config, "is-remote", false)) { >>>> + continue; >>>> + } >>>> + >>>> bool ct_no_masked_label = >>>> smap_get_bool(&chassis->other_config, >>>> OVN_FEATURE_CT_NO_MASKED_LABEL, >>>> diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at >>>> index d0f6893e94..6c901a202b 100644 >>>> --- a/tests/ovn-northd.at >>>> +++ b/tests/ovn-northd.at >>>> @@ -8650,3 +8650,39 @@ AT_CHECK([grep -e "ls_in_acl" -e "ls_out_acl" >>>> lflows2 | grep "priority=65532"], >>>> >>>> AT_CLEANUP >>>> ]) >>>> + >>>> +OVN_FOR_EACH_NORTHD_NO_HV([ >>>> +AT_SETUP([Chassis-feature compatibitility - remote chassis]) >>>> +ovn_start >>>> + >>>> +AS_BOX([Local chassis]) >>>> +check ovn-sbctl chassis-add hv1 geneve 127.0.0.1 \ >>>> + -- set chassis hv1 other_config:ct-no-masked-label=true \ >>>> + -- set chassis hv1 other_config:ovn-ct-lb-related=true \ >>>> + -- set chassis hv1 other_config:mac-binding-timestamp=true >>>> + >>>> +check ovn-nbctl --wait=sb sync >>>> + >>>> +AT_CHECK([as northd ovn-appctl -t NORTHD_TYPE >>>> debug/chassis-features-list], [0], [dnl >>>> +ct_no_masked_label: true >>>> +ct_lb_related: true >>>> +mac_binding_timestamp: true >>>> +]) >>>> + >>>> +AS_BOX([Remote chassis]) >>>> +check ovn-sbctl chassis-add hv2 geneve 127.0.0.2 \ >>>> + -- set chassis hv2 other_config:is-remote=true \ >>>> + -- set chassis hv2 other_config:ct-no-masked-label=false \ >>>> + -- set chassis hv2 other_config:ovn-ct-lb-related=false \ >>>> + -- set chassis hv2 other_config:mac-binding-timestamp=false >>>> + >>>> +check ovn-nbctl --wait=sb sync >>>> + >>>> +AT_CHECK([as northd ovn-appctl -t NORTHD_TYPE >>>> debug/chassis-features-list], [0], [dnl >>>> +ct_no_masked_label: true >>>> +ct_lb_related: true >>>> +mac_binding_timestamp: true >>>> +]) >>>> + >>>> +AT_CLEANUP >>>> +]) >>>> -- >>>> 2.31.1 >>>> >>>> >>> Looks good to me, thanks. >>> >>> Acked-by: Ales Musil <amu...@redhat.com> >>> >> >> Thanks for the review! I pushed this to the main branch. > > Thanks Dumitru for the patch/fix. > > I'd suggest considering this commit as a fix and backporting this to > OVN 23.03 (at least(. What do you think ? >
Sounds good. I pushed this to branch-23.03 and branch-22.12 too. It applies cleanly there. We could do custom backports for older branches too but I'll wait with that until someone explicitly asks for it. Regards, Dumitru _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev