[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