[CalendarServer-changes] [9463] CalendarServer/trunk/contrib/migration

source_changes at macosforge.org source_changes at macosforge.org
Thu Jul 19 13:47:37 PDT 2012


Revision: 9463
          http://trac.macosforge.org/projects/calendarserver/changeset/9463
Author:   sagen at apple.com
Date:     2012-07-19 13:47:36 -0700 (Thu, 19 Jul 2012)
Log Message:
-----------
Migration extra script uses .bak extension with number preceding it, rather than trailing it (e.g. .bak.1)

Modified Paths:
--------------
    CalendarServer/trunk/contrib/migration/calendarmigrator.py
    CalendarServer/trunk/contrib/migration/test/test_migrator.py

Modified: CalendarServer/trunk/contrib/migration/calendarmigrator.py
===================================================================
--- CalendarServer/trunk/contrib/migration/calendarmigrator.py	2012-07-18 21:24:50 UTC (rev 9462)
+++ CalendarServer/trunk/contrib/migration/calendarmigrator.py	2012-07-19 20:47:36 UTC (rev 9463)
@@ -596,7 +596,7 @@
                 newDocumentRoot = os.path.join(newDataRoot, newDocumentRootValue)
                 # Move aside whatever is there
                 if diskAccessor.exists(newDataRoot):
-                    renameTo = nextAvailable(newDataRoot + ".bak", diskAccessor=diskAccessor)
+                    renameTo = nextAvailable(newDataRoot, "bak", diskAccessor=diskAccessor)
                     diskAccessor.rename(newDataRoot, renameTo)
 
                 if diskAccessor.exists(absolutePathWithRoot(sourceRoot, oldCalDataRootValueProcessed)):
@@ -769,26 +769,30 @@
         return os.path.join(root, path)
 
 
-def nextAvailable(path, diskAccessor=None):
+def nextAvailable(path, ext, diskAccessor=None):
     """
-    If path doesn't exist, return path.  Otherwise return the first path name
-    following the path.NNN pattern that doesn't exist, where NNN starts at 1
+    If path.ext doesn't exist, return path.ext.  Otherwise return the first path name
+    following the path.N.ext pattern that doesn't exist, where N starts at 1
     and increments until a non-existent path name is determined.
 
     @param path: path to examine
     @type path: C{str}
-    @returns: non-existent path name C{str}
+    @param ext: filename extension to append (don't include ".")
+    @type ext: C{str}
+    @returns: non-existent path name
+    @rtype: C{str}
     """
 
     if diskAccessor is None:
         diskAccessor = DiskAccessor()
 
-    if not diskAccessor.exists(path):
-        return path
+    newPath = "%s.%s" % (path, ext)
+    if not diskAccessor.exists(newPath):
+        return newPath
 
     i = 1
     while(True):
-        newPath = "%s.%d" % (path, i)
+        newPath = "%s.%d.%s" % (path, i, ext)
         if not diskAccessor.exists(newPath):
             return newPath
         i += 1

Modified: CalendarServer/trunk/contrib/migration/test/test_migrator.py
===================================================================
--- CalendarServer/trunk/contrib/migration/test/test_migrator.py	2012-07-18 21:24:50 UTC (rev 9462)
+++ CalendarServer/trunk/contrib/migration/test/test_migrator.py	2012-07-19 20:47:36 UTC (rev 9463)
@@ -1040,8 +1040,8 @@
                 "/Volumes/External/CalendarServer/Documents/calendars/" : True,
                 "/Volumes/External/CalendarServer/Calendar and Contacts Data/" : True,
                 "/Volumes/External/CalendarServer/Calendar and Contacts Data.bak/" : True,
-                "/Volumes/External/CalendarServer/Calendar and Contacts Data.bak.1/" : True,
-                "/Volumes/External/CalendarServer/Calendar and Contacts Data.bak.2/" : True,
+                "/Volumes/External/CalendarServer/Calendar and Contacts Data.1.bak/" : True,
+                "/Volumes/External/CalendarServer/Calendar and Contacts Data.2.bak/" : True,
                 "/Library/Server/Previous/Library/CalendarServer/Data/" : True,
                 "/Volumes/External/AddressBookServer/Documents/addressbooks/" : True,
                 "/Library/Server/Previous/Library/AddressBookServer/Data/" : True,
@@ -1064,7 +1064,7 @@
             [   # expected DiskAccessor history
                 ('rename',
                  '/Volumes/External/CalendarServer/Calendar and Contacts Data',
-                 '/Volumes/External/CalendarServer/Calendar and Contacts Data.bak.3'),
+                 '/Volumes/External/CalendarServer/Calendar and Contacts Data.3.bak'),
                 ('ditto', '/Library/Server/Previous/Library/CalendarServer/Data', '/Volumes/External/CalendarServer/Calendar and Contacts Data'),
                 ('rename', '/Volumes/External/CalendarServer/Documents', '/Volumes/External/CalendarServer/Calendar and Contacts Data/Documents'),
                 ('chown-recursive', '/Volumes/External/CalendarServer/Calendar and Contacts Data', FakeUser.pw_uid, FakeGroup.gr_gid),
@@ -1511,12 +1511,12 @@
     def test_nextAvailable(self):
         data = [
             ( { }, "a.bak" ),
-            ( { "a.bak": True }, "a.bak.1" ),
-            ( { "a.bak": True, "a.bak.1" : True }, "a.bak.2" ),
+            ( { "a.bak": True }, "a.1.bak" ),
+            ( { "a.bak": True, "a.1.bak" : True }, "a.2.bak" ),
         ]
         for paths, expected in data:
             accessor = StubDiskAccessor(paths)
-            actual = nextAvailable("a.bak", diskAccessor=accessor)
+            actual = nextAvailable("a", "bak", diskAccessor=accessor)
             self.assertEquals(actual, expected)
 
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120719/db34f459/attachment.html>


More information about the calendarserver-changes mailing list