mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 13:58:14 +00:00
ovs-vsctl: Drop redundant {port,iface}-{set,get}-external-ids commands.
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).
This commit is contained in:
@@ -286,10 +286,10 @@ AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
|
|||||||
[add-port a a1],
|
[add-port a a1],
|
||||||
[add-bond a bond0 a2 a3],
|
[add-bond a bond0 a2 a3],
|
||||||
[br-set-external-id a key0 value0],
|
[br-set-external-id a key0 value0],
|
||||||
[port-set-external-id a1 key1 value1],
|
[set port a1 external-ids:key1=value1],
|
||||||
[iface-set-external-id a2 key2 value2],
|
[set interface a2 external-ids:key2=value2],
|
||||||
[iface-set-external-id a2 key3 value3],
|
[set interface a2 external-ids:key3=value3],
|
||||||
[iface-set-external-id a3 key4 value4],
|
[set interface a3 external-ids:key4=value4],
|
||||||
[br-get-external-id a],
|
[br-get-external-id a],
|
||||||
[br-get-external-id a key0],
|
[br-get-external-id a key0],
|
||||||
[br-get-external-id a key1],
|
[br-get-external-id a key1],
|
||||||
@@ -297,9 +297,9 @@ AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
|
|||||||
[br-get-external-id a],
|
[br-get-external-id a],
|
||||||
[br-set-external-id a key0],
|
[br-set-external-id a key0],
|
||||||
[br-get-external-id a],
|
[br-get-external-id a],
|
||||||
[port-get-external-id a1],
|
[get port a1 external-ids],
|
||||||
[iface-get-external-id a2],
|
[get interface a2 external-ids],
|
||||||
[iface-get-external-id a3])], [0], [
|
[get interface a3 external-ids])], [0], [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -314,19 +314,19 @@ value0
|
|||||||
key0=othervalue
|
key0=othervalue
|
||||||
|
|
||||||
|
|
||||||
key1=value1
|
{"key1"="value1"}
|
||||||
key2=value2\nkey3=value3
|
{"key2"="value2", "key3"="value3"}
|
||||||
key4=value4
|
{"key4"="value4"}
|
||||||
], [], [OVS_VSCTL_CLEANUP])
|
], [], [OVS_VSCTL_CLEANUP])
|
||||||
AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
|
AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
|
||||||
[br-get-external-id a],
|
[br-get-external-id a],
|
||||||
[port-get-external-id a1],
|
[get port a1 external-ids],
|
||||||
[iface-get-external-id a2],
|
[get interface a2 external-ids],
|
||||||
[iface-get-external-id a3])], [0],
|
[get interface a3 external-ids])], [0],
|
||||||
[
|
[
|
||||||
key1=value1
|
{"key1"="value1"}
|
||||||
key2=value2\nkey3=value3
|
{"key2"="value2", "key3"="value3"}
|
||||||
key4=value4
|
{"key4"="value4"}
|
||||||
], [], [OVS_VSCTL_CLEANUP])
|
], [], [OVS_VSCTL_CLEANUP])
|
||||||
CHECK_BRIDGES([a, a, 0])
|
CHECK_BRIDGES([a, a, 0])
|
||||||
CHECK_PORTS([a], [a1], [bond0])
|
CHECK_PORTS([a], [a1], [bond0])
|
||||||
|
@@ -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
|
\fIbridge\fR, overwriting any previous value. If \fIvalue\fR is
|
||||||
omitted, then \fIkey\fR is removed from \fIbridge\fR's set of external
|
omitted, then \fIkey\fR is removed from \fIbridge\fR's set of external
|
||||||
IDs (if it was present).
|
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]"
|
.IP "\fBbr\-get\-external\-id \fIbridge\fR [\fIkey\fR]"
|
||||||
Queries the external IDs on \fIbridge\fR. If \fIkey\fR is specified,
|
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
|
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\fR is unset. If \fIkey\fR is omitted, the output is
|
||||||
\fIkey\fB=\fIvalue\fR, one per line, for each key-value pair.
|
\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"
|
.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
|
Prints the name of the bridge that contains \fIport\fR on standard
|
||||||
output.
|
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"
|
.SS "Interface Commands"
|
||||||
.
|
.
|
||||||
These commands examine the interfaces attached to an Open vSwitch
|
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
|
Prints the name of the bridge that contains \fIiface\fR on standard
|
||||||
output.
|
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"
|
.SS "OpenFlow Controller Connectivity"
|
||||||
.
|
.
|
||||||
\fBovs\-vswitchd\fR can perform all configured bridging and switching
|
\fBovs\-vswitchd\fR can perform all configured bridging and switching
|
||||||
|
@@ -259,19 +259,11 @@ Port commands:\n\
|
|||||||
add-bond BRIDGE PORT IFACE... add bonded port PORT in BRIDGE from IFACES\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\
|
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-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\
|
A bond is considered to be a single port.\n\
|
||||||
\n\
|
\n\
|
||||||
Interface commands (a bond consists of multiple interfaces):\n\
|
Interface commands (a bond consists of multiple interfaces):\n\
|
||||||
list-ifaces BRIDGE print the names of all interfaces on BRIDGE\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-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\
|
\n\
|
||||||
Controller commands:\n\
|
Controller commands:\n\
|
||||||
get-controller [BRIDGE] print the controller for BRIDGE\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);
|
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
|
static void
|
||||||
cmd_br_to_vlan(struct vsctl_context *ctx)
|
cmd_br_to_vlan(struct vsctl_context *ctx)
|
||||||
{
|
{
|
||||||
@@ -1178,43 +1133,6 @@ cmd_iface_to_br(struct vsctl_context *ctx)
|
|||||||
free_info(&info);
|
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
|
static void
|
||||||
cmd_get_controller(struct vsctl_context *ctx)
|
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"},
|
{"add-bond", 4, INT_MAX, cmd_add_bond, "--fake-iface"},
|
||||||
{"del-port", 1, 2, cmd_del_port, "--if-exists"},
|
{"del-port", 1, 2, cmd_del_port, "--if-exists"},
|
||||||
{"port-to-br", 1, 1, cmd_port_to_br, ""},
|
{"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. */
|
/* Interface commands. */
|
||||||
{"list-ifaces", 1, 1, cmd_list_ifaces, ""},
|
{"list-ifaces", 1, 1, cmd_list_ifaces, ""},
|
||||||
{"iface-to-br", 1, 1, cmd_iface_to_br, ""},
|
{"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. */
|
/* Controller commands. */
|
||||||
{"get-controller", 0, 1, cmd_get_controller, ""},
|
{"get-controller", 0, 1, cmd_get_controller, ""},
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
# needed by the controller. This is called by the "vif" script,
|
# needed by the controller. This is called by the "vif" script,
|
||||||
# which is run when virtual interfaces are added and removed.
|
# 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,
|
# Copying and distribution of this file, with or without modification,
|
||||||
# are permitted in any medium without royalty provided the copyright
|
# 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-vif-uuid', vif_rec["uuid"]))
|
||||||
vif_info.append(('xs-vm-uuid', vm_uuid))
|
vif_info.append(('xs-vm-uuid', vm_uuid))
|
||||||
for key, value in vif_info:
|
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))
|
% (domid, devid, key, value))
|
||||||
|
|
||||||
# vNetManager needs to know the network UUID(s) associated with
|
# vNetManager needs to know the network UUID(s) associated with
|
||||||
|
Reference in New Issue
Block a user