[ovs-dev] [PATCH v5 OVN] ovn-nbctl.c: Add an optional way to delete QoS by uuid
Numan Siddique
numans at ovn.org
Tue Mar 24 08:11:03 UTC 2020
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
>
More information about the dev
mailing list