On Fri, Jul 12, 2024 at 5:15 PM Dumitru Ceara <dce...@redhat.com> wrote:
> Signed-off-by: Dumitru Ceara <dce...@redhat.com> > --- > Hi Dumitru, I have a couple of small comments down below. NEWS | 3 +++ > northd/debug.c | 12 +++++++----- > northd/debug.h | 3 ++- > northd/en-global-config.c | 31 +++++++++++++++++++++++-------- > northd/inc-proc-northd.c | 1 + > tests/ovn-northd.at | 27 ++++++++++++++++++++++++++- > 6 files changed, 62 insertions(+), 15 deletions(-) > > diff --git a/NEWS b/NEWS > index 3e392ff08b..fcf182bc02 100644 > --- a/NEWS > +++ b/NEWS > @@ -38,6 +38,9 @@ Post v24.03.0 > ability to disable "VXLAN mode" to extend available tunnel IDs space > for > datapaths from 4095 to 16711680. For more details see man ovn-nb(5) > for > mentioned option. > + - The NB_Global.debug_drop_domain_id configured value is now overridden > by > + the ID associated with the Sampling_App record created for drop > sampling > + (Sampling_App.name configured to be "drop-sampling"). > Should we also deprecate the old global option once this drops? I think it would make sense. > OVN v24.03.0 - 01 Mar 2024 > -------------------------- > diff --git a/northd/debug.c b/northd/debug.c > index 59da5d4f66..457993b7cf 100644 > --- a/northd/debug.c > +++ b/northd/debug.c > @@ -3,6 +3,7 @@ > #include <string.h> > > #include "debug.h" > +#include "en-sampling-app.h" > > #include "openvswitch/dynamic-string.h" > #include "openvswitch/vlog.h" > @@ -26,16 +27,17 @@ debug_enabled(void) > } > > void > -init_debug_config(const struct nbrec_nb_global *nb) > +init_debug_config(const struct nbrec_nb_global *nb, > + uint8_t drop_domain_id_override) > { > - > const struct smap *options = &nb->options; > uint32_t collector_set_id = smap_get_uint(options, > "debug_drop_collector_set", > 0); > - uint32_t observation_domain_id = smap_get_uint(options, > - "debug_drop_domain_id", > - 0); > + uint32_t observation_domain_id = > + drop_domain_id_override != SAMPLING_APP_ID_NONE > + ? drop_domain_id_override > + : smap_get_uint(options, "debug_drop_domain_id", 0); > > if (collector_set_id != config.collector_set_id || > observation_domain_id != config.observation_domain_id || > diff --git a/northd/debug.h b/northd/debug.h > index c1a5e5aadb..a0b535253a 100644 > --- a/northd/debug.h > +++ b/northd/debug.h > @@ -21,7 +21,8 @@ > #include "lib/ovn-nb-idl.h" > #include "openvswitch/dynamic-string.h" > > -void init_debug_config(const struct nbrec_nb_global *nb); > +void init_debug_config(const struct nbrec_nb_global *nb, > + uint8_t drop_domain_id_override); > void destroy_debug_config(void); > > const char *debug_drop_action(void); > diff --git a/northd/en-global-config.c b/northd/en-global-config.c > index 5b71ede1f2..c683c8fae5 100644 > --- a/northd/en-global-config.c > +++ b/northd/en-global-config.c > @@ -24,6 +24,7 @@ > /* OVN includes */ > #include "debug.h" > #include "en-global-config.h" > +#include "en-sampling-app.h" > #include "include/ovn/features.h" > #include "ipam.h" > #include "lib/ovn-nb-idl.h" > @@ -42,8 +43,10 @@ static bool chassis_features_changed(const struct > chassis_features *, > static bool config_out_of_sync(const struct smap *config, > const struct smap *saved_config, > const char *key, bool must_be_present); > -static bool check_nb_options_out_of_sync(const struct nbrec_nb_global *, > - struct ed_type_global_config *); > +static bool check_nb_options_out_of_sync( > + const struct nbrec_nb_global *, > + struct ed_type_global_config *, > + const struct sampling_app_table *); > static void update_sb_config_options_to_sbrec(struct > ed_type_global_config *, > const struct > sbrec_sb_global *); > > @@ -72,6 +75,9 @@ en_global_config_run(struct engine_node *node , void > *data) > EN_OVSDB_GET(engine_get_input("SB_sb_global", node)); > const struct sbrec_chassis_table *sbrec_chassis_table = > EN_OVSDB_GET(engine_get_input("SB_chassis", node)); > + const struct ed_type_sampling_app_data *sampling_app_data = > + engine_get_input_data("sampling_app", node); > + const struct sampling_app_table *sampling_apps = > &sampling_app_data->apps; > > struct ed_type_global_config *config_data = data; > > @@ -145,7 +151,8 @@ en_global_config_run(struct engine_node *node , void > *data) > build_chassis_features(sbrec_chassis_table, > &config_data->features); > } > > - init_debug_config(nb); > + init_debug_config(nb, sampling_app_get_id(sampling_apps, > + SAMPLING_APP_DROP_DEBUG)); > > const struct sbrec_sb_global *sb = > sbrec_sb_global_table_first(sb_global_table); > @@ -186,6 +193,9 @@ global_config_nb_global_handler(struct engine_node > *node, void *data) > EN_OVSDB_GET(engine_get_input("NB_nb_global", node)); > const struct sbrec_sb_global_table *sb_global_table = > EN_OVSDB_GET(engine_get_input("SB_sb_global", node)); > + const struct ed_type_sampling_app_data *sampling_app_data = > + engine_get_input_data("sampling_app", node); > + const struct sampling_app_table *sampling_apps = > &sampling_app_data->apps; > > const struct nbrec_nb_global *nb = > nbrec_nb_global_table_first(nb_global_table); > @@ -248,7 +258,7 @@ global_config_nb_global_handler(struct engine_node > *node, void *data) > return false; > } > > - if (check_nb_options_out_of_sync(nb, config_data)) { > + if (check_nb_options_out_of_sync(nb, config_data, sampling_apps)) { > config_data->tracked_data.nb_options_changed = true; > } > > @@ -461,8 +471,10 @@ config_out_of_sync(const struct smap *config, const > struct smap *saved_config, > } > > static bool > -check_nb_options_out_of_sync(const struct nbrec_nb_global *nb, > - struct ed_type_global_config *config_data) > +check_nb_options_out_of_sync( > + const struct nbrec_nb_global *nb, > + struct ed_type_global_config *config_data, > + const struct sampling_app_table *sampling_apps) > { > if (config_out_of_sync(&nb->options, &config_data->nb_options, > "mac_binding_removal_limit", false)) { > @@ -496,13 +508,16 @@ check_nb_options_out_of_sync(const struct > nbrec_nb_global *nb, > > if (config_out_of_sync(&nb->options, &config_data->nb_options, > "debug_drop_domain_id", false)) { > - init_debug_config(nb); > + init_debug_config(nb, sampling_app_get_id(sampling_apps, > + > SAMPLING_APP_DROP_DEBUG)); > + > return true; > } > > if (config_out_of_sync(&nb->options, &config_data->nb_options, > "debug_drop_collector_set", false)) { > - init_debug_config(nb); > + init_debug_config(nb, sampling_app_get_id(sampling_apps, > + > SAMPLING_APP_DROP_DEBUG)); > return true; > } > > diff --git a/northd/inc-proc-northd.c b/northd/inc-proc-northd.c > index 5d89670c29..95bedc5cd0 100644 > --- a/northd/inc-proc-northd.c > +++ b/northd/inc-proc-northd.c > @@ -181,6 +181,7 @@ void inc_proc_northd_init(struct ovsdb_idl_loop *nb, > global_config_sb_global_handler); > engine_add_input(&en_global_config, &en_sb_chassis, > global_config_sb_chassis_handler); > + engine_add_input(&en_global_config, &en_sampling_app, NULL); > > engine_add_input(&en_northd, &en_nb_mirror, NULL); > engine_add_input(&en_northd, &en_nb_static_mac_binding, NULL); > diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at > index f2f11c005c..3fb883225a 100644 > --- a/tests/ovn-northd.at > +++ b/tests/ovn-northd.at > @@ -12459,13 +12459,38 @@ check as northd ovn-appctl -t ovn-northd > inc-engine/clear-stats > ovn-nbctl create Sampling_App name="acl-new-traffic-sampling" id="42" > check_row_count nb:Sampling_App 1 > check_engine_stats sampling_app recompute nocompute > -check_engine_stats northd norecompute nocompute > +check_engine_stats northd recomput nocompute > nit: s/recomput/recompute/ > check_engine_stats lflow recompute nocompute > +check_engine_stats global_config recompute nocompute > CHECK_NO_CHANGE_AFTER_RECOMPUTE > > AT_CLEANUP > ]) > > +OVN_FOR_EACH_NORTHD_NO_HV([ > +AT_SETUP([Sampling_App override debug_drop_domain_id]) > + > +ovn_start > + > +check ovn-nbctl -- set NB_Global . options:debug_drop_collector_set="123" > \ > + -- set NB_Global . options:debug_drop_domain_id="1" \ > + -- ls-add ls > +check ovn-nbctl --wait=sb sync > + > +AT_CHECK([ovn-sbctl lflow-list | grep ls_in_l2_unknown.*sample | > ovn_strip_lflows], [0], [dnl > + table=??(ls_in_l2_unknown ), priority=50 , match=(outport == > "none"), > action=(sample(probability=65535,collector_set=123,obs_domain=1,obs_point=$cookie); > /* drop */) > +]) > + > +ovn-nbctl --wait=sb create Sampling_App name="drop-sampling" id="42" > +check_row_count nb:Sampling_App 1 > + > +AT_CHECK([ovn-sbctl lflow-list | grep ls_in_l2_unknown.*sample | > ovn_strip_lflows], [0], [dnl > + table=??(ls_in_l2_unknown ), priority=50 , match=(outport == > "none"), > action=(sample(probability=65535,collector_set=123,obs_domain=42,obs_point=$cookie); > /* drop */) > +]) > + > +AT_CLEANUP > +]) > + > OVN_FOR_EACH_NORTHD_NO_HV([ > AT_SETUP([NAT with match]) > ovn_start > -- > 2.44.0 > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > Thanks, Ales -- Ales Musil Senior Software Engineer - OVN Core Red Hat EMEA <https://www.redhat.com> amu...@redhat.com <https://red.ht/sig> _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev