[CalendarServer-changes] [4478] CalendarServer/branches/release/CalendarServer-2.3-dev
source_changes at macosforge.org
source_changes at macosforge.org
Fri Jul 24 17:22:05 PDT 2009
Revision: 4478
http://trac.macosforge.org/projects/calendarserver/changeset/4478
Author: wsanchez at apple.com
Date: 2009-07-24 17:22:04 -0700 (Fri, 24 Jul 2009)
Log Message:
-----------
Pulled up r4475 from trunk.
Modified Paths:
--------------
CalendarServer/branches/release/CalendarServer-2.3-dev/twistedcaldav/test/test_upgrade.py
CalendarServer/branches/release/CalendarServer-2.3-dev/twistedcaldav/upgrade.py
Property Changed:
----------------
CalendarServer/branches/release/CalendarServer-2.3-dev/
CalendarServer/branches/release/CalendarServer-2.3-dev/doc/Extensions/caldav-privatecomments.txt
CalendarServer/branches/release/CalendarServer-2.3-dev/doc/Extensions/caldav-privatecomments.xml
CalendarServer/branches/release/CalendarServer-2.3-dev/doc/Extensions/caldav-schedulingchanges.txt
CalendarServer/branches/release/CalendarServer-2.3-dev/doc/Extensions/caldav-schedulingchanges.xml
Property changes on: CalendarServer/branches/release/CalendarServer-2.3-dev
___________________________________________________________________
Modified: svn:mergeinfo
- /CalendarServer/branches/users/sagen/resource-delegates-4038:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066:4068-4075
/CalendarServer/trunk:4439-4440,4448,4450,4473-4474
+ /CalendarServer/branches/users/sagen/resource-delegates-4038:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066:4068-4075
/CalendarServer/trunk:4439-4440,4448,4450,4473-4475
Property changes on: CalendarServer/branches/release/CalendarServer-2.3-dev/doc/Extensions/caldav-privatecomments.txt
___________________________________________________________________
Modified: svn:mergeinfo
- /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.txt:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.txt:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.txt:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.txt:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.txt:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.txt:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.txt:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-privatecomments.txt:4439-4440,4448,4450,4473-4474
+ /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.txt:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.txt:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.txt:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.txt:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.txt:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.txt:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.txt:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-privatecomments.txt:4439-4440,4448,4450,4473-4475
Property changes on: CalendarServer/branches/release/CalendarServer-2.3-dev/doc/Extensions/caldav-privatecomments.xml
___________________________________________________________________
Modified: svn:mergeinfo
- /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.xml:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.xml:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.xml:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.xml:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.xml:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.xml:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.xml:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-privatecomments.xml:4439-4440,4448,4450,4473-4474
+ /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-privatecomments-00.xml:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-privatecomments-00.xml:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-privatecomments.xml:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-privatecomments-00.xml:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-privatecomments.xml:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-privatecomments.xml:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-privatecomments.xml:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-privatecomments.xml:4439-4440,4448,4450,4473-4475
Property changes on: CalendarServer/branches/release/CalendarServer-2.3-dev/doc/Extensions/caldav-schedulingchanges.txt
___________________________________________________________________
Modified: svn:mergeinfo
- /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.txt:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.txt:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.txt:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.txt:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.txt:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.txt:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.txt:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.txt:4439-4440,4448,4450,4473-4474
+ /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.txt:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.txt:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.txt:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.txt:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.txt:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.txt:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.txt:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.txt:4439-4440,4448,4450,4473-4475
Property changes on: CalendarServer/branches/release/CalendarServer-2.3-dev/doc/Extensions/caldav-schedulingchanges.xml
___________________________________________________________________
Modified: svn:mergeinfo
- /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.xml:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.xml:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.xml:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.xml:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.xml:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.xml:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.xml:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.xml:4439-4440,4448,4450,4473-4474
+ /CalendarServer/branches/users/cdaboo/attendee-comments-2886/doc/Extensions/caldav-schedulingchanges-01.xml:2887-2910
/CalendarServer/branches/users/cdaboo/byebye-serviceslocator-2937/doc/Extensions/caldav-schedulingchanges-01.xml:2938-3097
/CalendarServer/branches/users/cdaboo/implicit-if-match-3306/doc/Extensions/caldav-schedulingchanges.xml:3307-3349
/CalendarServer/branches/users/cdaboo/implicitauto-2947/doc/Extensions/caldav-schedulingchanges-01.xml:2948-2989
/CalendarServer/branches/users/cdaboo/location-partial-accept-3573/doc/Extensions/caldav-schedulingchanges.xml:3574-3581
/CalendarServer/branches/users/sagen/resource-delegates-4038/doc/Extensions/caldav-schedulingchanges.xml:4040-4067
/CalendarServer/branches/users/sagen/resource-delegates-4066/doc/Extensions/caldav-schedulingchanges.xml:4068-4075
/CalendarServer/trunk/doc/Extensions/caldav-schedulingchanges.xml:4439-4440,4448,4450,4473-4475
Modified: CalendarServer/branches/release/CalendarServer-2.3-dev/twistedcaldav/test/test_upgrade.py
===================================================================
--- CalendarServer/branches/release/CalendarServer-2.3-dev/twistedcaldav/test/test_upgrade.py 2009-07-25 00:21:31 UTC (rev 4477)
+++ CalendarServer/branches/release/CalendarServer-2.3-dev/twistedcaldav/test/test_upgrade.py 2009-07-25 00:22:04 UTC (rev 4478)
@@ -370,6 +370,294 @@
upgradeData(config)
self.assertTrue(self.verifyHierarchy(root, after))
+
+
+ def test_calendarsUpgradeWithOrphans(self):
+ """
+ Verify that calendar homes in the /calendars/<type>/<shortname>/ form
+ whose records don't exist are moved into dataroot/archived/
+ """
+
+ self.setUpXMLDirectory()
+ directory = getDirectory()
+
+ before = {
+ "calendars" :
+ {
+ "users" :
+ {
+ "unknownuser" :
+ {
+ },
+ },
+ "groups" :
+ {
+ "unknowngroup" :
+ {
+ },
+ },
+ },
+ "principals" :
+ {
+ CalendarUserProxyDatabase.dbOldFilename :
+ {
+ "@contents" : "",
+ }
+ }
+ }
+
+ after = {
+ "archived" :
+ {
+ "unknownuser" :
+ {
+ },
+ "unknowngroup" :
+ {
+ },
+ },
+ "tasks" :
+ {
+ "incoming" :
+ {
+ },
+ },
+ ".calendarserver_version" :
+ {
+ "@contents" : "1",
+ },
+ "calendars" :
+ {
+ "__uids__" :
+ {
+ },
+ },
+ CalendarUserProxyDatabase.dbFilename :
+ {
+ "@contents" : None,
+ },
+ MailGatewayTokensDatabase.dbFilename :
+ {
+ "@contents" : None,
+ },
+ ResourceInfoDatabase.dbFilename :
+ {
+ "@contents" : None,
+ }
+ }
+
+ root = self.createHierarchy(before)
+
+ config.DocumentRoot = root
+ config.DataRoot = root
+
+ upgradeData(config)
+ self.assertTrue(self.verifyHierarchy(root, after))
+
+ # Ensure that repeating the process doesn't change anything
+ upgradeData(config)
+ self.assertTrue(self.verifyHierarchy(root, after))
+
+
+ def test_calendarsUpgradeWithDuplicateOrphans(self):
+ """
+ Verify that calendar homes in the /calendars/<type>/<shortname>/ form
+ whose records don't exist are moved into dataroot/archived/
+ """
+
+ self.setUpXMLDirectory()
+ directory = getDirectory()
+
+ before = {
+ "archived" :
+ {
+ "unknownuser" :
+ {
+ },
+ "unknowngroup" :
+ {
+ },
+ },
+ "calendars" :
+ {
+ "users" :
+ {
+ "unknownuser" :
+ {
+ },
+ },
+ "groups" :
+ {
+ "unknowngroup" :
+ {
+ },
+ },
+ },
+ "principals" :
+ {
+ CalendarUserProxyDatabase.dbOldFilename :
+ {
+ "@contents" : "",
+ }
+ }
+ }
+
+ after = {
+ "archived" :
+ {
+ "unknownuser" :
+ {
+ },
+ "unknowngroup" :
+ {
+ },
+ "unknownuser.1" :
+ {
+ },
+ "unknowngroup.1" :
+ {
+ },
+ },
+ "tasks" :
+ {
+ "incoming" :
+ {
+ },
+ },
+ ".calendarserver_version" :
+ {
+ "@contents" : "1",
+ },
+ "calendars" :
+ {
+ "__uids__" :
+ {
+ },
+ },
+ CalendarUserProxyDatabase.dbFilename :
+ {
+ "@contents" : None,
+ },
+ MailGatewayTokensDatabase.dbFilename :
+ {
+ "@contents" : None,
+ },
+ ResourceInfoDatabase.dbFilename :
+ {
+ "@contents" : None,
+ }
+ }
+
+ root = self.createHierarchy(before)
+
+ config.DocumentRoot = root
+ config.DataRoot = root
+
+ upgradeData(config)
+ self.assertTrue(self.verifyHierarchy(root, after))
+
+ # Ensure that repeating the process doesn't change anything
+ upgradeData(config)
+ self.assertTrue(self.verifyHierarchy(root, after))
+
+
+
+ def test_calendarsUpgradeWithDSStore(self):
+ """
+ Verify that .DS_Store files don't hinder an upgrade
+ """
+
+ self.setUpXMLDirectory()
+ directory = getDirectory()
+
+ before = {
+ ".DS_Store" :
+ {
+ "@contents" : "",
+ },
+ "calendars" :
+ {
+ ".DS_Store" :
+ {
+ "@contents" : "",
+ },
+ "__uids__" :
+ {
+ ".DS_Store" :
+ {
+ "@contents" : "",
+ },
+ },
+ },
+ "principals" :
+ {
+ ".DS_Store" :
+ {
+ "@contents" : "",
+ },
+ CalendarUserProxyDatabase.dbOldFilename :
+ {
+ "@contents" : "",
+ }
+ }
+ }
+
+ after = {
+ ".DS_Store" :
+ {
+ "@contents" : "",
+ },
+ "tasks" :
+ {
+ "incoming" :
+ {
+ },
+ },
+ ".calendarserver_version" :
+ {
+ "@contents" : "1",
+ },
+ "calendars" :
+ {
+ ".DS_Store" :
+ {
+ "@contents" : "",
+ },
+ "__uids__" :
+ {
+ ".DS_Store" :
+ {
+ "@contents" : "",
+ },
+ },
+ },
+ CalendarUserProxyDatabase.dbFilename :
+ {
+ "@contents" : None,
+ },
+ MailGatewayTokensDatabase.dbFilename :
+ {
+ "@contents" : None,
+ },
+ ResourceInfoDatabase.dbFilename :
+ {
+ "@contents" : None,
+ }
+ }
+
+ root = self.createHierarchy(before)
+
+ config.DocumentRoot = root
+ config.DataRoot = root
+
+ upgradeData(config)
+ self.assertTrue(self.verifyHierarchy(root, after))
+
+ # Ensure that repeating the process doesn't change anything
+ upgradeData(config)
+ self.assertTrue(self.verifyHierarchy(root, after))
+
+
def test_calendarsUpgradeWithUIDs(self):
"""
Verify that calendar homes in the /calendars/__uids__/<guid>/ form
Modified: CalendarServer/branches/release/CalendarServer-2.3-dev/twistedcaldav/upgrade.py
===================================================================
--- CalendarServer/branches/release/CalendarServer-2.3-dev/twistedcaldav/upgrade.py 2009-07-25 00:21:31 UTC (rev 4477)
+++ CalendarServer/branches/release/CalendarServer-2.3-dev/twistedcaldav/upgrade.py 2009-07-25 00:22:04 UTC (rev 4478)
@@ -343,6 +343,10 @@
continue
oldHome = os.path.join(uidHomes, home)
+ if not os.path.isdir(oldHome):
+ # Skip non-directories
+ continue
+
newHome = os.path.join(uidHomes, home[0:2], home[2:4], home)
moveCalendarHome(oldHome, newHome, uid=uid, gid=gid)
@@ -361,11 +365,16 @@
for shortName in os.listdir(dirPath):
record = directory.recordWithShortName(recordType,
shortName)
+ oldHome = os.path.join(dirPath, shortName)
if record is not None:
- oldHome = os.path.join(dirPath, shortName)
newHome = os.path.join(uidHomes, record.uid[0:2],
record.uid[2:4], record.uid)
moveCalendarHome(oldHome, newHome, uid=uid, gid=gid)
+ else:
+ # an orphaned calendar home (principal no longer
+ # exists in the directory)
+ archive(config, oldHome, uid, gid)
+
os.rmdir(dirPath)
@@ -549,3 +558,31 @@
os.mkdir(path)
os.chown(path, uid, gid)
+
+def archive(config, srcPath, uid, gid):
+ """
+ Move srcPath into dataroot/archived, giving the destination a unique
+ (sequentially numbered) name in the case of duplicates.
+ """
+
+ archiveDir = os.path.join(config.DataRoot, "archived")
+
+ if not os.path.exists(archiveDir):
+ os.mkdir(archiveDir)
+ os.chown(archiveDir, uid, gid)
+
+ baseName = os.path.basename(srcPath)
+ newName = baseName
+ count = 0
+ destPath = os.path.join(archiveDir, newName)
+ while os.path.exists(destPath):
+ count += 1
+ newName = "%s.%d" % (baseName, count)
+ destPath = os.path.join(archiveDir, newName)
+
+ try:
+ os.rename(srcPath, destPath)
+ except OSError:
+ # Can't rename, must copy/delete
+ shutil.copy2(srcPath, destPath)
+ os.remove(srcPath)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090724/53f02514/attachment-0001.html>
More information about the calendarserver-changes
mailing list