diff mbox series

[ovs-dev] northd: add --event option to enable controller_event for empty_lb

Message ID 63b9e806530c0787f10a223554a19755ecb755e5.1611336053.git.lorenzo.bianconi@redhat.com
State Accepted
Headers show
Series [ovs-dev] northd: add --event option to enable controller_event for empty_lb | expand

Commit Message

Lorenzo Bianconi Jan. 22, 2021, 5:25 p.m. UTC
Introduce the --event option to enable empty_lb controller event for a
load_balancer with no backends (doing so the option is per-lb and not
global).

$ovn-nbctl --event lb-add lb0 192.168.0.100:80 ""

controller_event_en global variable is not removed for backward
compatibility but it is deprecated

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
---
 northd/ovn-northd.c       |  5 ++++-
 tests/ovn.at              |  7 +++----
 utilities/ovn-nbctl.8.xml | 10 +++++++++-
 utilities/ovn-nbctl.c     | 13 ++++++++++++-
 4 files changed, 28 insertions(+), 7 deletions(-)

Comments

Numan Siddique Jan. 27, 2021, 9:25 a.m. UTC | #1
On Fri, Jan 22, 2021 at 10:56 PM Lorenzo Bianconi
<lorenzo.bianconi@redhat.com> wrote:
>
> Introduce the --event option to enable empty_lb controller event for a
> load_balancer with no backends (doing so the option is per-lb and not
> global).
>
> $ovn-nbctl --event lb-add lb0 192.168.0.100:80 ""
>
> controller_event_en global variable is not removed for backward
> compatibility but it is deprecated
>
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>

Thanks Lorenzo. I applied this patch to master.

Numan

