On 10/27/20 6:19 PM, [email protected] wrote:
> From: Numan Siddique <[email protected]>
>
> Signed-off-by: Numan Siddique <[email protected]>
> ---
> utilities/ovn-sbctl.c | 55 +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 55 insertions(+)
>
> diff --git a/utilities/ovn-sbctl.c b/utilities/ovn-sbctl.c
> index 00c112c7e5..5b593b38cb 100644
> --- a/utilities/ovn-sbctl.c
> +++ b/utilities/ovn-sbctl.c
> @@ -542,6 +542,11 @@ pre_get_info(struct ctl_context *ctx)
> ovsdb_idl_add_column(ctx->idl, &sbrec_mac_binding_col_logical_port);
> ovsdb_idl_add_column(ctx->idl, &sbrec_mac_binding_col_ip);
> ovsdb_idl_add_column(ctx->idl, &sbrec_mac_binding_col_mac);
> +
> + ovsdb_idl_add_column(ctx->idl, &sbrec_load_balancer_col_datapaths);
> + ovsdb_idl_add_column(ctx->idl, &sbrec_load_balancer_col_vips);
> + ovsdb_idl_add_column(ctx->idl, &sbrec_load_balancer_col_name);
> + ovsdb_idl_add_column(ctx->idl, &sbrec_load_balancer_col_protocol);
> }
>
> static struct cmd_show_table cmd_show_tables[] = {
> @@ -1009,6 +1014,55 @@ cmd_lflow_list_chassis(struct ctl_context *ctx, struct
> vconn *vconn,
> }
> }
>
> +static void
> +cmd_lflow_list_load_balancers(struct ctl_context *ctx, struct vconn *vconn,
> + const struct sbrec_datapath_binding *datapath,
> + bool stats, bool print_uuid)
> +{
> + const struct sbrec_load_balancer *lb;
> + const struct sbrec_load_balancer *lb_prev = NULL;
> + SBREC_LOAD_BALANCER_FOR_EACH (lb, ctx->idl) {
> + bool dp_found = false;
> + if (datapath) {
> + for (size_t i = 0; i < lb->n_datapaths; i++) {
> + if (datapath == lb->datapaths[i]) {
> + dp_found = true;
> + break;
> + }
> + }
> + if (datapath && !dp_found) {
'datapath' is always 'true' here.
Nit: we could avoid 'dp_found' by checking 'i == lb->n_datapaths'.
> + continue;
> + }
> + }
> +
> + if (!lb_prev) {
> + printf("\nLoad Balancers:\n");
> + }
> +
> + printf(" ");
> + print_uuid_part(&lb->header_.uuid, print_uuid);
> + printf("name=\"%s\", protocol=\"%s\", ", lb->name, lb->protocol);
> + if (!dp_found) {
> + for (size_t i = 0; i < lb->n_datapaths; i++) {
> + print_vflow_datapath_name(lb->datapaths[i], true);
> + }
> + }
Here we print the SB LB record information. If the LB refers multiple
datapaths we should not filter them out regardless of the 'datapath' argument
value.
Thanks,
Dumitru
> +
> + printf("\n vips:\n");
> + struct smap_node *node;
> + SMAP_FOR_EACH (node, &lb->vips) {
> + printf(" %s = %s\n", node->key, node->value);
> + }
> + printf("\n");
> +
> + if (vconn) {
> + sbctl_dump_openflow(vconn, &lb->header_.uuid, stats);
> + }
> +
> + lb_prev = lb;
> + }
> +}
> +
> static void
> cmd_lflow_list(struct ctl_context *ctx)
> {
> @@ -1118,6 +1172,7 @@ cmd_lflow_list(struct ctl_context *ctx)
> cmd_lflow_list_mac_bindings(ctx, vconn, datapath, stats, print_uuid);
> cmd_lflow_list_mc_groups(ctx, vconn, datapath, stats, print_uuid);
> cmd_lflow_list_chassis(ctx, vconn, stats, print_uuid);
> + cmd_lflow_list_load_balancers(ctx, vconn, datapath, stats,
> print_uuid);
> }
>
> vconn_close(vconn);
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev