ovs-vsctl: Drop redundant {port,iface}-{set,get}-external-ids commands.
authorBen Pfaff <blp@nicira.com>
Wed, 27 Jan 2010 22:28:30 +0000 (14:28 -0800)
committerBen Pfaff <blp@nicira.com>
Wed, 27 Jan 2010 22:28:30 +0000 (14:28 -0800)
These commands can be implemented just as well, and in a more
general-purpose way, using the "set", "remove", and "get" commands.

The br-{get,set}-external-ids commands have slightly more specialized
behavior and so we can't drop them (yet).

tests/ovs-vsctl.at
utilities/ovs-vsctl.8.in
utilities/ovs-vsctl.c
xenserver/usr_share_vswitch_scripts_dump-vif-details

index 8f8354ab16afefba8fa1a8dc9a0af883d05a6774..b7b37f98f732a3a07c2e18e474549fffc334a41a 100644 (file)
@@ -286,10 +286,10 @@ AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
   [add-port a a1],
   [add-bond a bond0 a2 a3],
   [br-set-external-id a key0 value0],
-  [port-set-external-id a1 key1 value1],
-  [iface-set-external-id a2 key2 value2],
-  [iface-set-external-id a2 key3 value3],
-  [iface-set-external-id a3 key4 value4],
+  [set port a1 external-ids:key1=value1],
+  [set interface a2 external-ids:key2=value2],
+  [set interface a2 external-ids:key3=value3],
+  [set interface a3 external-ids:key4=value4],
   [br-get-external-id a],
   [br-get-external-id a key0],
   [br-get-external-id a key1],
@@ -297,9 +297,9 @@ AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
   [br-get-external-id a],
   [br-set-external-id a key0],
   [br-get-external-id a],
-  [port-get-external-id a1],
-  [iface-get-external-id a2],
-  [iface-get-external-id a3])], [0], [
+  [get port a1 external-ids],
+  [get interface a2 external-ids],
+  [get interface a3 external-ids])], [0], [
 
 
 
@@ -314,19 +314,19 @@ value0
 key0=othervalue
 
 
-key1=value1
-key2=value2\nkey3=value3
-key4=value4
+{"key1"="value1"}
+{"key2"="value2", "key3"="value3"}
+{"key4"="value4"}
 ], [], [OVS_VSCTL_CLEANUP])
 AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
   [br-get-external-id a],
-  [port-get-external-id a1],
-  [iface-get-external-id a2],
-  [iface-get-external-id a3])], [0],
+  [get port a1 external-ids],
+  [get interface a2 external-ids],
+  [get interface a3 external-ids])], [0],
 [
-key1=value1
-key2=value2\nkey3=value3
-key4=value4
+{"key1"="value1"}
+{"key2"="value2", "key3"="value3"}
+{"key4"="value4"}
 ], [], [OVS_VSCTL_CLEANUP])
 CHECK_BRIDGES([a, a, 0])
 CHECK_PORTS([a], [a1], [bond0])
index cf173e96e8902573f806d06df03b38c54a11cd02..84e978e6f56dd960ef4c09f0a51372752347876f 100644 (file)
@@ -181,12 +181,22 @@ If \fIvalue\fR is specified, then \fIkey\fR is set to \fIvalue\fR for
 \fIbridge\fR, overwriting any previous value.  If \fIvalue\fR is
 omitted, then \fIkey\fR is removed from \fIbridge\fR's set of external
 IDs (if it was present).
+.IP
+For real bridges, the effect of this command is similar to that of a
+\fBset\fR or \fBremove\fR command in the \fBexternal\-ids\fR column of
+the \fBBridge\fR table.  For fake bridges, it actually modifies keys
+with names prefixed by \fBfake\-bridge\-\fR in the \fBPort\fR table.
 .
 .IP "\fBbr\-get\-external\-id \fIbridge\fR [\fIkey\fR]"
 Queries the external IDs on \fIbridge\fR.  If \fIkey\fR is specified,
 the output is the value for that \fIkey\fR or the empty string if
 \fIkey\fR is unset.  If \fIkey\fR is omitted, the output is
 \fIkey\fB=\fIvalue\fR, one per line, for each key-value pair.
+.IP
+For real bridges, the effect of this command is similar to that of a
+\fBget\fR command in the \fBexternal\-ids\fR column of the
+\fBBridge\fR table.  For fake bridges, it queries keys with names
+prefixed by \fBfake\-bridge\-\fR in the \fBPort\fR table.
 .
 .SS "Port Commands"
 .
@@ -223,25 +233,6 @@ delete a port that does not exist has no effect.
 Prints the name of the bridge that contains \fIport\fR on standard
 output.
 .