> ---
>  northd/ovn-northd.c       |  5 ++++-
>  tests/ovn.at              |  7 +++----
>  utilities/ovn-nbctl.8.xml | 10 +++++++++-
>  utilities/ovn-nbctl.c     | 13 ++++++++++++-
>  4 files changed, 28 insertions(+), 7 deletions(-)
>
> diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
> index 27df6a379..e92c75726 100644
> --- a/northd/ovn-northd.c
> +++ b/northd/ovn-northd.c
> @@ -4860,7 +4860,9 @@ build_empty_lb_event_flow(struct ovn_datapath *od, struct hmap *lflows,
>                            struct nbrec_load_balancer *lb,
>                            int pl, struct shash *meter_groups)
>  {
> -    if (!controller_event_en || lb_vip->n_backends ||
> +    bool controller_event = smap_get_bool(&lb->options, "event", false) ||
> +                            controller_event_en; /* deprecated */
> +    if (!controller_event || lb_vip->n_backends ||
>          lb_vip->empty_backend_rej) {
>          return;
>      }
> @@ -12611,6 +12613,7 @@ ovnnb_db_run(struct northd_context *ctx,
>
>      use_logical_dp_groups = smap_get_bool(&nb->options,
>                                            "use_logical_dp_groups", false);
> +    /* deprecated, use --event instead */
>      controller_event_en = smap_get_bool(&nb->options,
>                                          "controller_event", false);
>      check_lsp_is_up = !smap_get_bool(&nb->options,
> diff --git a/tests/ovn.at b/tests/ovn.at
> index 8f884241d..5bc8331b1 100644
> --- a/tests/ovn.at
> +++ b/tests/ovn.at
> @@ -16947,16 +16947,15 @@ ovs-vsctl -- add-port br-int vif33 -- \
>          options:rxq_pcap=hv$i/vif33-rx.pcap \
>          ofport-request=33
>
> -ovn-nbctl --wait=hv set NB_Global . options:controller_event=true
> -ovn-nbctl lb-add lb0 192.168.1.100:80 ""
> +ovn-nbctl --event lb-add lb0 192.168.1.100:80 ""
>  ovn-nbctl ls-lb-add sw0 lb0
>  uuid_lb0=$(ovn-nbctl --bare --columns=_uuid find load_balancer name=lb0)
>
> -ovn-nbctl lb-add lb1 192.168.2.100:80 ""
> +ovn-nbctl --event lb-add lb1 192.168.2.100:80 ""
>  ovn-nbctl lr-lb-add lr0 lb1
>  uuid_lb1=$(ovn-nbctl --bare --columns=_uuid find load_balancer name=lb1)
>
> -ovn-nbctl lb-add lb2 [[2001::10]]:50051 ""
> +ovn-nbctl --event lb-add lb2 [[2001::10]]:50051 ""
>  ovn-nbctl ls-lb-add sw0 lb2
>  uuid_lb2=$(ovn-nbctl --bare --columns=_uuid find load_balancer name=lb2)
>
> diff --git a/utilities/ovn-nbctl.8.xml b/utilities/ovn-nbctl.8.xml
> index e6fec9980..6ed8bcb75 100644
> --- a/utilities/ovn-nbctl.8.xml
> +++ b/utilities/ovn-nbctl.8.xml
> @@ -905,7 +905,7 @@
>
>      <h1>Load Balancer Commands</h1>
>      <dl>
> -        <dt>[<code>--may-exist</code> | <code>--add-duplicate</code> | <code>--reject</code>] <code>lb-add</code> <var>lb</var> <var>vip</var> <var>ips</var> [<var>protocol</var>]</dt>
> +        <dt>[<code>--may-exist</code> | <code>--add-duplicate</code> | <code>--reject</code> | <code>--event</code>] <code>lb-add</code> <var>lb</var> <var>vip</var> <var>ips</var> [<var>protocol</var>]</dt>
>        <dd>
>          <p>
>           Creates a new load balancer named <var>lb</var> with the provided
> @@ -947,6 +947,14 @@
>           empty_lb SB controller event for this load balancer.
>          </p>
>
> +        <p>
> +         If the load balancer is created with <code>--event</code> option and
> +         it has no active backends, whenever the lb receives traffic, the event
> +         is reported in the Controller_Event table in the SB db.
> +         Please note <code>--event</code> option can't be specified with
> +         <code>--reject</code> one.
> +        </p>
> +
>          <p>
>           The following example adds a load balancer.
>          </p>
> diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
> index 2342ead4e..6eaae0866 100644
> --- a/utilities/ovn-nbctl.c
> +++ b/utilities/ovn-nbctl.c
> @@ -2836,6 +2836,13 @@ nbctl_lb_add(struct ctl_context *ctx)
>      bool may_exist = shash_find(&ctx->options, "--may-exist") != NULL;
>      bool add_duplicate = shash_find(&ctx->options, "--add-duplicate") != NULL;
>      bool empty_backend_rej = shash_find(&ctx->options, "--reject") != NULL;
> +    bool empty_backend_event = shash_find(&ctx->options, "--event") != NULL;
> +
> +    if (empty_backend_event && empty_backend_rej) {
> +            ctl_error(ctx,
> +                      "--reject and --event can't specified at the same time");
> +            return;
> +    }
>
>      const char *lb_proto;
>      bool is_update_proto = false;
> @@ -2953,6 +2960,10 @@ nbctl_lb_add(struct ctl_context *ctx)
>          const struct smap options = SMAP_CONST1(&options, "reject", "true");
>          nbrec_load_balancer_set_options(lb, &options);
>      }
> +    if (empty_backend_event) {
> +        const struct smap options = SMAP_CONST1(&options, "event", "true");
> +        nbrec_load_balancer_set_options(lb, &options);
> +    }
>  out:
>      ds_destroy(&lb_ips_new);
>
> @@ -6517,7 +6528,7 @@ static const struct ctl_command_syntax nbctl_commands[] = {
>        nbctl_lr_nat_set_ext_ips, NULL, "--is-exempted", RW},
>      /* load balancer commands. */
>      { "lb-add", 3, 4, "LB VIP[:PORT] IP[:PORT]... [PROTOCOL]", NULL,
> -      nbctl_lb_add, NULL, "--may-exist,--add-duplicate,--reject", RW },
> +      nbctl_lb_add, NULL, "--may-exist,--add-duplicate,--reject,--event", RW },
>      { "lb-del", 1, 2, "LB [VIP]", NULL, nbctl_lb_del, NULL,
>          "--if-exists", RW },
>      { "lb-list", 0, 1, "[LB]", NULL, nbctl_lb_list, NULL, "", RO },
> --
> 2.29.2
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
diff mbox series

Patch

diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
index 27df6a379..e92c75726 100644
--- a/northd/ovn-northd.c
+++ b/northd/ovn-northd.c
@@ -4860,7 +4860,9 @@  build_empty_lb_event_flow(struct ovn_datapath *od, struct hmap *lflows,
                           struct nbrec_load_balancer *lb,
                           int pl, struct shash *meter_groups)
 {
-    if (!controller_event_en || lb_vip->n_backends ||
+    bool controller_event = smap_get_bool(&lb->options, "event", false) ||
+                            controller_event_en; /* deprecated */
+    if (!controller_event || lb_vip->n_backends ||
         lb_vip->empty_backend_rej) {
         return;
     }
@@ -12611,6 +12613,7 @@  ovnnb_db_run(struct northd_context *ctx,
 
     use_logical_dp_groups = smap_get_bool(&nb->options,
                                           "use_logical_dp_groups", false);
+    /* deprecated, use --event instead */
     controller_event_en = smap_get_bool(&nb->options,
                                         "controller_event", false);
     check_lsp_is_up = !smap_get_bool(&nb->options,
diff --git a/tests/ovn.at b/tests/ovn.at
index 8f884241d..5bc8331b1 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -16947,16 +16947,15 @@  ovs-vsctl -- add-port br-int vif33 -- \
         options:rxq_pcap=hv$i/vif33-rx.pcap \
         ofport-request=33
 
-ovn-nbctl --wait=hv set NB_Global . options:controller_event=true
-ovn-nbctl lb-add lb0 192.168.1.100:80 ""
+ovn-nbctl --event lb-add lb0 192.168.1.100:80 ""
 ovn-nbctl ls-lb-add sw0 lb0
 uuid_lb0=$(ovn-nbctl --bare --columns=_uuid find load_balancer name=lb0)
 
-ovn-nbctl lb-add lb1 192.168.2.100:80 ""
+ovn-nbctl --event lb-add lb1 192.168.2.100:80 ""
 ovn-nbctl lr-lb-add lr0 lb1
 uuid_lb1=$(ovn-nbctl --bare --columns=_uuid find load_balancer name=lb1)
 
-ovn-nbctl lb-add lb2 [[2001::10]]:50051 ""
+ovn-nbctl --event lb-add lb2 [[2001::10]]:50051 ""
 ovn-nbctl ls-lb-add sw0 lb2
 uuid_lb2=$(ovn-nbctl --bare --columns=_uuid find load_balancer name=lb2)
 
diff --git a/utilities/ovn-nbctl.8.xml b/utilities/ovn-nbctl.8.xml
index e6fec9980..6ed8bcb75 100644
--- a/utilities/ovn-nbctl.8.xml
+++ b/utilities/ovn-nbctl.8.xml
@@ -905,7 +905,7 @@ 
 
     <h1>Load Balancer Commands</h1>
     <dl>
-        <dt>[<code>--may-exist</code> | <code>--add-duplicate</code> | <code>--reject</code>] <code>lb-add</code> <var>lb</var> <var>vip</var> <var>ips</var> [<var>protocol</var>]</dt>
+        <dt>[<code>--may-exist</code> | <code>--add-duplicate</code> | <code>--reject</code> | <code>--event</code>] <code>lb-add</code> <var>lb</var> <var>vip</var> <var>ips</var> [<var>protocol</var>]</dt>
       <dd>
         <p>
          Creates a new load balancer named <var>lb</var> with the provided
@@ -947,6 +947,14 @@ 
          empty_lb SB controller event for this load balancer.
         </p>
 
+        <p>
+         If the load balancer is created with <code>--event</code> option and
+         it has no active backends, whenever the lb receives traffic, the event
+         is reported in the Controller_Event table in the SB db.
+         Please note <code>--event</code> option can't be specified with
+         <code>--reject</code> one.
+        </p>
+
         <p>
          The following example adds a load balancer.
         </p>
diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
index 2342ead4e..6eaae0866 100644
--- a/utilities/ovn-nbctl.c
+++ b/utilities/ovn-nbctl.c
@@ -2836,6 +2836,13 @@  nbctl_lb_add(struct ctl_context *ctx)
     bool may_exist = shash_find(&ctx->options, "--may-exist") != NULL;
     bool add_duplicate = shash_find(&ctx->options, "--add-duplicate") != NULL;
     bool empty_backend_rej = shash_find(&ctx->options, "--reject") != NULL;
+    bool empty_backend_event = shash_find(&ctx->options, "--event") != NULL;
+
+    if (empty_backend_event && empty_backend_rej) {
+            ctl_error(ctx,
+                      "--reject and --event can't specified at the same time");
+            return;
+    }
 
     const char *lb_proto;
     bool is_update_proto = false;
@@ -2953,6 +2960,10 @@  nbctl_lb_add(struct ctl_context *ctx)
         const struct smap options = SMAP_CONST1(&options, "reject", "true");
         nbrec_load_balancer_set_options(lb, &options);
     }
+    if (empty_backend_event) {
+        const struct smap options = SMAP_CONST1(&options, "event", "true");
+        nbrec_load_balancer_set_options(lb, &options);
+    }
 out:
     ds_destroy(&lb_ips_new);
 
@@ -6517,7 +6528,7 @@  static const struct ctl_command_syntax nbctl_commands[] = {
       nbctl_lr_nat_set_ext_ips, NULL, "--is-exempted", RW},
     /* load balancer commands. */
     { "lb-add", 3, 4, "LB VIP[:PORT] IP[:PORT]... [PROTOCOL]", NULL,
-      nbctl_lb_add, NULL, "--may-exist,--add-duplicate,--reject", RW },
+      nbctl_lb_add, NULL, "--may-exist,--add-duplicate,--reject,--event", RW },
     { "lb-del", 1, 2, "LB [VIP]", NULL, nbctl_lb_del, NULL,
         "--if-exists", RW },
     { "lb-list", 0, 1, "[LB]", NULL, nbctl_lb_list, NULL, "", RO },