[CalendarServer-changes] [936] CalendarServer/branches/users/dreid/cluster

source_changes at macosforge.org source_changes at macosforge.org
Fri Jan 5 10:50:51 PST 2007


Revision: 936
          http://trac.macosforge.org/projects/calendarserver/changeset/936
Author:   dreid at apple.com
Date:     2007-01-05 10:50:50 -0800 (Fri, 05 Jan 2007)

Log Message:
-----------
Multiple bind addresses, don't expose PyDirector in the config because it's an implementation detail, only expose the scheduler option.

Modified Paths:
--------------
    CalendarServer/branches/users/dreid/cluster/conf/caldavd-test.plist
    CalendarServer/branches/users/dreid/cluster/conf/caldavd.plist
    CalendarServer/branches/users/dreid/cluster/run
    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	2007-01-05 17:31:57 UTC (rev 935)
+++ CalendarServer/branches/users/dreid/cluster/conf/caldavd-test.plist	2007-01-05 18:50:50 UTC (rev 936)
@@ -30,7 +30,9 @@
   <string>twistedcaldav/test/data/</string>
 
   <key>BindAddress</key>
-  <string>127.0.0.1</string>
+  <array>
+    <string>127.0.0.1</string>
+  </array>
 
   <key>Port</key>
   <integer>8008</integer>
@@ -177,22 +179,19 @@
     <key>NumProcesses</key>
     <integer>2</integer>
 
-    <key>PyDirector</key>
+    <key>LoadBalancer</key>
     <dict>
       <key>Enabled</key>
       <true/>
 
       <key>Scheduler</key>
+      <!-- Least Connections -->
       <string>leastconns</string>
+      <!-- Round Robin -->
+      <!-- <string>roundrobin</string> -->
+      <!-- Least Connections and Round Robin -->
+      <!-- <string>leastconnsrr</string> -->
 
-      <key>admin</key>
-      <dict>
-        <key>username</key>
-        <string></string>
-
-        <key>password</key>
-        <string></string>
-      </dict>
     </dict>    
   </dict>
 

Modified: CalendarServer/branches/users/dreid/cluster/conf/caldavd.plist
===================================================================
--- CalendarServer/branches/users/dreid/cluster/conf/caldavd.plist	2007-01-05 17:31:57 UTC (rev 935)
+++ CalendarServer/branches/users/dreid/cluster/conf/caldavd.plist	2007-01-05 18:50:50 UTC (rev 936)
@@ -30,7 +30,8 @@
   <string>/Library/CalendarServer/Documents</string>
 
   <key>BindAddress</key>
-  <string></string>
+  <array>
+  </array>
 
   <key>Port</key>
   <integer>8008</integer>
@@ -123,13 +124,18 @@
     <key>NumProcesses</key>
     <integer>0</integer>
 
-    <key>PyDirector</key>
+    <key>LoadBalancer</key>
     <dict>
       <key>Enabled</key>
       <false/>
 
       <key>Scheduler</key>
+      <!-- Least Connections -->
       <string>leastconns</string>
+      <!-- Round Robin -->
+      <!-- <string>roundrobin</string> -->
+      <!-- Least Connections and Round Robin -->
+      <!-- <string>leastconnsrr</string> -->
     </dict>    
   </dict>
 

Modified: CalendarServer/branches/users/dreid/cluster/run
===================================================================
--- CalendarServer/branches/users/dreid/cluster/run	2007-01-05 17:31:57 UTC (rev 935)
+++ CalendarServer/branches/users/dreid/cluster/run	2007-01-05 18:50:50 UTC (rev 936)
@@ -35,7 +35,7 @@
       install="";
     daemonize="-X";
   plugin_name="caldav";
- service_type="standalone";
+ service_type="singleprocess";
 
 usage ()
 {
@@ -54,6 +54,7 @@
   echo "        -d  Run caldavd as a daemon";
   echo "        -i  Perform a system install into dst; implies -s";
   echo "        -I  Perform a home install into dst; implies -s";
+  echo "        -t  Select the type of server to run (singleprocess, multiprocess, or master)";
 
   if [ "${1-}" == "-" ]; then return 0; fi;
   exit 64;

Modified: CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py
===================================================================
--- CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py	2007-01-05 17:31:57 UTC (rev 935)
+++ CalendarServer/branches/users/dreid/cluster/twistedcaldav/cluster.py	2007-01-05 18:50:50 UTC (rev 936)
@@ -28,7 +28,7 @@
 class TwistdSlaveProcess(object):
     prefix = "caldav"
 
-    def __init__(self, twistdLocation, configFile, interface, port, sslPort):
+    def __init__(self, twistdLocation, configFile, interfaces, port, sslPort):
         self.twistd = twistdLocation
 
         self.configFile = configFile
@@ -40,7 +40,7 @@
             os.path.dirname(config.PIDFile),
             '%s.pid' % (self.getName(),))
 
-        self.interface = interface
+        self.interfaces = interfaces
 
     def getName(self):
         return '%s-%s' % (self.prefix, self.port)
@@ -54,7 +54,7 @@
             self.twistd, '-n', 'caldav', 
             '-f', self.configFile,
             '-o', 'ServerType=singleprocess',
