Thanks for this, Lorenzo.

Acked-by: Mark Michelson <[email protected]>

On 4/27/22 06:47, Lorenzo Bianconi wrote:
Dump load balancers belonging to the load_balancer groups attached to the
specified logical switch/logical router running ls-lb-list/lr-lb-list.

Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2059261
Signed-off-by: Lorenzo Bianconi <[email protected]>
---
  tests/ovn-nbctl.at    | 70 +++++++++++++++++++++++++++++++++++++++++--
  utilities/ovn-nbctl.c | 54 +++++++++++++++++++++++++++++++++
  2 files changed, 122 insertions(+), 2 deletions(-)

diff --git a/tests/ovn-nbctl.at b/tests/ovn-nbctl.at
index f9b9defd0..2388eba2e 100644
--- a/tests/ovn-nbctl.at
+++ b/tests/ovn-nbctl.at
@@ -997,6 +997,30 @@ AT_CHECK([ovn-nbctl ls-lb-del ls0 lb3])
  AT_CHECK([ovn-nbctl ls-lb-list ls0 | uuidfilt], [0], [])
  AT_CHECK([ovn-nbctl --if-exists ls-lb-del ls0 lb1])
+AT_CHECK([ovn-nbctl lb-add lb4 40.0.0.10 162.168.10.10,162.168.10.20])
+AT_CHECK([ovn-nbctl lb-add lb5 50.0.0.10 172.168.10.10,172.168.10.20])
+AT_CHECK([ovn-nbctl lb-add lb6 60.0.0.10 182.168.10.10,182.168.10.20])
+
+lb4=$(fetch_column nb:load_balancer _uuid name=lb4)
+lb5=$(fetch_column nb:load_balancer _uuid name=lb5)
+lb6=$(fetch_column nb:load_balancer _uuid name=lb6)
+
+lbg=$(ovn-nbctl create load_balancer_group name=lbg -- \
+  add load_balancer_group lbg load_balancer $lb4 -- \
+  add load_balancer_group lbg load_balancer $lb5 -- \
+  add load_balancer_group lbg load_balancer $lb6)
+
+AT_CHECK([ovn-nbctl add logical_switch ls0 load_balancer_group $lbg])
+
+AT_CHECK([ovn-nbctl ls-lb-list ls0 | uuidfilt], [0], [dnl
+UUID                                    LB                  PROTO      VIP     
     IPs
+<0>    lb4                 tcp        40.0.0.10    162.168.10.10,162.168.10.20
+<1>    lb5                 tcp        50.0.0.10    172.168.10.10,172.168.10.20
+<2>    lb6                 tcp        60.0.0.10    182.168.10.10,182.168.10.20
+])
+
+AT_CHECK([ovn-nbctl remove logical_switch ls0 load_balancer_group $lbg])
+
  dnl Remove all load balancers from logical switch.
  AT_CHECK([ovn-nbctl ls-lb-add ls0 lb0])
  AT_CHECK([ovn-nbctl ls-lb-add ls0 lb1])
@@ -1046,7 +1070,16 @@ AT_CHECK([ovn-nbctl ls-lb-add ls0 lb1])
  AT_CHECK([ovn-nbctl lb-del lb0])
  AT_CHECK([ovn-nbctl lb-del lb1])
  AT_CHECK([ovn-nbctl lr-lb-list lr0 | uuidfilt], [0], [])
-AT_CHECK([ovn-nbctl ls-lb-list ls0 | uuidfilt], [0], [])])
+AT_CHECK([ovn-nbctl ls-lb-list ls0 | uuidfilt], [0], [])
+
+AT_CHECK([ovn-nbctl add logical_router lr0 load_balancer_group $lbg])
+
+AT_CHECK([ovn-nbctl lr-lb-list lr0 | uuidfilt], [0], [dnl
+UUID                                    LB                  PROTO      VIP     
     IPs
+<0>    lb4                 tcp        40.0.0.10    162.168.10.10,162.168.10.20
+<1>    lb5                 tcp        50.0.0.10    172.168.10.10,172.168.10.20
+<2>    lb6                 tcp        60.0.0.10    182.168.10.10,182.168.10.20
+])])
dnl --------------------------------------------------------------------- @@ -1271,6 +1304,30 @@ AT_CHECK([ovn-nbctl ls-lb-add ls0 lb3])
  AT_CHECK([ovn-nbctl ls-lb-del ls0])
  AT_CHECK([ovn-nbctl ls-lb-list ls0 | uuidfilt], [0], [])
