[CalendarServer-changes] [876]
CalendarServer/branches/users/dreid/cluster
source_changes at macosforge.org
source_changes at macosforge.org
Wed Dec 20 16:25:37 PST 2006
Revision: 876
http://trac.macosforge.org/projects/calendarserver/changeset/876
Author: dreid at apple.com
Date: 2006-12-20 16:25:37 -0800 (Wed, 20 Dec 2006)
Log Message:
-----------
Better config layout, ability to disable pydir when using the multiprocess setup
Modified Paths:
--------------
CalendarServer/branches/users/dreid/cluster/conf/caldavd-test.plist
CalendarServer/branches/users/dreid/cluster/conf/caldavd.plist
CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py
CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py
CalendarServer/branches/users/dreid/cluster/twistedcaldav/tap.py
Modified: CalendarServer/branches/users/dreid/cluster/conf/caldavd-test.plist
===================================================================
--- CalendarServer/branches/users/dreid/cluster/conf/caldavd-test.plist 2006-12-20 23:45:33 UTC (rev 875)
+++ CalendarServer/branches/users/dreid/cluster/conf/caldavd-test.plist 2006-12-21 00:25:37 UTC (rev 876)
@@ -169,24 +169,33 @@
<string>/principals/user/admin</string>
</array>
- <key>Cluster</key>
+ <key>ServerType</key>
+ <string>singleprocess</string>
+
+ <key>MultiProcess</key>
<dict>
- <key>processes</key>
+ <key>NumProcesses</key>
<integer>2</integer>
- <key>scheduler</key>
- <string>leastconns</string>
-
- <key>admin</key>
+ <key>PyDirector</key>
<dict>
- <key>username</key>
- <string></string>
+ <key>Enabled</key>
+ <true/>
- <key>password</key>
- <string></string>
- </dict>
+ <key>Scheduler</key>
+ <string>leastconns</string>
+
+ <key>admin</key>
+ <dict>
+ <key>username</key>
+ <string></string>
+
+ <key>password</key>
+ <string></string>
+ </dict>
+ </dict>
</dict>
-
+
<key>pydirLocation</key>
<string>../pydirector-1.0.0/pydir.py</string>
Modified: CalendarServer/branches/users/dreid/cluster/conf/caldavd.plist
===================================================================
--- CalendarServer/branches/users/dreid/cluster/conf/caldavd.plist 2006-12-20 23:45:33 UTC (rev 875)
+++ CalendarServer/branches/users/dreid/cluster/conf/caldavd.plist 2006-12-21 00:25:37 UTC (rev 876)
@@ -118,26 +118,34 @@
<key>ServerType</key>
<string>singleprocess</string>
- <key>Cluster</key>
+ <key>MultiProcess</key>
<dict>
- <key>processes</key>
+ <key>NumProcesses</key>
<integer>0</integer>
- <key>scheduler</key>
- <string>leastconns</string>
-
- <key>admin</key>
+ <key>PyDirector</key>
<dict>
- <key>username</key>
- <string></string>
+ <key>Enabled</key>
+ <false/>
- <key>password</key>
- <string></string>
- </dict>
-
- <key>pydirLocation</key>
- <string>/usr/share/caldavd/bin/pydir++.py</string>
+ <key>Scheduler</key>
+ <string>leastconns</string>
+ <key>admin</key>
+ <dict>
+ <key>username</key>
+ <string></string>
+
+ <key>password</key>
+ <string></string>
+ </dict>
+ </dict>
</dict>
+
+ <key>pydirLocation</key>
+ <string>/usr/share/caldavd/bin/pydir++.py</string>
+
+ <key>pydirConfig</key>
+ <string>/etc/caldvad/pydir.xml</string>
</dict>
</plist>
Modified: CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py
===================================================================
--- CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py 2006-12-20 23:45:33 UTC (rev 875)
+++ CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py 2006-12-21 00:25:37 UTC (rev 876)
@@ -25,13 +25,13 @@
</pdconfig>
"""
-hostTemplate = '<host name="%(name)s" ip="127.0.0.1:%(port)s" />'
+hostTemplate = '<host name="%(name)s" ip="%(bindAddress)s:%(port)s" />'
class TwistdSlaveProcess(object):
prefix = "caldav"
- def __init__(self, twistdLocation, configFile, port, sslPort):
+ def __init__(self, twistdLocation, configFile, interface, port, sslPort):
self.twistd = twistdLocation
self.configFile = configFile
@@ -43,6 +43,8 @@
os.path.dirname(config.PIDFile),
'%s.pid' % (self.getName(),))
+ self.interface = interface
+
def getName(self):
return '%s-%s' % (self.prefix, self.port)
@@ -54,8 +56,8 @@
sys.executable,
self.twistd, '-n', 'caldav',
'-f', self.configFile,
- '-o', 'ServerType=standalone',
- '-o', 'BindAddress=127.0.0.1',
+ '-o', 'ServerType=singleprocess',
+ '-o', 'BindAddress=%s' % (self.interface,),
'-o', 'Port=%s' % (self.port,),
'-o', 'SSLPort=%s' % (self.sslPort,),
'-o', 'PIDFile=%s' % (self.pidFile,)]
@@ -63,12 +65,14 @@
def getHostLine(self, ssl=None):
name = self.getName()
port = self.port
+
if ssl:
name = self.getSSLName()
port = self.sslPort
return hostTemplate % {'name': name,
- 'port': port}
+ 'port': port,
+ 'bindAddress': self.interface}
def makeService_multiprocess(self, options):
service = procmon.ProcessMonitor()
@@ -79,12 +83,18 @@
port = config.Port
sslport = config.SSLPort
- for p in xrange(0, config.Cluster['processes']):
+ bindAddress = '127.0.0.1'
+
+ if not config.MultiProcess['PyDirector']['Enabled']:
+ bindAddress = config.BindAddress
+
+ for p in xrange(0, config.MultiProcess['NumProcesses']):
port += 1
sslport += 1
process = TwistdSlaveProcess(config.twistdLocation,
options['config'],
+ bindAddress,
port, sslport)
service.addProcess(process.getName(),
@@ -98,40 +108,45 @@
if config.SSLEnable:
sslHosts.append(process.getHostLine(ssl=True))
- services = []
+ if config.MultiProcess['PyDirector']['Enabled']:
+ services = []
- if not config.SSLOnly:
- services.append(serviceTemplate % {
- 'name': 'http',
- 'bindAddress': config.BindAddress,
- 'port': config.Port,
- 'scheduler': config.Cluster['scheduler'],
- 'hosts': '\n'.join(hosts)
- })
+ if not config.SSLOnly:
+ services.append(serviceTemplate % {
+ 'name': 'http',
+ 'bindAddress': config.BindAddress,
+ 'port': config.Port,
+ 'scheduler':
+ config.MultiProcess['PyDirector']['Scheduler'],
+ 'hosts': '\n'.join(hosts)
+ })
+
+ if config.SSLEnable:
+ services.append(serviceTemplate % {
+ 'name': 'https',
+ 'bindAddress': config.BindAddress,
+ 'port': config.SSLPort,
+ 'scheduler':
+ config.MultiProcess['PyDirector']['Scheduler'],
+ 'hosts': '\n'.join(sslHosts),
+ })
+
+ pdconfig = configTemplate % {
+ 'services': '\n'.join(services),
+ 'username':
+ config.MultiProcess['PyDirector']['admin']['username'],
+ 'password':
+ config.MultiProcess['PyDirector']['admin']['password'],
+ }
+
+ fd, fname = tempfile.mkstemp(prefix='pydir')
+ os.write(fd, pdconfig)
+ os.close(fd)
- if config.SSLEnable:
- services.append(serviceTemplate % {
- 'name': 'https',
- 'bindAddress': config.BindAddress,
- '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', [sys.executable,
+ config.pydirLocation,
+ fname])
- service.addProcess('pydir', [sys.executable,
- config.pydirLocation,
- fname])
-
return service
def makeService_pydir(self, options):
Modified: CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py
===================================================================
--- CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py 2006-12-20 23:45:33 UTC (rev 875)
+++ CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py 2006-12-21 00:25:37 UTC (rev 876)
@@ -56,12 +56,15 @@
'ServerType': 'singleprocess',
- 'Cluster': {
- 'processes': 10,
- 'scheduler': 'leastconns',
- 'admin': {
- 'username': None,
- 'password': None,
+ 'MultiProcess': {
+ 'NumProcesses': 10,
+ 'PyDirector': {
+ 'Enabled': True,
+ 'Scheduler': 'leastconns',
+ 'admin': {
+ 'username': None,
+ 'password': None,
+ },
},
},
}
Modified: CalendarServer/branches/users/dreid/cluster/twistedcaldav/tap.py
===================================================================
--- CalendarServer/branches/users/dreid/cluster/twistedcaldav/tap.py 2006-12-20 23:45:33 UTC (rev 875)
+++ CalendarServer/branches/users/dreid/cluster/twistedcaldav/tap.py 2006-12-21 00:25:37 UTC (rev 876)
@@ -253,7 +253,7 @@
serviceMethod = getattr(self, 'makeService_%s' % (serverType,), None)
- if not serverMethod:
+ if not serviceMethod:
raise UsageError(
("Unknown server type %s, please choose: singleprocess, "
"multiprocess, master, slave" % (serverType,)))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20061220/d11423a5/attachment.html
More information about the calendarserver-changes
mailing list