[ovs-dev] [PATCH] xenserver: Only put the primary XenServer UUID in default bridge-id
Ethan Jackson
ethan at nicira.com
Wed Sep 22 15:34:52 PDT 2010
This patch defensively guarantees that the first id in
xs-network-uuids will belong to the primary network (as opposed to
a vlan). Given that the primary network id comes first, it parses
xs-network-ids and only copies the primary id to bridge-id when
monitor-external-ids is run.
Feature #3647
---
...ensource_libexec_InterfaceReconfigureVswitch.py | 15 ++++++++++++++-
..._share_openvswitch_scripts_monitor-external-ids | 10 ++++++++--
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
index bc311f8..30ec091 100644
--- a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
+++ b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
@@ -332,6 +332,7 @@ def set_br_external_ids(pif):
dprec = db().get_pif_record(dp)
xs_network_uuids = []
+ primary_xs_network_uuid = None
for nwpif in db().get_pifs_by_device(pifrec['device']):
rec = db().get_pif_record(nwpif)
@@ -342,7 +343,19 @@ def set_br_external_ids(pif):
# log("Network PIF %s not currently attached (%s)" % (rec['uuid'],pifrec['uuid']))
# continue
nwrec = db().get_network_record(rec['network'])
- xs_network_uuids += [nwrec['uuid']]
+
+ uuid = nwrec['uuid']
+ if pif_is_vlan(nwpif):
+ xs_network_uuids.append(uuid)
+ else:
+ assert(primary_xs_network_uuid == None)
+ primary_xs_network_uuid = uuid
+
+ # We guarantee that the primary pif is first in the list of
+ # xs_network_uuids. Therfore we keep track of it separately and prepend it
+ # when we are finished.
+ assert(primary_xs_network_uuid)
+ xs_network_uuids.insert(0, primary_xs_network_uuid)
vsctl_argv = []
vsctl_argv += ['# configure xs-network-uuids']
diff --git a/xenserver/usr_share_openvswitch_scripts_monitor-external-ids b/xenserver/usr_share_openvswitch_scripts_monitor-external-ids
index 45b3dd7..2c2844c 100755
--- a/xenserver/usr_share_openvswitch_scripts_monitor-external-ids
+++ b/xenserver/usr_share_openvswitch_scripts_monitor-external-ids
@@ -116,8 +116,14 @@ def update_network_uuids(name, ids):
def update_bridge_id(name, ids):
id = get_bridge_id(name, ids.get("xs-network-uuids"))
- if ids.get("bridge-id") != id and id:
- set_external_id("Bridge", name, "bridge-id", id)
+
+ if not id:
+ return
+
+ primary_id = id.split(";")[0]
+
+ if ids.get("bridge-id") != primary_id:
+ set_external_id("Bridge", name, "bridge-id", primary_id)
def update_iface_id(name, ids):
id = get_iface_id(name, ids.get("xs-vif-uuid"))
--
1.7.3
More information about the dev
mailing list