[Zodb-checkins] SVN: ZODB/branches/3.5/src/ restore the
ZEO.mkzeoinst module, and add a wrapper script to call it; see
Fred L. Drake, Jr.
fdrake at gmail.com
Tue Sep 6 12:50:34 EDT 2005
Log message for revision 38310:
restore the ZEO.mkzeoinst module, and add a wrapper script to call it; see
http://mail.zope.org/pipermail/zope3-dev/2005-September/015605.html
(merged from ZODB trunk revision 38309)
Changed:
A ZODB/branches/3.5/src/ZEO/mkzeoinst.py
U ZODB/branches/3.5/src/scripts/mkzeoinst.py
-=-
Copied: ZODB/branches/3.5/src/ZEO/mkzeoinst.py (from rev 38309, ZODB/trunk/src/ZEO/mkzeoinst.py)
Property changes on: ZODB/branches/3.5/src/ZEO/mkzeoinst.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
+ 1.21
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Modified: ZODB/branches/3.5/src/scripts/mkzeoinst.py
===================================================================
--- ZODB/branches/3.5/src/scripts/mkzeoinst.py 2005-09-06 16:43:02 UTC (rev 38309)
+++ ZODB/branches/3.5/src/scripts/mkzeoinst.py 2005-09-06 16:50:34 UTC (rev 38310)
@@ -12,234 +12,8 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
-"""%(program)s -- create a ZEO instance.
+"""ZEO instance home creation script."""
-Usage: %(program)s home [port]
+import ZEO.mkzeoinst
-Given an "instance home directory" <home> and some configuration
-options (all of which have default values), create the following:
-
-<home>/etc/zeo.conf -- ZEO config file
-<home>/var/ -- Directory for data files: Data.fs etc.
-<home>/log/ -- Directory for log files: zeo.log and zeoctl.log
-<home>/bin/runzeo -- the zeo server runner
-<home>/bin/zeoctl -- start/stop script (a shim for zeoctl.py)
-
-The script will not overwrite existing files; instead, it will issue a
-warning if an existing file is found that differs from the file that
-would be written if it didn't exist.
-"""
-
-# WARNING! Several templates and functions here are reused by ZRS.
-# So be careful with changes.
-
-import os
-import sys
-import stat
-import getopt
-
-zeo_conf_template = """\
-# ZEO configuration file
-
-%%define INSTANCE %(instance_home)s
-
-<zeo>
- address %(port)d
- read-only false
- invalidation-queue-size 100
- # pid-filename $INSTANCE/var/ZEO.pid
- # monitor-address PORT
- # transaction-timeout SECONDS
-</zeo>
-
-<filestorage 1>
- path $INSTANCE/var/Data.fs
-</filestorage>
-
-<eventlog>
- level info
- <logfile>
- path $INSTANCE/log/zeo.log
- </logfile>
-</eventlog>
-
-<runner>
- program $INSTANCE/bin/runzeo
- socket-name $INSTANCE/etc/%(package)s.zdsock
- daemon true
- forever false
- backoff-limit 10
- exit-codes 0, 2
- directory $INSTANCE
- default-to-interactive true
- # user zope
- python %(python)s
- zdrun %(zodb3_home)s/zdaemon/zdrun.py
-
- # This logfile should match the one in the %(package)s.conf file.
- # It is used by zdctl's logtail command, zdrun/zdctl doesn't write it.
- logfile $INSTANCE/log/%(package)s.log
-</runner>
-"""
-
-zeoctl_template = """\
-#!/bin/sh
-# %(PACKAGE)s instance control script
-
-# The following two lines are for chkconfig. On Red Hat Linux (and
-# some other systems), you can copy or symlink this script into
-# /etc/rc.d/init.d/ and then use chkconfig(8) to automatically start
-# %(PACKAGE)s at boot time.
-
-# chkconfig: 345 90 10
-# description: start a %(PACKAGE)s server
-
-PYTHON="%(python)s"
-ZODB3_HOME="%(zodb3_home)s"
-
-CONFIG_FILE="%(instance_home)s/etc/%(package)s.conf"
-
-PYTHONPATH="$ZODB3_HOME"
-export PYTHONPATH
-
-ZEOCTL="$ZODB3_HOME/ZEO/zeoctl.py"
-
-exec "$PYTHON" "$ZEOCTL" -C "$CONFIG_FILE" ${1+"$@"}
-"""
-
-runzeo_template = """\
-#!/bin/sh
-# %(PACKAGE)s instance start script
-
-PYTHON="%(python)s"
-ZODB3_HOME="%(zodb3_home)s"
-
-CONFIG_FILE="%(instance_home)s/etc/%(package)s.conf"
-
-PYTHONPATH="$ZODB3_HOME"
-export PYTHONPATH
-
-RUNZEO="$ZODB3_HOME/ZEO/runzeo.py"
-
-exec "$PYTHON" "$RUNZEO" -C "$CONFIG_FILE" ${1+"$@"}
-"""
-
-def main():
- ZEOInstanceBuilder().run()
- print "All done."
-
-class ZEOInstanceBuilder:
- def run(self):
- try:
- opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
- except getopt.error, msg:
- print msg
- sys.exit(2)
- program = os.path.basename(sys.argv[0])
- if opts:
- # There's only the help options, so just dump some help:
- msg = __doc__ % {"program": program}
- print msg
- sys.exit()
- if len(args) not in [1, 2]:
- print "Usage: %s home [port]" % program
- sys.exit(2)
-
- instance_home = args[0]
- if not os.path.isabs(instance_home):
- instance_home = os.path.abspath(instance_home)
-
- for entry in sys.path:
- if os.path.exists(os.path.join(entry, 'ZODB')):
- zodb3_home = entry
- break
- else:
- print "Can't find the Zope home (not in sys.path)"
- sys.exit(2)
-
- if args[1:]:
- port = int(args[1])
- else:
- port = 8100 # match example in zope.conf
-
- params = self.get_params(zodb3_home, instance_home, port)
- self.create(instance_home, params)
-
- def get_params(self, zodb3_home, instance_home, port):
- return {
- "package": "zeo",
- "PACKAGE": "ZEO",
- "zodb3_home": zodb3_home,
- "instance_home": instance_home,
- "port": port,
- "python": sys.executable,
- }
-
- def create(self, home, params):
- makedir(home)
- makedir(home, "etc")
- makedir(home, "var")
- makedir(home, "log")
- makedir(home, "bin")
- makefile(zeo_conf_template, home, "etc", "zeo.conf", **params)
- makexfile(zeoctl_template, home, "bin", "zeoctl", **params)
- makexfile(runzeo_template, home, "bin", "runzeo", **params)
-
-
-def which(program):
- strpath = os.getenv("PATH")
- binpath = strpath.split(os.pathsep)
- for dir in binpath:
- path = os.path.join(dir, program)
- if os.path.isfile(path) and os.access(path, os.X_OK):
- if not os.path.isabs(path):
- path = os.path.abspath(path)
- return path
- raise IOError, "can't find %r on path %r" % (program, strpath)
-
-def makedir(*args):
- path = ""
- for arg in args:
- path = os.path.join(path, arg)
- mkdirs(path)
- return path
-
-def mkdirs(path):
- if os.path.isdir(path):
- return
- head, tail = os.path.split(path)
- if head and tail and not os.path.isdir(head):
- mkdirs(head)
- os.mkdir(path)
- print "Created directory", path
-
-def makefile(template, *args, **kwds):
- path = makedir(*args[:-1])
- path = os.path.join(path, args[-1])
- data = template % kwds
- if os.path.exists(path):
- f = open(path)
- olddata = f.read().strip()
- f.close()
- if olddata:
- if olddata != data.strip():
- print "Warning: not overwriting existing file %r" % path
- return path
- f = open(path, "w")
- f.write(data)
- f.close()
- print "Wrote file", path
- return path
-
-def makexfile(template, *args, **kwds):
- path = makefile(template, *args, **kwds)
- umask = os.umask(022)
- os.umask(umask)
- mode = 0777 & ~umask
- if stat.S_IMODE(os.stat(path)[stat.ST_MODE]) != mode:
- os.chmod(path, mode)
- print "Changed mode for %s to %o" % (path, mode)
- return path
-
-if __name__ == "__main__":
- main()
+ZEO.mkzeoinst.main()
More information about the Zodb-checkins
mailing list