X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=xenserver%2Fusr_share_openvswitch_scripts_ovs-xapi-sync;h=273ec04d894ca0837944f47d10d805452cd5dd80;hb=7f740af44fb340fb556560e0ec9c4ae710d76035;hp=4d030fd05b97021f10905fd681cdd1defcc989ed;hpb=a49fe70cdeeac9e5d451c5def84a8db69970bb0f;p=sliver-openvswitch.git diff --git a/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync b/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync index 4d030fd05..273ec04d8 100755 --- a/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync +++ b/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync @@ -148,6 +148,24 @@ def update_fail_mode(name): call_vsctl(["set", "bridge", name, "fail_mode=" + fail_mode]) +def update_in_band_mgmt(name): + rec = get_network_by_bridge(name) + + if not rec: + return + + dib = rec['other_config'].get('vswitch-disable-in-band') + if not dib: + call_vsctl(['remove', 'bridge', name, 'other_config', + 'disable-in-band']) + elif dib in ['true', 'false']: + call_vsctl(['set', 'bridge', name, + 'other_config:disable-in-band=' + dib]) + else: + s_log.warning('"' + dib + '"' + "isn't a valid setting for other_config:disable-in-band on " + + bridge) + def update_bridge_id(name, ids): id = get_bridge_id(name, ids.get("xs-network-uuids")) @@ -158,11 +176,13 @@ def update_bridge_id(name, ids): if ids.get("bridge-id") != primary_id: set_external_id("Bridge", name, "bridge-id", primary_id) + ids["bridge-id"] = primary_id def update_iface_id(name, ids): id = get_iface_id(name, ids.get("xs-vif-uuid")) if ids.get("iface-id") != id and id: set_external_id("Interface", name, "iface-id", id) + ids["iface-id"] = id def keep_table_columns(schema, table_name, column_types): table = schema.tables.get(table_name) @@ -234,8 +254,6 @@ def main(argv): "(use --help for help)\n" % ovs.util.PROGRAM_NAME) sys.exit(1) - ovs.daemon.die_if_already_running() - remote = args[0] idl = ovs.db.idl.Idl(remote, "Open_vSwitch", monitor_uuid_schema_cb) @@ -267,18 +285,23 @@ def main(argv): for rec in idl.data["Bridge"].itervalues(): name = rec.name.as_scalar() xs_network_uuids = rec.external_ids.get("xs-network-uuids") - new_bridges[name] = {"xs-network-uuids": xs_network_uuids} + bridge_id = rec.external_ids.get("bridge-id") + new_bridges[name] = {"xs-network-uuids": xs_network_uuids, + "bridge-id": bridge_id} new_interfaces = {} for rec in idl.data["Interface"].itervalues(): name = rec.name.as_scalar() xs_vif_uuid = rec.external_ids.get("xs-vif-uuid") - new_interfaces[name] = {"xs-vif-uuid": xs_vif_uuid} + iface_id = rec.external_ids.get("iface-id") + new_interfaces[name] = {"xs-vif-uuid": xs_vif_uuid, + "iface-id": iface_id} if bridges != new_bridges: for name,ids in new_bridges.items(): if name not in bridges: update_fail_mode(name) + update_in_band_mgmt(name) if (name not in bridges) or (bridges[name] != ids): update_bridge_id(name, ids)