138 lines
4 KiB
Diff
138 lines
4 KiB
Diff
--- xen-4.1.0/tools/misc/xend.orig 2010-02-02 20:43:01.000000000 +0000
|
|
+++ xen-4.1.0/tools/misc/xend 2010-02-02 21:16:13.000000000 +0000
|
|
@@ -8,103 +8,16 @@
|
|
"""Xen management daemon.
|
|
Provides console server and HTTP management api.
|
|
|
|
- Run:
|
|
- xend start
|
|
-
|
|
- Restart:
|
|
- xend restart
|
|
-
|
|
- The daemon is stopped with:
|
|
- xend stop
|
|
-
|
|
The daemon should reconnect to device control interfaces
|
|
and recover its state when restarted.
|
|
|
|
- On Solaris, the daemons are SMF managed, and you should not attempt
|
|
- to start xend by hand.
|
|
"""
|
|
-import fcntl
|
|
-import glob
|
|
-import os
|
|
-import os.path
|
|
import sys
|
|
-import socket
|
|
-import signal
|
|
-import time
|
|
-import commands
|
|
-
|
|
from xen.xend.server import SrvDaemon
|
|
|
|
-class CheckError(ValueError):
|
|
- pass
|
|
-
|
|
-def hline():
|
|
- print >>sys.stderr, "*" * 70
|
|
-
|
|
-def msg(message):
|
|
- print >>sys.stderr, "*" * 3, message
|
|
-
|
|
-def check_logging():
|
|
- """Check python logging is installed and raise an error if not.
|
|
- Logging is standard from Python 2.3 on.
|
|
- """
|
|
- try:
|
|
- import logging
|
|
- except ImportError:
|
|
- hline()
|
|
- msg("Python logging is not installed.")
|
|
- msg("Use 'make install-logging' at the xen root to install.")
|
|
- msg("")
|
|
- msg("Alternatively download and install from")
|
|
- msg("http://www.red-dove.com/python_logging.html")
|
|
- hline()
|
|
- raise CheckError("logging is not installed")
|
|
-
|
|
-def check_user():
|
|
- """Check that the effective user id is 0 (root).
|
|
- """
|
|
- if os.geteuid() != 0:
|
|
- hline()
|
|
- msg("Xend must be run as root.")
|
|
- hline()
|
|
- raise CheckError("invalid user")
|
|
-
|
|
-def start_daemon(daemon, *args):
|
|
- if os.fork() == 0:
|
|
- os.execvp(daemon, (daemon,) + args)
|
|
-
|
|
-def start_blktapctrl():
|
|
- start_daemon("blktapctrl", "")
|
|
-
|
|
def main():
|
|
- try:
|
|
- check_logging()
|
|
- check_user()
|
|
- except CheckError:
|
|
- sys.exit(1)
|
|
-
|
|
daemon = SrvDaemon.instance()
|
|
- if not sys.argv[1:]:
|
|
- print 'usage: %s {start|stop|reload|restart}' % sys.argv[0]
|
|
- elif sys.argv[1] == 'start':
|
|
- if os.uname()[0] != "SunOS":
|
|
- start_blktapctrl()
|
|
- return daemon.start()
|
|
- elif sys.argv[1] == 'trace_start':
|
|
- start_blktapctrl()
|
|
- return daemon.start(trace=1)
|
|
- elif sys.argv[1] == 'stop':
|
|
- return daemon.stop()
|
|
- elif sys.argv[1] == 'reload':
|
|
- return daemon.reloadConfig()
|
|
- elif sys.argv[1] == 'restart':
|
|
- start_blktapctrl()
|
|
- return daemon.stop() or daemon.start()
|
|
- elif sys.argv[1] == 'status':
|
|
- return daemon.status()
|
|
- else:
|
|
- print 'not an option:', sys.argv[1]
|
|
- return 1
|
|
+ return daemon.start()
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|
|
diff -up xen-3.4.0/tools/python/xen/xend/osdep.py.fix xen-3.4.0/tools/python/xen/xend/osdep.py
|
|
--- xen-3.4.0/tools/python/xen/xend/osdep.py.fix 2009-05-18 13:05:38.000000000 +0200
|
|
+++ xen-3.4.0/tools/python/xen/xend/osdep.py 2009-05-20 15:39:18.000000000 +0200
|
|
@@ -27,7 +27,7 @@ _scripts_dir = {
|
|
|
|
_xend_autorestart = {
|
|
"NetBSD": True,
|
|
- "Linux": True,
|
|
+ "Linux": False,
|
|
"SunOS": False,
|
|
}
|
|
|
|
diff -up xen-3.4.0/tools/python/xen/xend/server/SrvDaemon.py.fix xen-3.4.0/tools/python/xen/xend/server/SrvDaemon.py
|
|
--- xen-3.4.0/tools/python/xen/xend/server/SrvDaemon.py.fix 2009-05-18 13:05:38.000000000 +0200
|
|
+++ xen-3.4.0/tools/python/xen/xend/server/SrvDaemon.py 2009-05-20 15:39:18.000000000 +0200
|
|
@@ -110,7 +110,14 @@ class Daemon:
|
|
# Fork, this allows the group leader to exit,
|
|
# which means the child can never again regain control of the
|
|
# terminal
|
|
- if os.fork():
|
|
+ child = os.fork()
|
|
+ if child:
|
|
+ if not osdep.xend_autorestart:
|
|
+ pidfile = open(XEND_PID_FILE, 'w')
|
|
+ try:
|
|
+ pidfile.write(str(child))
|
|
+ finally:
|
|
+ pidfile.close()
|
|
os._exit(0)
|
|
|
|
# Detach from standard file descriptors, and redirect them to
|