xenserver: monitor-external-ids should run with --monitor
authorEthan Jackson <ethan@nicira.com>
Wed, 22 Sep 2010 19:40:39 +0000 (12:40 -0700)
committerJustin Pettit <jpettit@nicira.com>
Tue, 5 Oct 2010 23:59:19 +0000 (16:59 -0700)
The init script starts monitor-external-ids with --monitor when
configured to do so.  Also made changes to guarantee that --monitor
actually restarts ovs-external-ids.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
python/ovs/daemon.py
xenserver/etc_init.d_openvswitch
xenserver/usr_share_openvswitch_scripts_ovs-external-ids

index a8373cf..a5b459c 100644 (file)
@@ -48,6 +48,8 @@ _monitor = False
 # File descriptor used by daemonize_start() and daemonize_complete().
 _daemonize_fd = None
 
+RESTART_EXIT_CODE = 5
+
 def make_pidfile_name(name):
     """Returns the file name that would be used for a pidfile if 'name' were
     provided to set_pidfile()."""
@@ -258,6 +260,11 @@ def _fork_notify_startup(fd):
         os.close(fd)
 
 def _should_restart(status):
+    global RESTART_EXIT_CODE
+
+    if os.WIFEXITED(status) and os.WEXITSTATUS(status) == RESTART_EXIT_CODE:
+        return True
+
     if os.WIFSIGNALED(status):
         for signame in ("SIGABRT", "SIGALRM", "SIGBUS", "SIGFPE", "SIGILL",
                         "SIGPIPE", "SIGSEGV", "SIGXCPU", "SIGXFSZ"):
index d54a18f..2cfaacd 100755 (executable)
@@ -347,7 +347,7 @@ function start {
     # Start daemon to monitor external ids
     PYTHONPATH=/usr/share/openvswitch/python \
                /usr/share/openvswitch/scripts/ovs-external-ids \
-               --pidfile --detach "$VSWITCHD_OVSDB_SERVER"
+               --pidfile --detach $monitor_opt "$VSWITCHD_OVSDB_SERVER"
 
     touch /var/lock/subsys/openvswitch
 }
index 82bcf97..ef95bcc 100755 (executable)
@@ -254,4 +254,4 @@ if __name__ == '__main__':
         raise
     except:
         s_log.exception("traceback")
-        sys.exit(1)
+        sys.exit(ovs.daemon.RESTART_EXIT_CODE)