-.IP "\fBport\-set\-external\-id \fIport key\fR [\fIvalue\fR]"
-Sets or clears an ``external ID'' value on \fIport\fR.  These value
-are intended to identify entities external to Open vSwitch with which
-\fIport\fR is associated, e.g. the port's identifier in a
-virtualization management platform.  The Open vSwitch database schema
-specifies well-known \fIkey\fR values, but \fIkey\fR and \fIvalue\fR
-are otherwise arbitrary strings.
-.IP
-If \fIvalue\fR is specified, then \fIkey\fR is set to \fIvalue\fR for
-\fIport\fR, overwriting any previous value.  If \fIvalue\fR is
-omitted, then \fIkey\fR is removed from \fIport\fR's set of external
-IDs (if it was present).
-.
-.IP "\fBbr\-get\-external\-id \fIport\fR [\fIkey\fR]"
-Queries the external IDs on \fIport\fR.  If \fIkey\fR is specified,
-the output is the value for that \fIkey\fR or the empty string if
-\fIkey\fR is unset.  If \fIkey\fR is omitted, the output is
-\fIkey\fB=\fIvalue\fR, one per line, for each key-value pair.
-.
 .SS "Interface Commands"
 .
 These commands examine the interfaces attached to an Open vSwitch
@@ -257,25 +248,6 @@ list.
 Prints the name of the bridge that contains \fIiface\fR on standard
 output.
 .
-.IP "\fBiface\-set\-external\-id \fIiface key\fR [\fIvalue\fR]"
-Sets or clears an ``external ID'' value on \fIiface\fR.  These value
-are intended to identify entities external to Open vSwitch with which
-\fIiface\fR is associated, e.g. the interface's identifier in a
-virtualization management platform.  The Open vSwitch database schema
-specifies well-known \fIkey\fR values, but \fIkey\fR and \fIvalue\fR
-are otherwise arbitrary strings.
-.IP
-If \fIvalue\fR is specified, then \fIkey\fR is set to \fIvalue\fR for
-\fIiface\fR, overwriting any previous value.  If \fIvalue\fR is
-omitted, then \fIkey\fR is removed from \fIiface\fR's set of external
-IDs (if it was present).
-.
-.IP "\fBbr\-get\-external\-id \fIiface\fR [\fIkey\fR]"
-Queries the external IDs on \fIiface\fR.  If \fIkey\fR is specified,
-the output is the value for that \fIkey\fR or the empty string if
-\fIkey\fR is unset.  If \fIkey\fR is omitted, the output is
-\fIkey\fB=\fIvalue\fR, one per line, for each key-value pair.
-.
 .SS "OpenFlow Controller Connectivity"
 .
 \fBovs\-vswitchd\fR can perform all configured bridging and switching
index b86d755445df9673d7debd9af8be0eeead4a8374..318f42937ae41fe55fa87380006bc671ac6bfe0a 100644 (file)
@@ -259,19 +259,11 @@ Port commands:\n\
   add-bond BRIDGE PORT IFACE...  add bonded port PORT in BRIDGE from IFACES\n\
   del-port [BRIDGE] PORT      delete PORT (which may be bonded) from BRIDGE\n\
   port-to-br PORT             print name of bridge that contains PORT\n\
-  port-set-external-id PORT KEY VALUE  set KEY on PORT to VALUE\n\
-  port-set-external-id PORT KEY  unset KEY on PORT\n\
-  port-get-external-id PORT KEY  print value of KEY on PORT\n\
-  port-get-external-id PORT  list key-value pairs on PORT\n\
 A bond is considered to be a single port.\n\
 \n\
 Interface commands (a bond consists of multiple interfaces):\n\
   list-ifaces BRIDGE          print the names of all interfaces on BRIDGE\n\
   iface-to-br IFACE           print name of bridge that contains IFACE\n\
-  iface-set-external-id IFACE KEY VALUE  set KEY on IFACE to VALUE\n\
-  iface-set-external-id IFACE KEY  unset KEY on IFACE\n\
-  iface-get-external-id IFACE KEY  print value of KEY on IFACE\n\
-  iface-get-external-id IFACE list key-value pairs on IFACE\n\
 \n\
 Controller commands:\n\
   get-controller [BRIDGE]     print the controller for BRIDGE\n\
@@ -1076,43 +1068,6 @@ cmd_port_to_br(struct vsctl_context *ctx)
     free_info(&info);
 }
 
