[ovs-dev] [PATCH v5 OVN] ovn-nbctl.c: Add an optional way to delete QoS by uuid

Numan Siddique numans at ovn.org
Thu May 7 18:00:19 UTC 2020


On Thu, May 7, 2020 at 2:13 PM taoyunxiang at cmss.chinamobile.com <
taoyunxiang at cmss.chinamobile.com> wrote:

> Sorry,
>          Acutally, I summited a new change for [0], and the patchwork
> address is [1]
>
> [0] [ovs-dev,OVN,v2] ovn-nbctl.c: Add an optional way to delete router
> policy by uuid
> [1]
> http://patchwork.ozlabs.org/project/openvswitch/patch/20200324014951.9521-1-taoyunxiang@cmss.chinamobile.com/
>
> Regards,
> Yun
>
> --------------
> taoyunxiang at cmss.chinamobile.com
> >Hi  Numan,
> >I have add a new test, and summit v3, please help to review it.


Thanks for adding the test case.

I applied this patch to master with one small change (below).


diff --git a/tests/ovn-nbctl.at b/tests/ovn-nbctl.at
index 4195844d8..1187fe3e1 100644
--- a/tests/ovn-nbctl.at
+++ b/tests/ovn-nbctl.at
@@ -1621,7 +1621,7 @@ Routing Policies


 dnl Delete policy by specified uuid
-AT_CHECK([ovn-nbctl lr-policy-del lr0 `ovn-nbctl --columns=_uuid list
logical-router-policy | awk -F ':'  '{print $2}'`])
+AT_CHECK([ovn-nbctl lr-policy-del lr0 $(ovn-nbctl --bare --column _uuid
list logical_router_policy)])
 AT_CHECK([ovn-nbctl list logical-router-policy], [0], [dnl
 ])

Thanks
Numan



