From 5fa555b3cf6030bbeda1bbcf169d514f3ae1a077 Mon Sep 17 00:00:00 2001 From: Ethan Jackson Date: Fri, 17 Sep 2010 15:07:02 -0700 Subject: [PATCH] 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. --- ...e_openvswitch_scripts_monitor-external-ids | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) 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() -- 2.30.2