-static void
-cmd_port_set_external_id(struct vsctl_context *ctx)
-{
-    struct vsctl_info info;
-    struct vsctl_port *port;
-    char **keys, **values;
-    size_t n;
-
-    get_info(ctx->ovs, &info);
-    port = find_port(&info, ctx->argv[1], true);
-    set_external_id(port->port_cfg->key_external_ids,
-                    port->port_cfg->value_external_ids,
-                    port->port_cfg->n_external_ids,
-                    ctx->argv[2], ctx->argc >= 4 ? ctx->argv[3] : NULL,
-                    &keys, &values, &n);
-    ovsrec_port_set_external_ids(port->port_cfg, keys, values, n);
-    free(keys);
-    free(values);
-
-    free_info(&info);
-}
-
-static void
-cmd_port_get_external_id(struct vsctl_context *ctx)
-{
-    struct vsctl_info info;
-    struct vsctl_port *port;
-
-    get_info(ctx->ovs, &info);
-    port = find_port(&info, ctx->argv[1], true);
-    get_external_id(port->port_cfg->key_external_ids,
-                    port->port_cfg->value_external_ids,
-                    port->port_cfg->n_external_ids,
-                    "",  ctx->argc >= 3 ? ctx->argv[2] : NULL, &ctx->output);
-    free_info(&info);
-}
-
 static void
 cmd_br_to_vlan(struct vsctl_context *ctx)
 {
@@ -1178,43 +1133,6 @@ cmd_iface_to_br(struct vsctl_context *ctx)
     free_info(&info);
 }
 
-static void
-cmd_iface_set_external_id(struct vsctl_context *ctx)
-{
-    struct vsctl_info info;
-    struct vsctl_iface *iface;
-    char **keys, **values;
-    size_t n;
-
-    get_info(ctx->ovs, &info);
-    iface = find_iface(&info, ctx->argv[1], true);
-    set_external_id(iface->iface_cfg->key_external_ids,
-                    iface->iface_cfg->value_external_ids,
-                    iface->iface_cfg->n_external_ids,
-                    ctx->argv[2], ctx->argc >= 4 ? ctx->argv[3] : NULL,
-                    &keys, &values, &n);
-    ovsrec_interface_set_external_ids(iface->iface_cfg, keys, values, n);
-    free(keys);
-    free(values);
-
-    free_info(&info);
-}
-
-static void
-cmd_iface_get_external_id(struct vsctl_context *ctx)
-{
-    struct vsctl_info info;
-    struct vsctl_iface *iface;
-
-    get_info(ctx->ovs, &info);
-    iface = find_iface(&info, ctx->argv[1], true);
-    get_external_id(iface->iface_cfg->key_external_ids,
-                    iface->iface_cfg->value_external_ids,
-                    iface->iface_cfg->n_external_ids,
-                    "",  ctx->argc >= 3 ? ctx->argv[2] : NULL, &ctx->output);
-    free_info(&info);
-}
-
 static void
 cmd_get_controller(struct vsctl_context *ctx)
 {
@@ -2531,14 +2449,10 @@ get_vsctl_handler(int argc, char *argv[], struct vsctl_context *ctx)
         {"add-bond", 4, INT_MAX, cmd_add_bond, "--fake-iface"},
         {"del-port", 1, 2, cmd_del_port, "--if-exists"},
         {"port-to-br", 1, 1, cmd_port_to_br, ""},
-        {"port-set-external-id", 2, 3, cmd_port_set_external_id, ""},
-        {"port-get-external-id", 1, 2, cmd_port_get_external_id, ""},
 
         /* Interface commands. */
         {"list-ifaces", 1, 1, cmd_list_ifaces, ""},
         {"iface-to-br", 1, 1, cmd_iface_to_br, ""},
-        {"iface-set-external-id", 2, 3, cmd_iface_set_external_id, ""},
-        {"iface-get-external-id", 1, 2, cmd_iface_get_external_id, ""},
 
         /* Controller commands. */
         {"get-controller", 0, 1, cmd_get_controller, ""},
index 3c33751819c4620c81aa24a183decd354b7c5d9d..430ec54349624636c43e0d25f2badccbfa9bbfc5 100755 (executable)
@@ -4,7 +4,7 @@
 # needed by the controller.  This is called by the "vif" script,
 # which is run when virtual interfaces are added and removed.
 
-# Copyright (C) 2009 Nicira Networks, Inc.
+# Copyright (C) 2009, 2010 Nicira Networks, Inc.
 #
 # Copying and distribution of this file, with or without modification,
 # are permitted in any medium without royalty provided the copyright
@@ -39,7 +39,7 @@ def dump_vif_info(domid, devid, vif_ref):
                vif_info.append(('xs-vif-uuid', vif_rec["uuid"]))
                vif_info.append(('xs-vm-uuid', vm_uuid))
                for key, value in vif_info:
-                       print("-- iface-set-external-id vif%s.%s %s %s"
+                       print("-- set interface vif%s.%s external-ids:\"%s\"=\"%s\""
                              % (domid, devid, key, value))
 
                # vNetManager needs to know the network UUID(s) associated with