On Fri, Aug 18, 2023 at 10:58 AM <[email protected]> wrote:
>
> From: Numan Siddique <[email protected]>
>
> For every a given load balancer group 'A', northd engine data maintains
> a bitmap of datapaths associated to this lb group.  So when lb group 'A'
> gets associated to a logical switch 's1', the bitmap index of 's1' is set
> in its bitmap.
>
> In order to handle the load balancer group changes incrementally for a
> logical switch, we need to set and clear the bitmap bits accordingly.
> And this patch does it.
>
> Signed-off-by: Numan Siddique <[email protected]>
> ---
>  northd/en-lb-data.c | 102 ++++++++++++++++++++++++++++++++------------
>  northd/en-lb-data.h |   4 ++
>  northd/en-northd.c  |   9 +++-
>  northd/northd.c     |  70 ++++++++++++++++++++++++------
>  northd/northd.h     |   5 ++-
>  tests/ovn-northd.at |  30 +++++++++----
>  6 files changed, 169 insertions(+), 51 deletions(-)
>
> diff --git a/northd/en-lb-data.c b/northd/en-lb-data.c
> index e0c4db1422..8619b4cc14 100644
> --- a/northd/en-lb-data.c
> +++ b/northd/en-lb-data.c
> @@ -63,6 +63,7 @@ static struct crupdated_lb_group *
>  static void add_deleted_lb_group_to_tracked_data(
>      struct ovn_lb_group *, struct tracked_lb_data *);
>  static bool is_ls_lbs_changed(const struct nbrec_logical_switch *nbs);
> +static bool is_ls_lbgrps_changed(const struct nbrec_logical_switch *nbs);
>
>  /* 'lb_data' engine node manages the NB load balancers and load balancer
>   * groups.  For each NB LB, it creates 'struct ovn_northd_lb' and
> @@ -271,12 +272,15 @@ lb_data_logical_switch_handler(struct engine_node 
> *node, void *data)
>                  destroy_od_lb_data(od_lb_data);
>              }
>          } else {
> -            if (!is_ls_lbs_changed(nbs)) {
> +            bool ls_lbs_changed = is_ls_lbs_changed(nbs);
> +            bool ls_lbgrps_changed = is_ls_lbgrps_changed(nbs);
> +            if (!ls_lbs_changed && !ls_lbgrps_changed) {
>                  continue;
>              }
>              struct crupdated_od_lb_data *codlb = xzalloc(sizeof *codlb);
>              codlb->od_uuid = nbs->header_.uuid;
>              uuidset_init(&codlb->assoc_lbs);
> +            uuidset_init(&codlb->assoc_lbgrps);
>
>              struct od_lb_data *od_lb_data =
>                  find_od_lb_data(&lb_data->ls_lb_map, &nbs->header_.uuid);
> @@ -285,38 +289,66 @@ lb_data_logical_switch_handler(struct engine_node 
> *node, void *data)
>                                                  &nbs->header_.uuid);
>              }
>
> -            struct uuidset *pre_lb_uuids = od_lb_data->lbs;
> -            od_lb_data->lbs = xzalloc(sizeof *od_lb_data->lbs);
> -            uuidset_init(od_lb_data->lbs);
> -
> -            for (size_t i = 0; i < nbs->n_load_balancer; i++) {
> -                const struct uuid *lb_uuid =
> -                    &nbs->load_balancer[i]->header_.uuid;
> -                uuidset_insert(od_lb_data->lbs, lb_uuid);
> +            if (ls_lbs_changed) {
> +                struct uuidset *pre_lb_uuids = od_lb_data->lbs;
> +                od_lb_data->lbs = xzalloc(sizeof *od_lb_data->lbs);
> +                uuidset_init(od_lb_data->lbs);
> +
> +                for (size_t i = 0; i < nbs->n_load_balancer; i++) {
> +                    const struct uuid *lb_uuid =
> +                        &nbs->load_balancer[i]->header_.uuid;
> +                    uuidset_insert(od_lb_data->lbs, lb_uuid);
> +
> +                    struct uuidset_node *unode = uuidset_find(pre_lb_uuids,
> +                                                            lb_uuid);
> +
> +                    if (!unode || (nbrec_load_balancer_row_get_seqno(
> +                            nbs->load_balancer[i],
> +                            OVSDB_IDL_CHANGE_MODIFY) > 0)) {
> +                        /* Add this lb to the tracked data. */
> +                        uuidset_insert(&codlb->assoc_lbs, lb_uuid);
> +                        changed = true;
> +                    }
> +
> +                    if (unode) {
> +                        uuidset_delete(pre_lb_uuids, unode);
> +                    }
> +                }
> +                if (!uuidset_is_empty(pre_lb_uuids)) {
> +                    trk_lb_data->has_dissassoc_lbs_from_od = true;
> +                    changed = true;
> +                }
>
> -                struct uuidset_node *unode = uuidset_find(pre_lb_uuids,
> -                                                          lb_uuid);
> +                uuidset_destroy(pre_lb_uuids);
> +                free(pre_lb_uuids);
> +            }
>
> -                if (!unode || (nbrec_load_balancer_row_get_seqno(
> -                        nbs->load_balancer[i], OVSDB_IDL_CHANGE_MODIFY) > 
> 0)) {
> -                    /* Add this lb to the tracked data. */
> -                    uuidset_insert(&codlb->assoc_lbs, lb_uuid);
> -                    changed = true;
> +            if (ls_lbgrps_changed) {
> +                struct uuidset *pre_lbgrp_uuids = od_lb_data->lbgrps;
> +                od_lb_data->lbgrps = xzalloc(sizeof *od_lb_data->lbgrps);
> +                uuidset_init(od_lb_data->lbgrps);
> +                for (size_t i = 0; i < nbs->n_load_balancer_group; i++) {
> +                    const struct uuid *lbg_uuid =
> +                        &nbs->load_balancer_group[i]->header_.uuid;
> +                    uuidset_insert(od_lb_data->lbgrps, lbg_uuid);
> +
> +                    if (!uuidset_find_and_delete(pre_lbgrp_uuids,
> +                                                 lbg_uuid)) {
> +                        /* Add this lb group to the tracked data. */
> +                        uuidset_insert(&codlb->assoc_lbgrps, lbg_uuid);
> +                        changed = true;
> +                    }
>                  }
>
> -                if (unode) {
> -                    uuidset_delete(pre_lb_uuids, unode);
> +                if (!uuidset_is_empty(pre_lbgrp_uuids)) {
> +                    trk_lb_data->has_dissassoc_lbgrps_from_od = true;
> +                    changed = true;
>                  }
> -            }
>
> -            if (!uuidset_is_empty(pre_lb_uuids)) {
> -                trk_lb_data->has_dissassoc_lbs_from_od = true;
> -                changed = true;
> +                uuidset_destroy(pre_lbgrp_uuids);
> +                free(pre_lbgrp_uuids);
>              }
>
> -            uuidset_destroy(pre_lb_uuids);
> -            free(pre_lb_uuids);
> -
>              ovs_list_insert(&trk_lb_data->crupdated_ls_lbs, 
> &codlb->list_node);
>          }
>      }
> @@ -412,7 +444,7 @@ build_od_lb_map(const struct nbrec_logical_switch_table 
> *nbrec_ls_table,
>  {
>      const struct nbrec_logical_switch *nbrec_ls;
>      NBREC_LOGICAL_SWITCH_TABLE_FOR_EACH (nbrec_ls, nbrec_ls_table) {
> -        if (!nbrec_ls->n_load_balancer) {
> +        if (!nbrec_ls->n_load_balancer && !nbrec_ls->n_load_balancer_group) {
>              continue;
>          }
>
> @@ -422,6 +454,10 @@ build_od_lb_map(const struct nbrec_logical_switch_table 
> *nbrec_ls_table,
>              uuidset_insert(od_lb_data->lbs,
>                             &nbrec_ls->load_balancer[i]->header_.uuid);
>          }
> +        for (size_t i = 0; i < nbrec_ls->n_load_balancer_group; i++) {
> +            uuidset_insert(od_lb_data->lbgrps,
> +                           &nbrec_ls->load_balancer_group[i]->header_.uuid);
> +        }
>      }
>  }
>
> @@ -431,7 +467,9 @@ create_od_lb_data(struct hmap *od_lb_map, const struct 
> uuid *od_uuid)
>      struct od_lb_data *od_lb_data = xzalloc(sizeof *od_lb_data);
>      od_lb_data->od_uuid = *od_uuid;
>      od_lb_data->lbs = xzalloc(sizeof *od_lb_data->lbs);
> +    od_lb_data->lbgrps = xzalloc(sizeof *od_lb_data->lbgrps);
>      uuidset_init(od_lb_data->lbs);
> +    uuidset_init(od_lb_data->lbgrps);
>
>      hmap_insert(od_lb_map, &od_lb_data->hmap_node,
>                  uuid_hash(&od_lb_data->od_uuid));
> @@ -456,7 +494,9 @@ static void
>  destroy_od_lb_data(struct od_lb_data *od_lb_data)
>  {
>      uuidset_destroy(od_lb_data->lbs);
> +    uuidset_destroy(od_lb_data->lbgrps);
>      free(od_lb_data->lbs);
> +    free(od_lb_data->lbgrps);
>      free(od_lb_data);
>  }
>
> @@ -467,6 +507,7 @@ destroy_tracked_data(struct ed_type_lb_data *lb_data)
>      lb_data->tracked_lb_data.has_health_checks = false;
>      lb_data->tracked_lb_data.has_dissassoc_lbs_from_lb_grops = false;
>      lb_data->tracked_lb_data.has_dissassoc_lbs_from_od = false;
> +    lb_data->tracked_lb_data.has_dissassoc_lbgrps_from_od = false;
>
>      struct hmapx_node *node;
>      HMAPX_FOR_EACH_SAFE (node, &lb_data->tracked_lb_data.deleted_lbs) {
> @@ -497,7 +538,7 @@ destroy_tracked_data(struct ed_type_lb_data *lb_data)
>                          &lb_data->tracked_lb_data.crupdated_ls_lbs) {
>          ovs_list_remove(&codlb->list_node);
>          uuidset_destroy(&codlb->assoc_lbs);
> -
> +        uuidset_destroy(&codlb->assoc_lbgrps);
>          free(codlb);
>      }
>  }
> @@ -552,3 +593,10 @@ is_ls_lbs_changed(const struct nbrec_logical_switch 
> *nbs) {
>              ||  nbrec_logical_switch_is_updated(nbs,
>                          NBREC_LOGICAL_SWITCH_COL_LOAD_BALANCER));
>  }
> +
> +static bool
> +is_ls_lbgrps_changed(const struct nbrec_logical_switch *nbs) {
> +    return ((nbrec_logical_switch_is_new(nbs) && nbs->n_load_balancer_group)
> +            ||  nbrec_logical_switch_is_updated(nbs,
> +                        NBREC_LOGICAL_SWITCH_COL_LOAD_BALANCER_GROUP));
> +}
> diff --git a/northd/en-lb-data.h b/northd/en-lb-data.h
> index b2f86322a2..bc09ddb7eb 100644
> --- a/northd/en-lb-data.h
> +++ b/northd/en-lb-data.h
> @@ -33,6 +33,7 @@ struct crupdated_od_lb_data {
>
>      struct uuid od_uuid;
>      struct uuidset assoc_lbs;
> +    struct uuidset assoc_lbgrps;
>  };
>
>  struct tracked_lb_data {
> @@ -62,6 +63,9 @@ struct tracked_lb_data {
>
>      /* Indicates if a lb was disassociated from a logical switch. */
>      bool has_dissassoc_lbs_from_od;
> +
> +    /* Indicates if a lb group was disassociated from a logical switch. */
> +    bool has_dissassoc_lbgrps_from_od;
>  };
>
>  /* struct which maintains the data of the engine node lb_data. */
> diff --git a/northd/en-northd.c b/northd/en-northd.c
> index 9d1838a1a4..545971f76f 100644
> --- a/northd/en-northd.c
> +++ b/northd/en-northd.c
> @@ -236,6 +236,10 @@ northd_lb_data_handler_pre_od(struct engine_node *node, 
> void *data)
>          return false;
>      }
>
> +    if (lb_data->tracked_lb_data.has_dissassoc_lbgrps_from_od) {
> +        return false;
> +    }
> +
>      struct northd_data *nd = data;
>
>      if (!northd_handle_lb_data_changes_pre_od(&lb_data->tracked_lb_data,
> @@ -258,12 +262,15 @@ northd_lb_data_handler_post_od(struct engine_node 
> *node, void *data)
>
>      ovs_assert(lb_data->tracked);
>      ovs_assert(!lb_data->tracked_lb_data.has_dissassoc_lbs_from_od);
> +    ovs_assert(!lb_data->tracked_lb_data.has_dissassoc_lbgrps_from_od);
> +    ovs_assert(!lb_data->tracked_lb_data.has_dissassoc_lbs_from_lb_grops);
>
>      struct northd_data *nd = data;
>
>      if (!northd_handle_lb_data_changes_post_od(&lb_data->tracked_lb_data,
>                                                 &nd->ls_datapaths,
> -                                               &nd->lb_datapaths_map)) {
> +                                               &nd->lb_datapaths_map,
> +                                               &nd->lb_group_datapaths_map)) 
> {
>          return false;
>      }
>
> diff --git a/northd/northd.c b/northd/northd.c
> index 6e8efbd496..1477b79331 100644
> --- a/northd/northd.c
> +++ b/northd/northd.c
> @@ -5035,6 +5035,7 @@ ls_port_create(struct ovsdb_idl_txn *ovnsb_txn, struct 
> hmap *ls_ports,
>   * Presently supports i-p for the below changes:
>   *    - logical switch ports.
>   *    - load balancers.
> + *    - load balancer groups.
>   */
>  static bool
>  ls_changes_can_be_handled(
> @@ -5045,7 +5046,8 @@ ls_changes_can_be_handled(
>      for (col = 0; col < NBREC_LOGICAL_SWITCH_N_COLUMNS; col++) {
>          if (nbrec_logical_switch_is_updated(ls, col)) {
>              if (col == NBREC_LOGICAL_SWITCH_COL_PORTS ||
> -                col == NBREC_LOGICAL_SWITCH_COL_LOAD_BALANCER) {
> +                col == NBREC_LOGICAL_SWITCH_COL_LOAD_BALANCER ||
> +                col == NBREC_LOGICAL_SWITCH_COL_LOAD_BALANCER_GROUP) {
>                  continue;
>              }
>              return false;
> @@ -5076,12 +5078,6 @@ ls_changes_can_be_handled(
>              return false;
>          }
>      }
> -    for (size_t i = 0; i < ls->n_load_balancer_group; i++) {
> -        if 
> (nbrec_load_balancer_group_row_get_seqno(ls->load_balancer_group[i],
> -                                OVSDB_IDL_CHANGE_MODIFY) > 0) {
> -            return false;
> -        }
> -    }
>      for (size_t i = 0; i < ls->n_qos_rules; i++) {
>          if (nbrec_qos_row_get_seqno(ls->qos_rules[i],
>                                  OVSDB_IDL_CHANGE_MODIFY) > 0) {
> @@ -5298,7 +5294,11 @@ fail:
>  /* Return true if changes are handled incrementally, false otherwise.
>   * When there are any changes, try to track what's exactly changed and set
>   * northd_data->change_tracked accordingly: change tracked - true, otherwise,
> - * false. */
> + * false.
> + *
> + * Note: Changes to load balancer and load balancer groups associated with
> + * the logical switches are handled separately in the lb_data change 
> handlers.
> + * */
>  bool
>  northd_handle_ls_changes(struct ovsdb_idl_txn *ovnsb_idl_txn,
>                           const struct northd_input *ni,
> @@ -5434,7 +5434,7 @@ northd_handle_lb_data_changes_pre_od(struct 
> tracked_lb_data *trk_lb_data,
>                                       struct ovn_datapaths *ls_datapaths,
>                                       struct ovn_datapaths *lr_datapaths,
>                                       struct hmap *lb_datapaths_map,
> -                                     struct hmap *lb_group_datapaths_map)
> +                                     struct hmap *lbgrp_datapaths_map)
>  {
>      struct ovn_lb_datapaths *lb_dps;
>      struct ovn_northd_lb *lb;
> @@ -5482,12 +5482,12 @@ northd_handle_lb_data_changes_pre_od(struct 
> tracked_lb_data *trk_lb_data,
>          lbg = crupdated_lbg->lbg;
>          const struct uuid *lb_uuid = &lbg->uuid;
>
> -        lb_group_dps = ovn_lb_group_datapaths_find(lb_group_datapaths_map,
> +        lb_group_dps = ovn_lb_group_datapaths_find(lbgrp_datapaths_map,
>                                                     lb_uuid);
>          if (!lb_group_dps) {
>              lb_group_dps = ovn_lb_group_datapaths_create(
>                  lbg, ods_size(ls_datapaths), ods_size(lr_datapaths));
> -            hmap_insert(lb_group_datapaths_map, &lb_group_dps->hmap_node,
> +            hmap_insert(lbgrp_datapaths_map, &lb_group_dps->hmap_node,
>                          uuid_hash(lb_uuid));
>          }
>      }
> @@ -5511,12 +5511,15 @@ northd_handle_lb_data_changes_pre_od(struct 
> tracked_lb_data *trk_lb_data,
>  bool
>  northd_handle_lb_data_changes_post_od(struct tracked_lb_data *trk_lb_data,
>                                        struct ovn_datapaths *ls_datapaths,
> -                                      struct hmap *lb_datapaths_map)
> +                                      struct hmap *lb_datapaths_map,
> +                                      struct hmap *lbgrp_datapaths_map)
>  {
>      ovs_assert(!trk_lb_data->has_health_checks);
> +    ovs_assert(!trk_lb_data->has_dissassoc_lbs_from_lb_grops);
>
>      struct ovn_northd_lb *lb;
>      struct ovn_lb_datapaths *lb_dps;
> +    struct ovn_lb_group_datapaths *lbgrp_dps;
>      struct ovn_datapath *od;
>      struct crupdated_od_lb_data *codlb;
>
> @@ -5531,6 +5534,22 @@ northd_handle_lb_data_changes_post_od(struct 
> tracked_lb_data *trk_lb_data,
>              ovn_lb_datapaths_add_ls(lb_dps, 1, &od);
>          }
>
> +        UUIDSET_FOR_EACH (uuidnode, &codlb->assoc_lbgrps) {
> +            lbgrp_dps = ovn_lb_group_datapaths_find(lbgrp_datapaths_map,
> +                                                    &uuidnode->uuid);
> +            ovs_assert(lbgrp_dps);
> +            ovn_lb_group_datapaths_add_ls(lbgrp_dps, 1, &od);
> +
> +            /* Associate all the lbs of the lbgrp to the datapath 'od' */
> +            for (size_t j = 0; j < lbgrp_dps->lb_group->n_lbs; j++) {
> +                const struct uuid *lb_uuid
> +                    = &lbgrp_dps->lb_group->lbs[j]->nlb->header_.uuid;
> +                lb_dps = ovn_lb_datapaths_find(lb_datapaths_map, lb_uuid);
> +                ovs_assert(lb_dps);
> +                ovn_lb_datapaths_add_ls(lb_dps, 1, &od);
> +            }
> +        }
> +
>          /* Re-evaluate 'od->has_lb_vip' */
>          init_lb_for_datapath(od);
>      }
> @@ -5551,6 +5570,33 @@ northd_handle_lb_data_changes_post_od(struct 
> tracked_lb_data *trk_lb_data,
>          }
>      }
>
> +    struct ovn_lb_group *lbgrp;
> +    struct crupdated_lb_group *crupdated_lbg;
> +    HMAP_FOR_EACH (crupdated_lbg, hmap_node,
> +                   &trk_lb_data->crupdated_lb_groups) {
> +        lbgrp = crupdated_lbg->lbg;
> +        const struct uuid *lb_uuid = &lbgrp->uuid;
> +
> +        lbgrp_dps = ovn_lb_group_datapaths_find(lbgrp_datapaths_map,
> +                                                lb_uuid);
> +        ovs_assert(lbgrp_dps);
> +
> +        struct hmapx_node *hnode;
> +        HMAPX_FOR_EACH (hnode, &crupdated_lbg->assoc_lbs) {
> +            lb = hnode->data;
> +            lb_uuid = &lb->nlb->header_.uuid;
> +            lb_dps = ovn_lb_datapaths_find(lb_datapaths_map, lb_uuid);
> +            ovs_assert(lb_dps);
> +            for (size_t i = 0; i < lbgrp_dps->n_ls; i++) {
> +                od = lbgrp_dps->ls[i];
> +                ovn_lb_datapaths_add_ls(lb_dps, 1, &od);
> +
> +                /* Re-evaluate 'od->has_lb_vip' */
> +                init_lb_for_datapath(od);
> +            }
> +        }
> +    }
> +
>      return true;
>  }
>
> diff --git a/northd/northd.h b/northd/northd.h
> index 0ed7215356..044d4ee0c0 100644
> --- a/northd/northd.h
> +++ b/northd/northd.h
> @@ -354,10 +354,11 @@ bool northd_handle_lb_data_changes_pre_od(struct 
> tracked_lb_data *,
>                                            struct ovn_datapaths *ls_datapaths,
>                                            struct ovn_datapaths *lr_datapaths,
>                                            struct hmap *lb_datapaths_map,
> -                                          struct hmap 
> *lb_group_datapaths_map);
> +                                          struct hmap *lbgrp_datapaths_map);
>  bool northd_handle_lb_data_changes_post_od(struct tracked_lb_data *,
>                                             struct ovn_datapaths 
> *ls_datapaths,
> -                                           struct hmap *lb_datapaths_map);
> +                                           struct hmap *lb_datapaths_map,
> +                                           struct hmap *lbgrp_datapaths_map);
>
>  void build_bfd_table(struct ovsdb_idl_txn *ovnsb_txn,
>                       const struct nbrec_bfd_table *,
> diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
> index 9e9b26ce09..b8b2ee390e 100644
> --- a/tests/ovn-northd.at
> +++ b/tests/ovn-northd.at
> @@ -2141,6 +2141,18 @@ check ovn-nbctl --wait=sb sync
>  AT_CHECK([ovn-sbctl lflow-list | grep "ls_out_pre_lb.*priority=100" | grep 
> reg0 | sort], [0], [dnl
>  ])
>
> +# Now associate vip again to lb4 and then delete it.
> +check ovn-nbctl set load_balancer $lb4 vips:"10.0.0.13"="10.0.0.6"
> +check ovn-nbctl --wait=sb sync
> +AT_CHECK([ovn-sbctl lflow-list | grep "ls_out_pre_lb.*priority=100" | grep 
> reg0 | sort], [0], [dnl
> +  table=1 (ls_out_pre_lb      ), priority=100  , match=(ip), 
> action=(reg0[[2]] = 1; next;)
> +])
> +
> +check ovn-nbctl lb-del $lb4
> +check ovn-nbctl --wait=sb sync
> +AT_CHECK([ovn-sbctl lflow-list | grep "ls_out_pre_lb.*priority=100" | grep 
> reg0 | sort], [0], [dnl
> +])
> +
>  AT_CLEANUP
>  ])
>
> @@ -10016,21 +10028,21 @@ CHECK_NO_CHANGE_AFTER_RECOMPUTE
>  check as northd ovn-appctl -t NORTHD_TYPE inc-engine/clear-stats
>  check ovn-nbctl add logical_switch sw0 load_balancer_group $lbg1_uuid
>  check_engine_stats lb_data norecompute compute
> -check_engine_stats northd recompute nocompute
> +check_engine_stats northd norecompute compute
>  check_engine_stats lflow recompute nocompute
>
> -# Update lb and this should result in recompute
> +# Update lb and this should not result in northd recompute
>  check as northd ovn-appctl -t NORTHD_TYPE inc-engine/clear-stats
>  check ovn-nbctl --wait=sb set load_balancer . options:bar=foo
>  check_engine_stats lb_data norecompute compute
> -check_engine_stats northd recompute nocompute
> +check_engine_stats northd norecompute compute
>  check_engine_stats lflow recompute nocompute
>
>  # Modify the backend of the lb1 vip
>  check as northd ovn-appctl -t NORTHD_TYPE inc-engine/clear-stats
>  check ovn-nbctl --wait=sb set load_balancer lb1 
> vips:'"10.0.0.10:80"'='"10.0.0.100:80"'
>  check_engine_stats lb_data norecompute compute
> -check_engine_stats northd recompute nocompute
> +check_engine_stats northd norecompute compute
>  check_engine_stats lflow recompute nocompute
>  CHECK_NO_CHANGE_AFTER_RECOMPUTE
>
> @@ -10038,7 +10050,7 @@ CHECK_NO_CHANGE_AFTER_RECOMPUTE
>  check as northd ovn-appctl -t NORTHD_TYPE inc-engine/clear-stats
>  check ovn-nbctl --wait=sb clear load_Balancer lb1 vips
>  check_engine_stats lb_data norecompute compute
> -check_engine_stats northd recompute nocompute
> +check_engine_stats northd norecompute compute
>  check_engine_stats lflow recompute nocompute
>  CHECK_NO_CHANGE_AFTER_RECOMPUTE
>
> @@ -10046,7 +10058,7 @@ CHECK_NO_CHANGE_AFTER_RECOMPUTE
>  check as northd ovn-appctl -t NORTHD_TYPE inc-engine/clear-stats
>  check ovn-nbctl --wait=sb lb-add lb1 10.0.0.10:80 10.0.0.3:80
>  check_engine_stats lb_data norecompute compute
> -check_engine_stats northd recompute nocompute
> +check_engine_stats northd norecompute compute
>  check_engine_stats lflow recompute nocompute
>  CHECK_NO_CHANGE_AFTER_RECOMPUTE
>
> @@ -10054,7 +10066,7 @@ CHECK_NO_CHANGE_AFTER_RECOMPUTE
>  check as northd ovn-appctl -t NORTHD_TYPE inc-engine/clear-stats
>  check ovn-nbctl --wait=sb lb-add lb1 10.0.0.20:80 10.0.0.30:8080
>  check_engine_stats lb_data norecompute compute
> -check_engine_stats northd recompute nocompute
> +check_engine_stats northd norecompute compute
>  check_engine_stats lflow recompute nocompute
>  CHECK_NO_CHANGE_AFTER_RECOMPUTE
>
> @@ -10113,7 +10125,7 @@ check_engine_stats lflow recompute nocompute
>  check as northd ovn-appctl -t NORTHD_TYPE inc-engine/clear-stats
>  check ovn-nbctl add logical_switch sw0 load_balancer_group $lbg1_uuid
>  check_engine_stats lb_data norecompute compute
> -check_engine_stats northd recompute nocompute
> +check_engine_stats northd norecompute compute
>  check_engine_stats lflow recompute nocompute
>
>  check as northd ovn-appctl -t NORTHD_TYPE inc-engine/clear-stats
> @@ -10154,7 +10166,7 @@ check_engine_stats lflow recompute nocompute
>  check as northd ovn-appctl -t NORTHD_TYPE inc-engine/clear-stats
>  check ovn-nbctl set logical_switch sw0 load_balancer_group=$lbg1_uuid
>  check_engine_stats lb_data norecompute compute
> -check_engine_stats northd recompute nocompute
> +check_engine_stats northd norecompute compute
>  check_engine_stats lflow recompute nocompute
>  CHECK_NO_CHANGE_AFTER_RECOMPUTE
>
> --
> 2.40.1
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>


Looks good to me, thanks.

Reviewed-by: Ales Musil <[email protected]>

-- 

Ales Musil

Senior Software Engineer - OVN Core

Red Hat EMEA

[email protected]    IM: amusil

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to