[CalendarServer-changes] [4097] CalendarServer/trunk/twistedcaldav/directory

source_changes at macosforge.org source_changes at macosforge.org
Mon Apr 27 21:05:52 PDT 2009


Revision: 4097
          http://trac.macosforge.org/projects/calendarserver/changeset/4097
Author:   cdaboo at apple.com
Date:     2009-04-27 21:05:51 -0700 (Mon, 27 Apr 2009)
Log Message:
-----------
Make sure we can lookup security identities.

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/directory/cachingappleopendirectory.py
    CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py
    CalendarServer/trunk/twistedcaldav/directory/test/test_cachedirectory.py

Modified: CalendarServer/trunk/twistedcaldav/directory/cachingappleopendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/cachingappleopendirectory.py	2009-04-27 23:44:40 UTC (rev 4096)
+++ CalendarServer/trunk/twistedcaldav/directory/cachingappleopendirectory.py	2009-04-28 04:05:51 UTC (rev 4097)
@@ -430,6 +430,7 @@
         attrs = [
             dsattributes.kDS1AttrGeneratedUID,
             dsattributes.kDSNAttrRecordName,
+            dsattributes.kDSNAttrAltSecurityIdentities,
             dsattributes.kDSNAttrRecordType,
             dsattributes.kDS1AttrDistinguishedName,
             dsattributes.kDS1AttrFirstName,

Modified: CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py	2009-04-27 23:44:40 UTC (rev 4096)
+++ CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py	2009-04-28 04:05:51 UTC (rev 4097)
@@ -69,6 +69,7 @@
             CachingDirectoryService.INDEX_TYPE_GUID     : {},
             CachingDirectoryService.INDEX_TYPE_SHORTNAME: {},
             CachingDirectoryService.INDEX_TYPE_EMAIL    : {},
+            CachingDirectoryService.INDEX_TYPE_AUTHID   : {},
         }
 
     def addRecord(self, record):
@@ -126,11 +127,13 @@
     INDEX_TYPE_GUID      = "guid"
     INDEX_TYPE_SHORTNAME = "shortname"
     INDEX_TYPE_EMAIL     = "email"
+    INDEX_TYPE_AUTHID    = "authid"
 
     indexTypeToRecordAttribute = {
         "guid"     : "guid",
         "shortname": "shortNames",
         "email"    : "emailAddresses",
+        "authid"   : "authIDs",
     }
 
     def __init__(
@@ -207,6 +210,7 @@
             CachingDirectoryService.INDEX_TYPE_GUID,
             CachingDirectoryService.INDEX_TYPE_SHORTNAME,
             CachingDirectoryService.INDEX_TYPE_EMAIL,
+            CachingDirectoryService.INDEX_TYPE_AUTHID,
         )
 
     def recordCacheForType(self, recordType):
@@ -221,6 +225,9 @@
     def recordWithEmailAddress(self, emailAddress):
         return self._lookupRecord(None, CachingDirectoryService.INDEX_TYPE_EMAIL, emailAddress)
 
+    def recordWithAuthID(self, authID):
+        return self._lookupRecord(None, CachingDirectoryService.INDEX_TYPE_AUTHID, authID)
+
     def recordWithGUID(self, guid):
         return self._lookupRecord(None, CachingDirectoryService.INDEX_TYPE_GUID, guid)
 
@@ -295,6 +302,10 @@
                         key = "dir|%s|%s" % (CachingDirectoryService.INDEX_TYPE_EMAIL, emailAddress)
                         self.log_debug("Memcache: storing %s" % (key,))
                         self.memcacheSet(key, record)
+                    for authID in record.authIDs:
+                        key = "dir|%s|%s" % (CachingDirectoryService.INDEX_TYPE_AUTHID, authID)
+                        self.log_debug("Memcache: storing %s" % (key,))
+                        self.memcacheSet(key, record)
                     key = "dir|%s|%s" % (CachingDirectoryService.INDEX_TYPE_GUID, record.guid)
                     self.log_debug("Memcache: storing %s" % (key,))
                     self.memcacheSet(key, record)

Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_cachedirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_cachedirectory.py	2009-04-27 23:44:40 UTC (rev 4096)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_cachedirectory.py	2009-04-28 04:05:51 UTC (rev 4097)
@@ -42,7 +42,8 @@
                 cacheIt = False
                 if indexType in (
                     CachingDirectoryService.INDEX_TYPE_SHORTNAME,
-                    CachingDirectoryService.INDEX_TYPE_EMAIL
+                    CachingDirectoryService.INDEX_TYPE_EMAIL,
+                    CachingDirectoryService.INDEX_TYPE_AUTHID,
                 ):
                     if indexKey in record[indexType]:
                         cacheIt = True
@@ -56,6 +57,7 @@
                         recordType            = recordType,
                         guid                  = record.get("guid"),
                         shortNames            = record.get("shortname"),
+                        authIDs               = record.get("authid"),
                         fullName              = record.get("fullName"),
                         firstName             = "",
                         lastName              = "",
@@ -107,6 +109,7 @@
             "guid": guid,
             "shortname": shortNames,
             "email": emails,
+            "authid": tuple(["Kerberos:%s" % email for email in emails])
         }
         
         if members:
@@ -216,3 +219,24 @@
             "user03 at example.com"
         ) is not None)
         self.assertFalse(self.service.queried)
+
+    def test_cacheoneauthid(self):
+        self.dummyRecords()
+
+        self.assertTrue(self.service.recordWithAuthID(
+            "Kerberos:user03 at example.com"
+        ) is not None)
+        self.assertTrue(self.service.queried)
+        self.verifyRecords(DirectoryService.recordType_users, set((
+            self.guidForShortName("user03"),
+        )))
+        self.verifyRecords(DirectoryService.recordType_groups, set())
+        self.verifyRecords(DirectoryService.recordType_resources, set())
+        self.verifyRecords(DirectoryService.recordType_locations, set())
+
+        # Make sure it really is cached and won't cause another query
+        self.service.queried = False
+        self.assertTrue(self.service.recordWithAuthID(
+            "Kerberos:user03 at example.com"
+        ) is not None)
+        self.assertFalse(self.service.queried)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090427/6e425f1a/attachment-0001.html>


More information about the calendarserver-changes mailing list