[CalendarServer-changes] [873]
CalendarServer/branches/users/dreid/cluster
source_changes at macosforge.org
source_changes at macosforge.org
Wed Dec 20 14:24:33 PST 2006
Revision: 873
http://trac.macosforge.org/projects/calendarserver/changeset/873
Author: dreid at apple.com
Date: 2006-12-20 14:24:32 -0800 (Wed, 20 Dec 2006)
Log Message:
-----------
patch procutils to not cause a nasty keyerror every time our subprocesses start. Also rework the way we do thing clustering, add an argument for the different servicetypes instead of doing a seperate subcommand for each type.
Modified Paths:
--------------
CalendarServer/branches/users/dreid/cluster/conf/caldavd-test.plist
CalendarServer/branches/users/dreid/cluster/support/patchmaker.py
CalendarServer/branches/users/dreid/cluster/twisted/plugins/caldav.py
CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py
CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py
CalendarServer/branches/users/dreid/cluster/twistedcaldav/tap.py
Added Paths:
-----------
CalendarServer/branches/users/dreid/cluster/lib-patches/Twisted/twisted.python.procutils.patch
Modified: CalendarServer/branches/users/dreid/cluster/conf/caldavd-test.plist
===================================================================
--- CalendarServer/branches/users/dreid/cluster/conf/caldavd-test.plist 2006-12-20 21:24:27 UTC (rev 872)
+++ CalendarServer/branches/users/dreid/cluster/conf/caldavd-test.plist 2006-12-20 22:24:32 UTC (rev 873)
@@ -187,7 +187,7 @@
</dict>
<key>pydirLocation</key>
- <string>/usr/share/caldavd/bin/pydir++.py</string>
+ <string>../pydirector-1.0.0/pydir++.py</string>
</dict>
</dict>
Added: CalendarServer/branches/users/dreid/cluster/lib-patches/Twisted/twisted.python.procutils.patch
===================================================================
--- CalendarServer/branches/users/dreid/cluster/lib-patches/Twisted/twisted.python.procutils.patch (rev 0)
+++ CalendarServer/branches/users/dreid/cluster/lib-patches/Twisted/twisted.python.procutils.patch 2006-12-20 22:24:32 UTC (rev 873)
@@ -0,0 +1,13 @@
+Index: twisted/python/procutils.py
+===================================================================
+--- twisted/python/procutils.py (revision 18545)
++++ twisted/python/procutils.py (working copy)
+@@ -33,7 +33,7 @@
+ """
+ result = []
+ exts = filter(None, os.environ.get('PATHEXT', '').split(os.pathsep))
+- for p in os.environ['PATH'].split(os.pathsep):
++ for p in os.environ.get('PATH', '').split(os.pathsep):
+ p = os.path.join(p, name)
+ if os.access(p, flags):
+ result.append(p)
Modified: CalendarServer/branches/users/dreid/cluster/support/patchmaker.py
===================================================================
--- CalendarServer/branches/users/dreid/cluster/support/patchmaker.py 2006-12-20 21:24:27 UTC (rev 872)
+++ CalendarServer/branches/users/dreid/cluster/support/patchmaker.py 2006-12-20 22:24:32 UTC (rev 873)
@@ -30,7 +30,7 @@
cwd = os.getcwd()
libpatches = os.path.join(cwd, "lib-patches")
-svn = "/usr/bin/svn"
+svn = "/usr/local/bin/svn"
# Stuff we have to manually ignore because our ignore logic cannot cope
ignores = set((
Modified: CalendarServer/branches/users/dreid/cluster/twisted/plugins/caldav.py
===================================================================
--- CalendarServer/branches/users/dreid/cluster/twisted/plugins/caldav.py 2006-12-20 21:24:27 UTC (rev 872)
+++ CalendarServer/branches/users/dreid/cluster/twisted/plugins/caldav.py 2006-12-20 22:24:32 UTC (rev 873)
@@ -1,5 +1,5 @@
from twistedcaldav.tap import CaldavServiceMaker
-from twistedcaldav.cluster import ClusterServiceMaker
+#from twistedcaldav.cluster import ClusterServiceMaker
TwistedCalDAV = CaldavServiceMaker()
-TwistedCalDAVCluster = ClusterServiceMaker()
+# TwistedCalDAVCluster = ClusterServiceMaker()
Modified: CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py
===================================================================
--- CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py 2006-12-20 21:24:27 UTC (rev 872)
+++ CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py 2006-12-20 22:24:32 UTC (rev 873)
@@ -7,7 +7,7 @@
from twisted.python import usage
from twistedcaldav.config import config
-from twistedcaldav.tap import CaldavOptions, CaldavServiceMaker
+# from twistedcaldav.tap import CaldavOptions, CaldavServiceMaker
serviceTemplate = """
<service name="%(name)s">
@@ -31,8 +31,6 @@
hostTemplate = '<host name="%(name)s" ip="127.0.0.1:%(port)s" />'
-twistdTemplate = ('%(twistd)s caldav -f %(configFile)s '
- '-o Port=%(port)s -o SSLPort=%(sslPort)s')
class TwistdSlaveProcess(object):
prefix = "caldav"
@@ -58,6 +56,7 @@
def getCommandLine(self):
return [self.twistd, '-n', 'caldav',
'-f', self.configFile,
+ '-t', 'standalone',
'-o', 'Port=%s' % (self.port,),
'-o', 'SSLPort=%s' % (self.sslPort,),
'-o', 'PIDFile=%s' % (self.pidFile,)]
@@ -72,82 +71,70 @@
return hostTemplate % {'name': name,
'port': port}
+def makeService(self, options):
+ if not config.ClusterEnable:
+ raise usage.UsageError(
+ ("Clustering is not enabled in the config "
+ "file, use -o ClusterEnable=True to "
+ "override"))
-class ClusterServiceMaker(CaldavServiceMaker):
- tapname = "caldavcluster"
-
- description = "A cluster of Calendar Servers"
+ service = procmon.ProcessMonitor()
- def makeService(self, options):
- _twistdTemplate = twistdTemplate % {
- 'twistd': config.twistdLocation,
- 'configFile': options['config'],
- 'port': '%(port)s',
- 'sslPort': '%(sslPort)s',
- }
-
- if not config.ClusterEnable:
- raise usage.UsageError(
- ("Clustering is not enabled in the config "
- "file, use -o ClusterEnable=True to "
- "override, or use --degrade"))
+ hosts = []
+ sslHosts = []
- service = procmon.ProcessMonitor()
+ port = config.Port
+ sslport = config.SSLPort
- hosts = []
- sslHosts = []
+ for p in xrange(0, config.Cluster['processes']):
+ port += 1
+ sslport += 1
- port = config.Port
- sslport = config.SSLPort
+ process = TwistdSlaveProcess(config.twistdLocation,
+ options['config'],
+ port, sslport)
- for p in xrange(0, config.Cluster['processes']):
- port += 1
- sslport += 1
+ service.addProcess(process.getName(),
+ process.getCommandLine(),
+ uid=options.parent['uid'],
+ gid=options.parent['gid'])
+
+ if not config.SSLOnly:
+ hosts.append(process.getHostLine())
- process = TwistdSlaveProcess(config.twistdLocation,
- options['config'],
- port, sslport)
+ if config.SSLEnable:
+ sslHosts.append(process.getHostLine(ssl=True))
- service.addProcess(process.getName(),
- process.getCommandLine(),
- uid=options.parent['uid'],
- gid=options.parent['gid'])
-
- if not config.SSLOnly:
- hosts.append(process.getHostLine())
+ services = []
- if config.SSLEnable:
- sslHosts.append(process.getHostLine(ssl=True))
+ if not config.SSLOnly:
- services = []
-
services.append(serviceTemplate % {
'name': 'http',
'port': config.Port,
'scheduler': config.Cluster['scheduler'],
'hosts': '\n'.join(hosts)
})
-
-
- if config.SSLEnable:
- services.append(serviceTemplate % {
- 'name': 'https',
- 'port': config.SSLPort,
- 'scheduler': config.Cluster['scheduler'],
- 'hosts': '\n'.join(sslHosts),
- })
+
+ if config.SSLEnable:
+ services.append(serviceTemplate % {
+ 'name': 'https',
+ 'port': config.SSLPort,
+ 'scheduler': config.Cluster['scheduler'],
+ 'hosts': '\n'.join(sslHosts),
+ })
- pdconfig = configTemplate % {
- 'services': '\n'.join(services),
- 'username': config.Cluster['admin']['username'],
- 'password': config.Cluster['admin']['password'],
- }
-
- fd, fname = tempfile.mkstemp(prefix='pydir')
- os.write(fd, pdconfig)
- os.close(fd)
-
- service.addProcess('pydir', [config.Cluster['pydirLocation'],
- fname])
-
- return service
+ pdconfig = configTemplate % {
+ 'services': '\n'.join(services),
+ 'username': config.Cluster['admin']['username'],
+ 'password': config.Cluster['admin']['password'],
+ }
+
+ fd, fname = tempfile.mkstemp(prefix='pydir')
+ os.write(fd, pdconfig)
+ os.close(fd)
+
+ service.addProcess('pydir', [config.Cluster['pydirLocation'],
+ fname])
+
+ return service
Modified: CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py
===================================================================
--- CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py 2006-12-20 21:24:27 UTC (rev 872)
+++ CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py 2006-12-20 22:24:32 UTC (rev 873)
@@ -49,7 +49,7 @@
'SACLEnable': False,
'AuthSchemes': ['Basic'],
'AdminPrincipals': ['/principals/user/admin'],
- 'ClusterEnable': Trueb,
+ 'ClusterEnable': True,
'Cluster': {
'processes': 10,
'scheduler': 'leastconns',
Modified: CalendarServer/branches/users/dreid/cluster/twistedcaldav/tap.py
===================================================================
--- CalendarServer/branches/users/dreid/cluster/twistedcaldav/tap.py 2006-12-20 21:24:27 UTC (rev 872)
+++ CalendarServer/branches/users/dreid/cluster/twistedcaldav/tap.py 2006-12-20 22:24:32 UTC (rev 873)
@@ -42,6 +42,7 @@
from twisted.web2.log import LogWrapperResource
from twisted.web2.server import Site
+from twistedcaldav.cluster import makeService as makeService_cluster
from twistedcaldav.config import config, parseConfig, defaultConfig
from twistedcaldav.logging import RotatingFileAccessLoggingObserver
from twistedcaldav.root import RootResource
@@ -53,6 +54,7 @@
optParameters = [
["config", "f", "/etc/caldavd/caldavd.plist",
"Path to configuration file."],
+ ["type", "t", "standalone", "Select the type of service to run"],
]
zsh_actions = {"config" : "_files -g '*.plist'"}
@@ -122,7 +124,7 @@
principalResourceClass = DirectoryPrincipalProvisioningResource
calendarResourceClass = CalendarHomeProvisioningFile
- def makeService(self, options):
+ def makeService_standalone(self, options):
#
# Setup the Directory
#
@@ -238,3 +240,22 @@
httpsService.setServiceParent(service)
return service
+
+ makeService_slave = makeService_standalone
+
+ makeService_cluster = makeService_cluster
+
+ def makeService(self, options):
+ serviceType = options['type']
+
+ serviceMethod = getattr(self, 'makeService_%s' % (serviceType,))
+
+ if not serviceMethod:
+ raise usage.UsageError(
+ ("Unknown service type %s, please choose: " % (serviceType,)))
+
+ else:
+ return serviceMethod(options)
+
+
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20061220/8af88bb9/attachment.html
More information about the calendarserver-changes
mailing list