[CalendarServer-changes] [8709] CalendarServer/branches/users/glyph/migrate-merge

source_changes at macosforge.org source_changes at macosforge.org
Thu Feb 16 04:29:29 PST 2012


Revision: 8709
          http://trac.macosforge.org/projects/calendarserver/changeset/8709
Author:   glyph at apple.com
Date:     2012-02-16 04:29:29 -0800 (Thu, 16 Feb 2012)
Log Message:
-----------
weave 'merge' attribute through the service

Modified Paths:
--------------
    CalendarServer/branches/users/glyph/migrate-merge/txdav/common/datastore/upgrade/migrate.py

Property Changed:
----------------
    CalendarServer/branches/users/glyph/migrate-merge/

Modified: CalendarServer/branches/users/glyph/migrate-merge/txdav/common/datastore/upgrade/migrate.py
===================================================================
--- CalendarServer/branches/users/glyph/migrate-merge/txdav/common/datastore/upgrade/migrate.py	2012-02-16 12:29:26 UTC (rev 8708)
+++ CalendarServer/branches/users/glyph/migrate-merge/txdav/common/datastore/upgrade/migrate.py	2012-02-16 12:29:29 UTC (rev 8709)
@@ -38,7 +38,7 @@
 from twext.python.parallel import Parallelizer
 from twext.internet.spawnsvc import SpawnerService
 
-from twisted.protocols.amp import AMP, Command, String
+from twisted.protocols.amp import AMP, Command, String, Boolean
 
 from txdav.caldav.datastore.util import migrateHome as migrateCalendarHome
 from txdav.carddav.datastore.util import migrateHome as migrateAddressbookHome
@@ -108,7 +108,8 @@
     """
 
     arguments = [("filename", String()),
-                 ("appropriateStoreClass", String())]
+                 ("appropriateStoreClass", String()),
+                 ("merge", Boolean())]
 
 
 
@@ -146,7 +147,8 @@
         name, with the given dead property storage class.
         """
         return self.callRemote(Configure, filename=filename,
-                               appropriateStoreClass=qual(storeClass))
+                               appropriateStoreClass=qual(storeClass),
+                               merge=self.service.merge)
 
 
     def oneUpgrade(self, uid, homeType):
@@ -174,13 +176,13 @@
 
 
     @Configure.responder
-    def configure(self, filename, appropriateStoreClass):
+    def configure(self, filename, appropriateStoreClass, merge):
         subsvc = None
         self.upgrader = UpgradeToDatabaseService(
             FileStore(
                 CachingFilePath(filename), None, True, True,
                 propertyStoreClass=namedAny(appropriateStoreClass)
-            ), self.store, subsvc
+            ), self.store, subsvc, merge=merge
         )
         return {}
 
@@ -210,7 +212,7 @@
 
     @classmethod
     def wrapService(cls, path, service, store, uid=None, gid=None,
-                    parallel=0, spawner=None):
+                    parallel=0, spawner=None, merge=False):
         """
         Create an L{UpgradeToDatabaseService} if there are still file-based
         calendar or addressbook homes remaining in the given path.
@@ -236,6 +238,9 @@
         @param spawner: a concrete L{StoreSpawnerService} subclass that will be
             used to spawn helper processes.
 
+        @param merge: merge filesystem homes into SQL homes, rather than
+            skipping them.
+
         @return: a service
         @rtype: L{IService}
         """
@@ -277,14 +282,14 @@
                     FileStore(path, None, True, True,
                               propertyStoreClass=appropriateStoreClass),
                     store, service, uid=uid, gid=gid,
-                    parallel=parallel, spawner=spawner,
+                    parallel=parallel, spawner=spawner, merge=merge
                 )
                 return self
         return service
 
 
     def __init__(self, fileStore, sqlStore, service, uid=None, gid=None,
-                 parallel=0, spawner=None):
+                 parallel=0, spawner=None, merge=False):
         """
         Initialize the service.
         """
@@ -295,6 +300,7 @@
         self.gid = gid
         self.parallel = parallel
         self.spawner = spawner
+        self.merge = merge
 
 
     @inlineCallbacks
@@ -308,7 +314,8 @@
                       (homeType, uid))
         sqlTxn = self.sqlStore.newTransaction()
         homeGetter = destFunc(sqlTxn)
-        if (yield homeGetter(uid, create=False)) is not None:
+        sqlHome = yield homeGetter(uid, create=False)
+        if sqlHome is not None and not self.merge:
             self.log_warn(
                 "%s home %r already existed not migrating" % (
                     homeType, uid))
@@ -316,8 +323,9 @@
             yield fileTxn.commit()
             returnValue(None)
         try:
-            sqlHome = yield homeGetter(uid, create=True)
-            yield migrateFunc(fileHome, sqlHome)
+            if sqlHome is None:
+                sqlHome = yield homeGetter(uid, create=True)
+            yield migrateFunc(fileHome, sqlHome, merge=self.merge)
         except:
             f = Failure()
             yield fileTxn.abort()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120216/53d852b7/attachment-0001.html>


More information about the calendarserver-changes mailing list