>
> >Thanks,
> >Yun
> >
> >--------------
> >taoyunxiang at cmss.chinamobile.com
> >>On Thu, Mar 19, 2020 at 11:23 AM Tao YunXiang
> >><taoyunxiang at cmss.chinamobile.com> wrote:
> >>>
> >>> We can delete qos by specify ls and more parameters.
> >>> If CMS want to delete it exactly, it must specify detailed "match"
> field.
> >>> It's not an easy way, also maybe deleted by mistake.
> >>> This change adds a way to specify ls and uuid, which is optional.
> >>> You can still use the previous method to delete.
> >>>
> >>> usage:
> >>> ovn-nbctl qos-del ls0 [UUID0]
> >>>
> >>> Author: Tao YunXiang <taoyunxiang at cmss.chinamobile.com>
> >>> Co-authored-by: Liu Chang <liuchang at cmss.chinamobile.com>
> >>> Co-authored-by: Rong Yin <rongyin at cmss.chinamobile.com>
> >>> Signed-off-by: Tao YunXiang <taoyunxiang at cmss.chinamobile.com>
> >>> Signed-off-by: Liu Chang <liuchang at cmss.chinamobile.com>
> >>> Signed-off-by: Rong Yin <rongyin at cmss.chinamobile.com>
> >>
> >>Can you please add a few tests in the tests/ovn-nbctl.at which would
> help
> >>in regressions ?
> >>
> >>Thanks
> >>Numan
> >>
> >>>
> >>> ---
> >>> v4: Add a way to delete QoS by its name or uuid
> >>> v3: ovn-nbctl.c: Add a way to delete QoS by its name or uuid
> >>>
> >>> ---
> >>>  utilities/ovn-nbctl.c | 39 ++++++++++++++++++++++++++++-----------
> >>>  1 file changed, 28 insertions(+), 11 deletions(-)
> >>>
> >>> diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
> >>> index e80058e61..5b2fa6084 100644
> >>> --- a/utilities/ovn-nbctl.c
> >>> +++ b/utilities/ovn-nbctl.c
> >>> @@ -604,7 +604,7 @@ ACL commands:\n\
> >>>  QoS commands:\n\
> >>>    qos-add SWITCH DIRECTION PRIORITY MATCH [rate=RATE [burst=BURST]]
> [dscp=DSCP]\n\
> >>>                              add an QoS rule to SWITCH\n\
> >>> -  qos-del SWITCH [DIRECTION [PRIORITY MATCH]]\n\
> >>> +  qos-del SWITCH [{DIRECTION | UUID} [PRIORITY MATCH]]\n\
> >>>                              remove QoS rules from SWITCH\n\
> >>>    qos-list SWITCH           print QoS rules for SWITCH\n\
> >>>  \n\
> >>> @@ -2521,22 +2521,39 @@ nbctl_qos_del(struct ctl_context *ctx)
> >>>      }
> >>>
> >>>      const char *direction;
> >>> -    error = parse_direction(ctx->argv[2], &direction);
> >>> -    if (error) {
> >>> -        ctx->error = error;
> >>> -        return;
> >>> +    const struct uuid *qos_rule_uuid = NULL;
> >>> +    struct uuid uuid_from_cmd;
> >>> +    if (uuid_from_string(&uuid_from_cmd, ctx->argv[2])) {
> >>> +        qos_rule_uuid = &uuid_from_cmd;
> >>> +    } else {
> >>> +        error = parse_direction(ctx->argv[2], &direction);
> >>> +        if (error) {
> >>> +            ctx->error = error;
> >>> +            return;
> >>> +        }
> >>>      }
> >>>
> >>> -    /* If priority and match are not specified, delete all qos_rules
> with the
> >>> -     * specified direction. */
> >>> +    /* If uuid was specified, delete qos_rule with the
> >>> +     * specified uuid. */
> >>>      if (ctx->argc == 3) {
> >>>          struct nbrec_qos **new_qos_rules
> >>>              = xmalloc(sizeof *new_qos_rules * ls->n_qos_rules);
> >>>
> >>>          int n_qos_rules = 0;
> >>> -        for (size_t i = 0; i < ls->n_qos_rules; i++) {
> >>> -            if (strcmp(direction, ls->qos_rules[i]->direction)) {
> >>> -                new_qos_rules[n_qos_rules++] = ls->qos_rules[i];
> >>> +        if (qos_rule_uuid) {
> >>> +            for (size_t i = 0; i < ls->n_qos_rules; i++) {
> >>> +                if (!uuid_equals(qos_rule_uuid,
> >>> +                                 &(ls->qos_rules[i]->header_.uuid))) {
> >>> +                    new_qos_rules[n_qos_rules++] = ls->qos_rules[i];
> >>> +                }
> >>> +            }
> >>> +        /* If priority and match are not specified, delete all
> qos_rules
> >>> +         * with the specified direction. */
> >>> +        } else {
> >>> +            for (size_t i = 0; i < ls->n_qos_rules; i++) {
> >>> +                if (strcmp(direction, ls->qos_rules[i]->direction)) {
> >>> +                    new_qos_rules[n_qos_rules++] = ls->qos_rules[i];
> >>> +                }
> >>>              }
> >>>          }
> >>>
> >>> @@ -6030,7 +6047,7 @@ static const struct ctl_command_syntax
> nbctl_commands[] = {
> >>>      { "qos-add", 5, 7,
> >>>        "SWITCH DIRECTION PRIORITY MATCH [rate=RATE [burst=BURST]]
> [dscp=DSCP]",
> >>>        NULL, nbctl_qos_add, NULL, "--may-exist", RW },
> >>> -    { "qos-del", 1, 4, "SWITCH [DIRECTION [PRIORITY MATCH]]", NULL,
> >>> +    { "qos-del", 1, 4, "SWITCH [{DIRECTION | UUID} [PRIORITY
> MATCH]]", NULL,
> >>>        nbctl_qos_del, NULL, "", RW },
> >>>      { "qos-list", 1, 1, "SWITCH", NULL, nbctl_qos_list, NULL, "", RO
> },
> >>>
> >>> --
> >>> 2.17.1
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> dev mailing list
> >>> dev at openvswitch.org
> >>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> >>>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>


More information about the dev mailing list