Renamed the monitor-external-ids script ovs-external-ids.
Hopefully this will make it clearer who owns it when someone does
ps xa.
Also removed trailing whitespace from ovs-external-ids.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Open vSwitch-aware replacement for Citrix script of the same name.
Open vSwitch-aware replacement for Citrix script of the same name.
- usr_share_openvswitch_scripts_monitor-external-ids
+ usr_share_openvswitch_scripts_ovs-external-ids
Daemon to monitor the external_ids columns of the Bridge and
Interface OVSDB tables.
Daemon to monitor the external_ids columns of the Bridge and
Interface OVSDB tables.
xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py \
xenserver/usr_sbin_brctl \
xenserver/usr_sbin_xen-bugtool \
xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py \
xenserver/usr_sbin_brctl \
xenserver/usr_sbin_xen-bugtool \
- xenserver/usr_share_openvswitch_scripts_monitor-external-ids \
+ xenserver/usr_share_openvswitch_scripts_ovs-external-ids \
xenserver/usr_share_openvswitch_scripts_refresh-xs-network-uuids \
xenserver/usr_share_openvswitch_scripts_sysconfig.template \
xenserver/uuid.py
xenserver/usr_share_openvswitch_scripts_refresh-xs-network-uuids \
xenserver/usr_share_openvswitch_scripts_sysconfig.template \
xenserver/uuid.py
# Start daemon to monitor external ids
PYTHONPATH=/usr/share/openvswitch/python \
# Start daemon to monitor external ids
PYTHONPATH=/usr/share/openvswitch/python \
- /usr/share/openvswitch/scripts/monitor-external-ids \
+ /usr/share/openvswitch/scripts/ovs-external-ids \
--pidfile --detach "$VSWITCHD_OVSDB_SERVER"
touch /var/lock/subsys/openvswitch
--pidfile --detach "$VSWITCHD_OVSDB_SERVER"
touch /var/lock/subsys/openvswitch
stop_daemon BRCOMPATD "$brcompatd"
stop_daemon VSWITCHD "$vswitchd"
stop_daemon OVSDB_SERVER "$ovsdb_server"
stop_daemon BRCOMPATD "$brcompatd"
stop_daemon VSWITCHD "$vswitchd"
stop_daemon OVSDB_SERVER "$ovsdb_server"
- if [ -e /var/run/openvswitch/monitor-external-ids.pid ]; then
- kill `cat /var/run/openvswitch/monitor-external-ids.pid`
+ if [ -e /var/run/openvswitch/ovs-external-ids.pid ]; then
+ kill `cat /var/run/openvswitch/ovs-external-ids.pid`
fi
rm -f /var/lock/subsys/openvswitch
}
fi
rm -f /var/lock/subsys/openvswitch
}
$RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigureVswitch.py
install -m 755 xenserver/etc_xensource_scripts_vif \
$RPM_BUILD_ROOT/usr/share/openvswitch/scripts/vif
$RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigureVswitch.py
install -m 755 xenserver/etc_xensource_scripts_vif \
$RPM_BUILD_ROOT/usr/share/openvswitch/scripts/vif
-install -m 755 xenserver/usr_share_openvswitch_scripts_monitor-external-ids \
- $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/monitor-external-ids
+install -m 755 xenserver/usr_share_openvswitch_scripts_ovs-external-ids \
+ $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/ovs-external-ids
install -m 755 xenserver/usr_share_openvswitch_scripts_refresh-xs-network-uuids \
$RPM_BUILD_ROOT/usr/share/openvswitch/scripts/refresh-xs-network-uuids
install -m 755 xenserver/usr_sbin_xen-bugtool \
install -m 755 xenserver/usr_share_openvswitch_scripts_refresh-xs-network-uuids \
$RPM_BUILD_ROOT/usr/share/openvswitch/scripts/refresh-xs-network-uuids
install -m 755 xenserver/usr_sbin_xen-bugtool \
/usr/share/openvswitch/python/ovs/timeval.py
/usr/share/openvswitch/python/ovs/util.py
/usr/share/openvswitch/python/uuid.py
/usr/share/openvswitch/python/ovs/timeval.py
/usr/share/openvswitch/python/ovs/util.py
/usr/share/openvswitch/python/uuid.py
-/usr/share/openvswitch/scripts/monitor-external-ids
+/usr/share/openvswitch/scripts/ovs-external-ids
/usr/share/openvswitch/scripts/refresh-xs-network-uuids
/usr/share/openvswitch/scripts/interface-reconfigure
/usr/share/openvswitch/scripts/InterfaceReconfigure.py
/usr/share/openvswitch/scripts/refresh-xs-network-uuids
/usr/share/openvswitch/scripts/interface-reconfigure
/usr/share/openvswitch/scripts/InterfaceReconfigure.py
session.xenapi.login_with_password("", "")
except:
session = None
session.xenapi.login_with_password("", "")
except:
session = None
- syslog.syslog(syslog.LOG_WARNING,
- "monitor-external-ids: Couldn't login to XAPI")
+ syslog.syslog(syslog.LOG_WARNING,
+ "ovs-external-ids: Couldn't login to XAPI")
-# By default, the "bridge-id" external id in the Bridge table is the
+# By default, the "bridge-id" external id in the Bridge table is the
# same as "xs-network-uuids". This may be overridden by defining a
# "nicira-bridge-id" key in the "other_config" field of the network
# record of XAPI.
# same as "xs-network-uuids". This may be overridden by defining a
# "nicira-bridge-id" key in the "other_config" field of the network
# record of XAPI.
continue
return rec['other_config'].get('nicira-bridge-id', default)
continue
return rec['other_config'].get('nicira-bridge-id', default)
-# By default, the "iface-id" external id in the Interface table is the
+# By default, the "iface-id" external id in the Interface table is the
# same as "xs-vif-uuid". This may be overridden by defining a
# "nicira-iface-id" key in the "other_config" field of the VIF
# record of XAPI.
# same as "xs-vif-uuid". This may be overridden by defining a
# "nicira-iface-id" key in the "other_config" field of the VIF
# record of XAPI.
cmd = [vsctl, "--timeout=30", "-vANY:console:emer", "set", table, record, col]
exitcode = subprocess.call(cmd)
if exitcode != 0:
cmd = [vsctl, "--timeout=30", "-vANY:console:emer", "set", table, record, col]
exitcode = subprocess.call(cmd)
if exitcode != 0:
- syslog.syslog(syslog.LOG_WARNING,
- "monitor-external-ids: Couldn't call ovs-vsctl")
+ syslog.syslog(syslog.LOG_WARNING,
+ "ovs-external-ids: Couldn't call ovs-vsctl")
# XAPI on XenServer 5.6 uses the external-id "network-uuids" for internal
# XAPI on XenServer 5.6 uses the external-id "network-uuids" for internal
-# networks, but we now prefer "xs-network-uuids". Look for its use and
+# networks, but we now prefer "xs-network-uuids". Look for its use and
# write our preferred external-id.
def update_network_uuids(name, ids):
if ids["network-uuids"] and not ids["xs-network-uuids"]:
# write our preferred external-id.
def update_network_uuids(name, ids):
if ids["network-uuids"] and not ids["xs-network-uuids"]:
- set_external_id("Bridge", name, "xs-network-uuids",
+ set_external_id("Bridge", name, "xs-network-uuids",
ids["network-uuids"])
def update_bridge_id(name, ids):
ids["network-uuids"])
def update_bridge_id(name, ids):
new_columns[column_name] = column
table.columns = new_columns
return table
new_columns[column_name] = column
table.columns = new_columns
return table
def monitor_uuid_schema_cb(schema):
string_type = types.Type(types.BaseType(types.StringType))
string_map_type = types.Type(types.BaseType(types.StringType),
types.BaseType(types.StringType),
0, sys.maxint)
def monitor_uuid_schema_cb(schema):
string_type = types.Type(types.BaseType(types.StringType))
string_map_type = types.Type(types.BaseType(types.StringType),
types.BaseType(types.StringType),
0, sys.maxint)
new_tables = {}
for table_name in ("Bridge", "Interface"):
new_tables[table_name] = keep_table_columns(
new_tables = {}
for table_name in ("Bridge", "Interface"):
new_tables[table_name] = keep_table_columns(
except getopt.GetoptError, geo:
sys.stderr.write("%s: %s\n" % (ovs.util.PROGRAM_NAME, geo.msg))
sys.exit(1)
except getopt.GetoptError, geo:
sys.stderr.write("%s: %s\n" % (ovs.util.PROGRAM_NAME, geo.msg))
sys.exit(1)
for key, value in options:
if key in ['-h', '--help']:
usage()
for key, value in options:
if key in ['-h', '--help']:
usage()
sys.stderr.write("%s: unhandled option %s\n"
% (ovs.util.PROGRAM_NAME, key))
sys.exit(1)
sys.stderr.write("%s: unhandled option %s\n"
% (ovs.util.PROGRAM_NAME, key))
sys.exit(1)
if len(args) != 1:
sys.stderr.write("%s: exactly one nonoption argument is required "
"(use --help for help)\n" % ovs.util.PROGRAM_NAME)
sys.exit(1)
ovs.daemon.die_if_already_running()
if len(args) != 1:
sys.stderr.write("%s: exactly one nonoption argument is required "
"(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)
remote = args[0]
idl = ovs.db.idl.Idl(remote, "Open_vSwitch", monitor_uuid_schema_cb)
# tasks, we need it. Wait here until it's up.
while not os.path.exists("/var/run/xapi_init_complete.cookie"):
time.sleep(1)
# tasks, we need it. Wait here until it's up.
while not os.path.exists("/var/run/xapi_init_complete.cookie"):
time.sleep(1)
bridges = {}
interfaces = {}
while True:
bridges = {}
interfaces = {}
while True:
idl.wait(poller)
poller.block()
continue
idl.wait(poller)
poller.block()
continue
new_bridges = {}
for rec in idl.data["Bridge"].itervalues():
name = rec.name.as_scalar()
new_bridges = {}
for rec in idl.data["Bridge"].itervalues():
name = rec.name.as_scalar()
network_uuids = rec.external_ids.get("network-uuids")
new_bridges[name] = {"xs-network-uuids": xs_network_uuids,
"network-uuids": network_uuids}
network_uuids = rec.external_ids.get("network-uuids")
new_bridges[name] = {"xs-network-uuids": xs_network_uuids,
"network-uuids": network_uuids}
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}
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}
if bridges != new_bridges:
for name,ids in new_bridges.items():
# Network uuids shouldn't change in the life of a bridge,
if bridges != new_bridges:
for name,ids in new_bridges.items():
# Network uuids shouldn't change in the life of a bridge,
if (name not in interfaces) or (interfaces[name] != ids):
update_iface_id(name, ids)
interfaces = new_interfaces
if (name not in interfaces) or (interfaces[name] != ids):
update_iface_id(name, ids)
interfaces = new_interfaces
if __name__ == '__main__':
try:
main(sys.argv)
if __name__ == '__main__':
try:
main(sys.argv)