+AT_CHECK([ovn-nbctl lb-add lb4 [[ae07::10]]:80 [[fd0f::10]]:80,[[fd0f::20]]:80])
+AT_CHECK([ovn-nbctl lb-add lb5 [[ae08::10]]:80 [[fd0f::10]]:80,[[fd0f::20]]:80 
udp])
+AT_CHECK([ovn-nbctl lb-add lb6 ae09::10 fd0f::10,fd0f::20])
+
+lb4=$(fetch_column nb:load_balancer _uuid name=lb4)
+lb5=$(fetch_column nb:load_balancer _uuid name=lb5)
+lb6=$(fetch_column nb:load_balancer _uuid name=lb6)
+
+lbg=$(ovn-nbctl create load_balancer_group name=lbg -- \
+  add load_balancer_group lbg load_balancer $lb4 -- \
+  add load_balancer_group lbg load_balancer $lb5 -- \
+  add load_balancer_group lbg load_balancer $lb6)
+
+AT_CHECK([ovn-nbctl add logical_switch ls0 load_balancer_group $lbg])
+
+AT_CHECK([ovn-nbctl ls-lb-list ls0 | uuidfilt], [0], [dnl
+UUID                                    LB                  PROTO      VIP     
         IPs
+<0>    lb4                 tcp        [[ae07::10]]:80    
[[fd0f::10]]:80,[[fd0f::20]]:80
+<1>    lb5                 udp        [[ae08::10]]:80    
[[fd0f::10]]:80,[[fd0f::20]]:80
+<2>    lb6                 tcp        ae09::10         fd0f::10,fd0f::20
+])
+
+AT_CHECK([ovn-nbctl remove logical_switch ls0 load_balancer_group $lbg])
+
  dnl Add load balancer to logical router.
  AT_CHECK([ovn-nbctl lr-add lr0])
  AT_CHECK([ovn-nbctl lr-lb-add lr0 lb0])
@@ -1305,7 +1362,16 @@ AT_CHECK([ovn-nbctl lr-lb-add lr0 lb0])
  AT_CHECK([ovn-nbctl lr-lb-add lr0 lb1])
  AT_CHECK([ovn-nbctl lr-lb-add lr0 lb3])
  AT_CHECK([ovn-nbctl lr-lb-del lr0])
-AT_CHECK([ovn-nbctl lr-lb-list lr0 | uuidfilt], [0], [])])
+AT_CHECK([ovn-nbctl lr-lb-list lr0 | uuidfilt], [0], [])
+
+AT_CHECK([ovn-nbctl add logical_router lr0 load_balancer_group $lbg])
+
+AT_CHECK([ovn-nbctl lr-lb-list lr0 | uuidfilt], [0], [dnl
+UUID                                    LB                  PROTO      VIP     
         IPs
+<0>    lb4                 tcp        [[ae07::10]]:80    
[[fd0f::10]]:80,[[fd0f::20]]:80
+<1>    lb5                 udp        [[ae08::10]]:80    
[[fd0f::10]]:80,[[fd0f::20]]:80
+<2>    lb6                 tcp        ae09::10         fd0f::10,fd0f::20
+])])
dnl --------------------------------------------------------------------- diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
index e747f6933..d09fd5963 100644
--- a/utilities/ovn-nbctl.c
+++ b/utilities/ovn-nbctl.c
@@ -3233,10 +3233,16 @@ nbctl_pre_lr_lb_list(struct ctl_context *ctx)
  {
      ovsdb_idl_add_column(ctx->idl, &nbrec_logical_router_col_name);
      ovsdb_idl_add_column(ctx->idl, &nbrec_logical_router_col_load_balancer);
+    ovsdb_idl_add_column(ctx->idl,
+                         &nbrec_logical_router_col_load_balancer_group);
ovsdb_idl_add_column(ctx->idl, &nbrec_load_balancer_col_name);
      ovsdb_idl_add_column(ctx->idl, &nbrec_load_balancer_col_protocol);
      ovsdb_idl_add_column(ctx->idl, &nbrec_load_balancer_col_vips);
+
+    ovsdb_idl_add_column(ctx->idl, &nbrec_load_balancer_group_col_name);
+    ovsdb_idl_add_column(ctx->idl,
+                         &nbrec_load_balancer_group_col_load_balancer);
  }
