[ovs-dev] [PATCH v2 11/13] ovn-trace: Accept human-friendly logical port and datapath names.
Ben Pfaff
blp at ovn.org
Thu May 4 20:01:30 UTC 2017
On Thu, May 04, 2017 at 10:48:58AM -0700, Ben Pfaff wrote:
> On Thu, May 04, 2017 at 02:01:03AM -0700, Andy Zhou wrote:
> > On Wed, May 3, 2017 at 8:45 AM, Ben Pfaff <blp at ovn.org> wrote:
> > > This allows the user to specify these names in a natural way, e.g.
> > > "ovn-trace myswitch 'inport == "myport"' instead of having to specify
> > > whatever UUID or other horrible name the CMS invented.
> > >
> > > Signed-off-by: Ben Pfaff <blp at ovn.org>
> > > ---
> > > ovn/utilities/ovn-trace.c | 18 +++++++++++++++++-
> > > 1 file changed, 17 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/ovn/utilities/ovn-trace.c b/ovn/utilities/ovn-trace.c
> > > index 7ad7839a4a1a..f4fcb81c9ed3 100644
> > > --- a/ovn/utilities/ovn-trace.c
> > > +++ b/ovn/utilities/ovn-trace.c
> > > @@ -338,6 +338,7 @@ struct ovntrace_datapath {
> > > struct uuid sb_uuid;
> > > struct uuid nb_uuid;
> > > char *name;
> > > + char *name2;
> > > uint32_t tunnel_key;
> > >
> > > struct ovs_list mcgroups; /* Contains "struct ovntrace_mcgroup"s. */
> > > @@ -354,6 +355,7 @@ struct ovntrace_port {
> > > struct ovntrace_datapath *dp;
> > > struct uuid uuid;
> > > char *name;
> > > + char *friendly_name;
> > > char *type;
> > > uint16_t tunnel_key;
> > > struct ovntrace_port *peer; /* Patch ports only. */
> > > @@ -432,7 +434,8 @@ ovntrace_datapath_find_by_name(const char *name)
> > > {
> > > struct ovntrace_datapath *dp;
> > > HMAP_FOR_EACH (dp, sb_uuid_node, &datapaths) {
> > > - if (!strcmp(name, dp->name)) {
> > > + if (!strcmp(name, dp->name)
> > > + || (dp->name2 && !strcmp(name, dp->name2))) {
> > > return dp;
> > > }
> > > }
> > > @@ -529,6 +532,8 @@ read_datapaths(void)
> > > ? xstrdup(name)
> > > : xasprintf(UUID_FMT, UUID_ARGS(&dp->nb_uuid)));
> > >
> > > + dp->name2 = nullable_xstrdup(smap_get(ids, "name2"));
> > > +
> > > dp->tunnel_key = sbdb->tunnel_key;
> > >
> > > ovs_list_init(&dp->mcgroups);
> > > @@ -563,6 +568,8 @@ read_ports(void)
> > > port->name = xstrdup(port_name);
> > > port->type = xstrdup(sbpb->type);
> > > port->tunnel_key = sbpb->tunnel_key;
> > > + port->friendly_name = nullable_xstrdup(smap_get(&sbpb->external_ids,
> > > + "name"));
> > >
> > > if (!strcmp(sbpb->type, "patch")) {
> > > const char *peer_name = smap_get(&sbpb->options, "peer");
> > > @@ -875,6 +882,15 @@ ovntrace_port_lookup_by_name(const char *name)
> > > return port;
> > > }
> > >
> > > + struct shash_node *node;
> > > + SHASH_FOR_EACH (node, &ports) {
> > > + const struct ovntrace_port *port = node->data;
> > > +
> > > + if (port->friendly_name && !strcmp(port->friendly_name, name)) {
> > > + return port;
> > > + }
> > > + }
> > > +
> > Same general question as the last patch, should we try to detect
> > multiple matches on those user assigned names? OVSDB does not require
> > them to be unique.
>
> You're right, it's ultimately more user friendly to detect and report
> multiple matches. I added code for that.
I posted v3 with this and a few other fixes.
More information about the dev
mailing list