[CalendarServer-changes] [4367] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Mon Jun 22 17:54:36 PDT 2009
Revision: 4367
http://trac.macosforge.org/projects/calendarserver/changeset/4367
Author: sagen at apple.com
Date: 2009-06-22 17:54:36 -0700 (Mon, 22 Jun 2009)
Log Message:
-----------
Wait for directory service to become fully available before proceeding.
Modified Paths:
--------------
CalendarServer/trunk/calendarserver/tap/caldav.py
CalendarServer/trunk/calendarserver/tools/util.py
CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
CalendarServer/trunk/twistedcaldav/directory/directory.py
Modified: CalendarServer/trunk/calendarserver/tap/caldav.py
===================================================================
--- CalendarServer/trunk/calendarserver/tap/caldav.py 2009-06-22 22:41:49 UTC (rev 4366)
+++ CalendarServer/trunk/calendarserver/tap/caldav.py 2009-06-23 00:54:36 UTC (rev 4367)
@@ -24,6 +24,7 @@
import socket
import stat
import sys
+from time import sleep
from tempfile import mkstemp
from subprocess import Popen, PIPE
@@ -432,6 +433,10 @@
baseDirectory = directoryClass(config.DirectoryService.params)
+ # Wait for the directory to become available
+ while not baseDirectory.isAvailable():
+ sleep(5)
+
directories.append(baseDirectory)
sudoDirectory = None
Modified: CalendarServer/trunk/calendarserver/tools/util.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/util.py 2009-06-22 22:41:49 UTC (rev 4366)
+++ CalendarServer/trunk/calendarserver/tools/util.py 2009-06-23 00:54:36 UTC (rev 4367)
@@ -24,6 +24,7 @@
import sys
import os
+from time import sleep
from twisted.python.reflect import namedClass
@@ -87,8 +88,13 @@
return self.principalCollection.principalForCalendarUserAddress(cua)
- return MyDirectoryService(config.DirectoryService.params)
+ # Wait for directory service to become available
+ directory = MyDirectoryService(config.DirectoryService.params)
+ while not directory.isAvailable():
+ sleep(5)
+ return directory
+
class DummyDirectoryService (DirectoryService):
realmName = ""
baseGUID = "51856FD4-5023-4890-94FE-4356C4AAC3E4"
Modified: CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2009-06-22 22:41:49 UTC (rev 4366)
+++ CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2009-06-23 00:54:36 UTC (rev 4367)
@@ -772,6 +772,27 @@
yield recordGUID, autoSchedule, proxy, readOnlyProxy
+ def isAvailable(self):
+ """
+ Returns True if all configured directory nodes are accessible, False otherwise
+ """
+
+ if self.node == "/Search":
+ nodes = opendirectory.listNodes(self.directory)
+ else:
+ nodes = [self.node]
+
+ try:
+ for node in nodes:
+ opendirectory.getNodeAttributes(self.directory, node, [dsattributes.kDSNAttrNodePath])
+ except opendirectory.ODError:
+ self.log_warn("Open Directory Node %s not available" % (node,))
+ return False
+
+ return True
+
+
+
def buildQueries(recordTypes, fields, mapping):
"""
Determine how many queries need to be performed in order to work around opendirectory
Modified: CalendarServer/trunk/twistedcaldav/directory/directory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/directory.py 2009-06-22 22:41:49 UTC (rev 4366)
+++ CalendarServer/trunk/twistedcaldav/directory/directory.py 2009-06-23 00:54:36 UTC (rev 4367)
@@ -250,6 +250,8 @@
def getResourceInfo(self):
return ()
+ def isAvailable(self):
+ return True
def getParams(self, params, defaults, ignore=None):
""" Checks configuration parameters for unexpected/ignored keys, and
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090622/4caf4df8/attachment.html>
More information about the calendarserver-changes
mailing list