Message ID | 20200320093433.30928-1-taoyunxiang@cmss.chinamobile.com |
---|---|
State | Superseded |
Headers | show |
Series | [ovs-dev,OVN] ovn-nbctl.c: Add an optional way to delete router policy by uuid | expand |
Bleep bloop. Greetings Tao YunXiang, I am a robot and I have tried out your patch. Thanks for your contribution. I encountered some error that I wasn't expecting. See the details below. checkpatch: WARNING: Line lacks whitespace around operator #34 FILE: utilities/ovn-nbctl.c:699: lr-policy-del ROUTER [{PRIORITY | UUID} [MATCH]]\n\ WARNING: Line has trailing whitespace #60 FILE: utilities/ovn-nbctl.c:3602: /* If uuid was specified, delete routing policy with the Lines checked: 99, Warnings: 2, Errors: 0 Please check this out. If you feel there has been an error, please email aconole@redhat.com Thanks, 0-day Robot
On Fri, Mar 20, 2020 at 05:34:33PM +0800, Tao YunXiang wrote: > We can delete router policy by specify lr 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 lr and uuid, which is optional. > You can still use the previous method to delete. > > usage: > ovn-nbctl lr-policy-del lr0 [UUID0] > > Author: Tao YunXiang <taoyunxiang@cmss.chinamobile.com> > Co-authored-by: Liu Chang <liuchang@cmss.chinamobile.com> > Co-authored-by: Rong Yin <rongyin@cmss.chinamobile.com> > Signed-off-by: Tao YunXiang <taoyunxiang@cmss.chinamobile.com> > Signed-off-by: Liu Chang <liuchang@cmss.chinamobile.com> > Signed-off-by: Rong Yin <rongyin@cmss.chinamobile.com> Needs to update the ovn-nbctl documentation.
Hi Ben, I have added ovn-nbctl documentation, and summitted v2. Thanks, Yun -------------- taoyunxiang@cmss.chinamobile.com >On Fri, Mar 20, 2020 at 05:34:33PM +0800, Tao YunXiang wrote: >> We can delete router policy by specify lr 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 lr and uuid, which is optional. >> You can still use the previous method to delete. >> >> usage: >> ovn-nbctl lr-policy-del lr0 [UUID0] >> >> Author: Tao YunXiang <taoyunxiang@cmss.chinamobile.com> >> Co-authored-by: Liu Chang <liuchang@cmss.chinamobile.com> >> Co-authored-by: Rong Yin <rongyin@cmss.chinamobile.com> >> Signed-off-by: Tao YunXiang <taoyunxiang@cmss.chinamobile.com> >> Signed-off-by: Liu Chang <liuchang@cmss.chinamobile.com> >> Signed-off-by: Rong Yin <rongyin@cmss.chinamobile.com> > >Needs to update the ovn-nbctl documentation.
diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c index e80058e61..c05d79661 100644 --- a/utilities/ovn-nbctl.c +++ b/utilities/ovn-nbctl.c @@ -696,7 +696,7 @@ Route commands:\n\ Policy commands:\n\ lr-policy-add ROUTER PRIORITY MATCH ACTION [NEXTHOP]\n\ add a policy to router\n\ - lr-policy-del ROUTER [PRIORITY [MATCH]]\n\ + lr-policy-del ROUTER [{PRIORITY | UUID} [MATCH]]\n\ remove policies from ROUTER\n\ lr-policy-list ROUTER print policies for ROUTER\n\ \n\ @@ -3587,21 +3587,40 @@ nbctl_lr_policy_del(struct ctl_context *ctx) return; } - error = parse_priority(ctx->argv[2], &priority); - if (error) { - ctx->error = error; - return; + const struct uuid *lr_policy_uuid = NULL; + struct uuid uuid_from_cmd; + if (uuid_from_string(&uuid_from_cmd, ctx->argv[2])) { + lr_policy_uuid = &uuid_from_cmd; + } else { + error = parse_priority(ctx->argv[2], &priority); + if (error) { + ctx->error = error; + return; + } + } - /* If match is not specified, delete all routing policies with the - * specified priority. */ + /* If uuid was specified, delete routing policy with the + * specified uuid. */ if (ctx->argc == 3) { struct nbrec_logical_router_policy **new_policies = xmemdup(lr->policies, sizeof *new_policies * lr->n_policies); int n_policies = 0; - for (int i = 0; i < lr->n_policies; i++) { - if (priority != lr->policies[i]->priority) { - new_policies[n_policies++] = lr->policies[i]; + + if (lr_policy_uuid) { + for (size_t i = 0; i < lr->n_policies; i++) { + if (!uuid_equals(lr_policy_uuid, + &(lr->policies[i]->header_.uuid))) { + new_policies[n_policies++] = lr->policies[i]; + } + } + /* If match is not specified, delete all routing policies with the + * specified priority. */ + } else { + for (int i = 0; i < lr->n_policies; i++) { + if (priority != lr->policies[i]->priority) { + new_policies[n_policies++] = lr->policies[i]; + } } } nbrec_logical_router_verify_policies(lr); @@ -6125,7 +6144,7 @@ static const struct ctl_command_syntax nbctl_commands[] = { /* Policy commands */ { "lr-policy-add", 4, 5, "ROUTER PRIORITY MATCH ACTION [NEXTHOP]", NULL, nbctl_lr_policy_add, NULL, "", RW }, - { "lr-policy-del", 1, 3, "ROUTER [PRIORITY [MATCH]]", NULL, + { "lr-policy-del", 1, 3, "ROUTER [{PRIORITY | UUID} [MATCH]]", NULL, nbctl_lr_policy_del, NULL, "", RW }, { "lr-policy-list", 1, 1, "ROUTER", NULL, nbctl_lr_policy_list, NULL, "", RO },