From: Ethan Jackson Date: Fri, 17 Sep 2010 22:07:02 +0000 (-0700) Subject: xenserver: monitor-external-ids responds to SIGHUP X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5fa555b3cf6030bbeda1bbcf169d514f3ae1a077;p=openvswitch xenserver: monitor-external-ids responds to SIGHUP When monitor-external-ids receives a SIGHUP it will forget everything and run as if it was newly started. Feature #3668. --- diff --git a/xenserver/usr_share_openvswitch_scripts_monitor-external-ids b/xenserver/usr_share_openvswitch_scripts_monitor-external-ids index a0aad7a0..45b3dd7b 100755 --- a/xenserver/usr_share_openvswitch_scripts_monitor-external-ids +++ b/xenserver/usr_share_openvswitch_scripts_monitor-external-ids @@ -22,6 +22,7 @@ import getopt import os +import signal import subprocess import sys import syslog @@ -37,6 +38,7 @@ import ovs.db.idl vsctl="/usr/bin/ovs-vsctl" session = None +force_run = False # Set up a session to interact with XAPI. # @@ -163,8 +165,15 @@ def usage(): print "Other options:" print " -h, --help display this help message" sys.exit(0) - + +def handler(signum, frame): + global force_run + if (signum == signal.SIGHUP): + force_run = True + def main(argv): + global force_run + try: options, args = getopt.gnu_getopt( argv[1:], 'h', ['help'] + ovs.daemon.LONG_OPTIONS) @@ -196,16 +205,23 @@ def main(argv): # tasks, we need it. Wait here until it's up. while not os.path.exists("/var/run/xapi_init_complete.cookie"): time.sleep(1) + + signal.signal(signal.SIGHUP, handler) bridges = {} interfaces = {} while True: - if not idl.run(): + if not force_run and not idl.run(): poller = ovs.poller.Poller() idl.wait(poller) poller.block() continue - + + if force_run: + bridges = {} + interfaces = {} + force_run = False + new_bridges = {} for rec in idl.data["Bridge"].itervalues(): name = rec.name.as_scalar()