From patchwork Sat May 9 08:44:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: taoyunxiang X-Patchwork-Id: 1286597 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.138; helo=whitealder.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=cmss.chinamobile.com Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49K13p3BPtz9sSc for ; Sat, 9 May 2020 18:45:09 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id A866C880E9; Sat, 9 May 2020 08:45:07 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id r1B9zY+fgzeF; Sat, 9 May 2020 08:45:06 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by whitealder.osuosl.org (Postfix) with ESMTP id E937287FF2; Sat, 9 May 2020 08:45:05 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id C9931C0888; Sat, 9 May 2020 08:45:05 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 716FCC07FF for ; Sat, 9 May 2020 08:45:04 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 5FAE987FF2 for ; Sat, 9 May 2020 08:45:04 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id svM0a6Ys2x9o for ; Sat, 9 May 2020 08:45:02 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from cmccmta3.chinamobile.com (cmccmta3.chinamobile.com [221.176.66.81]) by whitealder.osuosl.org (Postfix) with ESMTP id D82218805B for ; Sat, 9 May 2020 08:45:01 +0000 (UTC) Received: from spf.mail.chinamobile.com (unknown[172.16.121.9]) by rmmx-syy-dmz-app09-12009 (RichMail) with SMTP id 2ee95eb66d6f628-6d8df; Sat, 09 May 2020 16:44:32 +0800 (CST) X-RM-TRANSID: 2ee95eb66d6f628-6d8df X-RM-TagInfo: emlType=0 X-RM-SPAM-FLAG: 00000000 Received: from yun.localdomain (unknown[112.25.154.146]) by rmsmtp-syy-appsvr05-12005 (RichMail) with SMTP id 2ee55eb66d6f477-ecd65; Sat, 09 May 2020 16:44:31 +0800 (CST) X-RM-TRANSID: 2ee55eb66d6f477-ecd65 From: Tao YunXiang To: dev@openvswitch.org Date: Sat, 9 May 2020 16:44:19 +0800 Message-Id: <20200509084419.86332-1-taoyunxiang@cmss.chinamobile.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <8> References: <8> Cc: Liu Chang , Rong Yin , Tao YunXiang Subject: [ovs-dev] [PATCH OVN, v7] ovn-nbctl.c: Add an optional way to delete QoS by uuid ?[6n X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" usage: ovn-nbctl qos-del ls0 [UUID0] Author: Tao YunXiang Co-authored-by: Liu Chang Co-authored-by: Rong Yin Signed-off-by: Tao YunXiang Signed-off-by: Liu Chang Signed-off-by: Rong Yin --- v6: ovn-nbctl.c: Add an optional way to delete QoS by uuid v5: ovn-nbctl.c: Add an optional way to delete QoS by uuid 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 --- tests/ovn-nbctl.at | 7 +++++-- utilities/ovn-nbctl.8.xml | 19 +++++++++++++------ utilities/ovn-nbctl.c | 39 ++++++++++++++++++++++++++++----------- 3 files changed, 46 insertions(+), 19 deletions(-) diff --git a/tests/ovn-nbctl.at b/tests/ovn-nbctl.at index 1187fe3e1..14de1a8bf 100644 --- a/tests/ovn-nbctl.at +++ b/tests/ovn-nbctl.at @@ -308,13 +308,16 @@ AT_CHECK([ovn-nbctl qos-list ls0], [0], [dnl AT_CHECK([ovn-nbctl qos-add ls0 from-lport 600 ip rate=1000101]) AT_CHECK([ovn-nbctl qos-add ls0 from-lport 400 tcp dscp=44]) -AT_CHECK([ovn-nbctl qos-add ls0 from-lport 200 ip burst=1000102 rate=301 dscp=19]) dnl Delete a single flow. AT_CHECK([ovn-nbctl qos-del ls0 from-lport 400 tcp]) AT_CHECK([ovn-nbctl qos-list ls0], [0], [dnl from-lport 600 (ip) rate=1000101 -from-lport 200 (ip) rate=301 burst=1000102 dscp=19 +]) + +dnl Delete QoS rule by specified uuid +AT_CHECK([ovn-nbctl qos-del ls0 $(ovn-nbctl --bare --column _uuid list qos)]) +AT_CHECK([ovn-nbctl list qos], [0], [dnl ]) AT_CHECK([ovn-nbctl qos-add ls0 from-lport 600 ip rate=100010111111], [1], [], diff --git a/utilities/ovn-nbctl.8.xml b/utilities/ovn-nbctl.8.xml index 9c624d40c..d265c7fcc 100644 --- a/utilities/ovn-nbctl.8.xml +++ b/utilities/ovn-nbctl.8.xml @@ -160,12 +160,19 @@
qos-del switch [direction [priority match]]
- Deletes QoS rules from switch. If only - switch is supplied, all the QoS rules from the logical - switch are deleted. If direction is also specified, - then all the flows in that direction will be deleted from the - logical switch. If all the fields are supplied, then a single - flow that matches the given fields will be deleted. +

+ Deletes QoS rules from switch. If only + switch is supplied, all the QoS rules from the logical + switch are deleted. If direction is also specified, + then all the flows in that direction will be deleted from the + logical switch. If all the fields are supplied, then a single + flow that matches the given fields will be deleted. +

+ +

+ If switch and uuid are supplied, then the + QoS rule with sepcified uuid is deleted. +

qos-list switch
diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c index 02fc10c9e..07ed85251 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\ @@ -2526,22 +2526,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]; + } } } @@ -6149,7 +6166,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 },