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); -- 2.35.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
