diff mbox

[ovs-dev,25/27] ovn-trace: Accept human-friendly logical port and datapath names.

Message ID 20170430232231.15151-26-blp@ovn.org
State Superseded
Headers show

Commit Message

Ben Pfaff April 30, 2017, 11:22 p.m. UTC
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@ovn.org>
---
 ovn/utilities/ovn-trace.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/ovn/utilities/ovn-trace.c b/ovn/utilities/ovn-trace.c
index 0bc8d602ce90..92b8bc2ca980 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. */
@@ -352,6 +353,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. */
@@ -430,7 +432,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;
         }
     }
@@ -527,6 +530,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);
@@ -561,6 +566,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");
@@ -870,6 +877,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;
+        }
+    }
+
     if (uuid_is_partial_string(name) >= 4) {
         struct shash_node *node;
         SHASH_FOR_EACH (node, &ports) {