-            '-o', 'BindAddress=%s' % (self.interface,),
+            '-o', 'BindAddress=%s' % (','.join(self.interfaces),),
             '-o', 'Port=%s' % (self.port,),
             '-o', 'SSLPort=%s' % (self.sslPort,),
             '-o', 'PIDFile=%s' % (self.pidFile,)]
@@ -69,7 +69,7 @@
 
         return hostTemplate % {'name': name,
                                'port': port,
-                               'bindAddress': self.interface}
+                               'bindAddress': '127.0.0.1'}
 
 def makeService_multiprocess(self, options):
     service = procmon.ProcessMonitor()
@@ -80,9 +80,9 @@
     port = config.Port
     sslport = config.SSLPort
 
-    bindAddress = '127.0.0.1'
+    bindAddress = ['127.0.0.1']
 
-    if not config.MultiProcess['PyDirector']['Enabled']:
+    if not config.MultiProcess['LoadBalancer']['Enabled']:
         bindAddress = config.BindAddress
 
     for p in xrange(0, config.MultiProcess['NumProcesses']):
@@ -105,28 +105,32 @@
         if config.SSLEnable:
             sslHosts.append(process.getHostLine(ssl=True))
 
-    if config.MultiProcess['PyDirector']['Enabled']: 
+    if config.MultiProcess['LoadBalancer']['Enabled']: 
         services = []
 
-        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 not config.BindAddress:
+            config.BindAddress = ['']
+
+        for bindAddress in config.BindAddress:
+            if not config.SSLOnly:
+                services.append(serviceTemplate % {
+                        'name': 'http',
+                        'bindAddress': bindAddress,
+                        'port': config.Port,
+                        'scheduler': 
+                        config.MultiProcess['LoadBalancer']['Scheduler'],
+                        'hosts': '\n'.join(hosts)
+                        })
             
-        if config.SSLEnable:
-            services.append(serviceTemplate % {
-                    'name': 'https',
-                    'bindAddress': config.BindAddress,
-                    'port': config.SSLPort,
-                    'scheduler': 
-                    config.MultiProcess['PyDirector']['Scheduler'],
+            if config.SSLEnable:
+                services.append(serviceTemplate % {
+                        'name': 'https',
+                        'bindAddress': bindAddress,
+                        'port': config.SSLPort,
+                        'scheduler': 
+                        config.MultiProcess['LoadBalancer']['Scheduler'],
                         'hosts': '\n'.join(sslHosts),
-                    })
+                        })
 
         pdconfig = configTemplate % {
             'services': '\n'.join(services),

Modified: CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py
===================================================================
--- CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py	2007-01-05 17:31:57 UTC (rev 935)
+++ CalendarServer/branches/users/dreid/cluster/twistedcaldav/config.py	2007-01-05 18:50:50 UTC (rev 936)
@@ -23,7 +23,7 @@
 defaultConfigFile = '/etc/caldavd/caldavd.plist'
 
 defaultConfig = {
-    'BindAddress': '127.0.0.1',
+    'BindAddress': ['127.0.0.1'],
     'DirectoryService': {
         'params': {'node': '/Search'},
         'type': 'twistedcaldav.directory.appleopendirectory.OpenDirectoryService'
@@ -58,13 +58,9 @@
 
     'MultiProcess': {
         'NumProcesses': 10,
-        'PyDirector': {
+        'LoadBalancer': {
             '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	2007-01-05 17:31:57 UTC (rev 935)
+++ CalendarServer/branches/users/dreid/cluster/twistedcaldav/tap.py	2007-01-05 18:50:50 UTC (rev 936)
@@ -224,21 +224,25 @@
         
         service = Web2Service(logObserver)
 
-        if not config.SSLOnly:
-            httpService = internet.TCPServer(int(config.Port), channel,
-                                             interface=config.BindAddress)
-            httpService.setServiceParent(service)
+        if not config.BindAddress:
+            config.BindAddress = ['']
 
-        if config.SSLEnable:
-            from twisted.internet.ssl import DefaultOpenSSLContextFactory
-            httpsService = internet.SSLServer(
-                int(config.SSLPort),
-                channel,
-                DefaultOpenSSLContextFactory(config.SSLPrivateKey,
-                                             config.SSLCertificate),
-                interface=config.BindAddress
-            )
-            httpsService.setServiceParent(service)
+        for bindAddress in config.BindAddress:
+            if not config.SSLOnly:
+                httpService = internet.TCPServer(int(config.Port), channel,
+                                                 interface=bindAddress)
+                httpService.setServiceParent(service)
+
+            if config.SSLEnable:
+                from twisted.internet.ssl import DefaultOpenSSLContextFactory
+                httpsService = internet.SSLServer(
+                    int(config.SSLPort),
+                    channel,
+                    DefaultOpenSSLContextFactory(config.SSLPrivateKey,
+                                                 config.SSLCertificate),
+                    interface=bindAddress
+                    )
+                httpsService.setServiceParent(service)
             
         return service
 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070105/b693d1ee/attachment.html


More information about the calendarserver-changes mailing list