[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