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/[email protected]/

Regards,
Yun

--------------
[email protected]
>Hi  Numan,
>I have add a new test, and summit v3, please help to review it.
>
>Thanks,
>Yun
>
>--------------
>[email protected]
>>On Thu, Mar 19, 2020 at 11:23 AM Tao YunXiang
>><[email protected]> 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 <[email protected]>
>>> Co-authored-by: Liu Chang <[email protected]>
>>> Co-authored-by: Rong Yin <[email protected]>
>>> Signed-off-by: Tao YunXiang <[email protected]>
>>> Signed-off-by: Liu Chang <[email protected]>
>>> Signed-off-by: Rong Yin <[email protected]>
>>
>>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
>>> [email protected]
>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to