static void
@@ -3252,16 +3258,37 @@ nbctl_lr_lb_list(struct ctl_context *ctx)
          ctx->error = error;
          return;
      }
+
      for (int i = 0; i < lr->n_load_balancer; i++) {
          const struct nbrec_load_balancer *lb
              = lr->load_balancer[i];
          vip_width = lb_get_max_vip_length(lb, vip_width);
      }
+    for (int i = 0; i < lr->n_load_balancer_group; i++) {
+        const struct nbrec_load_balancer_group *lbg
+            = lr->load_balancer_group[i];
+        for (int j = 0; j < lbg->n_load_balancer; j++) {
+            const struct nbrec_load_balancer *lb
+                = lbg->load_balancer[j];
+            vip_width = lb_get_max_vip_length(lb, vip_width);
+        }
+    }
+
      for (int i = 0; i < lr->n_load_balancer; i++) {
          const struct nbrec_load_balancer *lb
              = lr->load_balancer[i];
          lb_info_add_smap(lb, &lbs, vip_width);
      }
+    /* Add load balancer groups. */
+    for (int i = 0; i < lr->n_load_balancer_group; i++) {
+        const struct nbrec_load_balancer_group *lbg
+            = lr->load_balancer_group[i];
+        for (int j = 0; j < lbg->n_load_balancer; j++) {
+            const struct nbrec_load_balancer *lb
+                = lbg->load_balancer[j];
+            lb_info_add_smap(lb, &lbs, vip_width);
+        }
+    }
lb_info_print(ctx, &lbs, vip_width);
      smap_destroy(&lbs);
@@ -3369,10 +3396,16 @@ nbctl_pre_ls_lb_list(struct ctl_context *ctx)
  {
      ovsdb_idl_add_column(ctx->idl, &nbrec_logical_switch_col_name);
      ovsdb_idl_add_column(ctx->idl, &nbrec_logical_switch_col_load_balancer);
+    ovsdb_idl_add_column(ctx->idl,
+                         &nbrec_logical_switch_col_load_balancer_group);
ovsdb_idl_add_column(ctx->idl, &nbrec_load_balancer_col_name);
      ovsdb_idl_add_column(ctx->idl, &nbrec_load_balancer_col_protocol);
      ovsdb_idl_add_column(ctx->idl, &nbrec_load_balancer_col_vips);
+
+    ovsdb_idl_add_column(ctx->idl, &nbrec_load_balancer_group_col_name);
+    ovsdb_idl_add_column(ctx->idl,
+                         &nbrec_load_balancer_group_col_load_balancer);
  }
static void
@@ -3388,16 +3421,37 @@ nbctl_ls_lb_list(struct ctl_context *ctx)
          ctx->error = error;
          return;
      }
+
      for (int i = 0; i < ls->n_load_balancer; i++) {
          const struct nbrec_load_balancer *lb
              = ls->load_balancer[i];
          vip_width = lb_get_max_vip_length(lb, vip_width);
      }
+    for (int i = 0; i < ls->n_load_balancer_group; i++) {
+        const struct nbrec_load_balancer_group *lbg
+            = ls->load_balancer_group[i];
+        for (int j = 0; j < lbg->n_load_balancer; j++) {
+            const struct nbrec_load_balancer *lb
+                = lbg->load_balancer[j];
+            vip_width = lb_get_max_vip_length(lb, vip_width);
+        }
+    }
+
      for (int i = 0; i < ls->n_load_balancer; i++) {
          const struct nbrec_load_balancer *lb
              = ls->load_balancer[i];
          lb_info_add_smap(lb, &lbs, vip_width);
      }
+    /* Add load balancer groups. */
+    for (int i = 0; i < ls->n_load_balancer_group; i++) {
+        const struct nbrec_load_balancer_group *lbg
+            = ls->load_balancer_group[i];
+        for (int j = 0; j < lbg->n_load_balancer; j++) {
+            const struct nbrec_load_balancer *lb
+                = lbg->load_balancer[j];
+            lb_info_add_smap(lb, &lbs, vip_width);
+        }
+    }
lb_info_print(ctx, &lbs, vip_width);
      smap_destroy(&lbs);


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

Reply via email to