[CalendarServer-changes] [6449] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Wed Oct 20 12:49:16 PDT 2010
Revision: 6449
http://trac.macosforge.org/projects/calendarserver/changeset/6449
Author: sagen at apple.com
Date: 2010-10-20 12:49:14 -0700 (Wed, 20 Oct 2010)
Log Message:
-----------
Only migration automatically triggers a location/resource import (not a clean install)
Modified Paths:
--------------
CalendarServer/trunk/contrib/migration/calendarmigrator.py
CalendarServer/trunk/twistedcaldav/upgrade.py
Modified: CalendarServer/trunk/contrib/migration/calendarmigrator.py
===================================================================
--- CalendarServer/trunk/contrib/migration/calendarmigrator.py 2010-10-20 16:52:58 UTC (rev 6448)
+++ CalendarServer/trunk/contrib/migration/calendarmigrator.py 2010-10-20 19:49:14 UTC (rev 6449)
@@ -40,6 +40,7 @@
CALDAVD_PLIST = "caldavd.plist"
CARDDAVD_PLIST = "carddavd.plist"
NEW_SERVER_ROOT = "/Library/Server/Calendar and Contacts"
+RESOURCE_MIGRATION_TRIGGER = "trigger_resource_migration"
verbatimKeys = """
@@ -202,6 +203,7 @@
newServerRootValue = migrateData(options)
migrateConfiguration(options, newServerRootValue)
migrateRunState(options)
+ triggerResourceMigration(newServerRootValue)
else:
log("ERROR: --sourceRoot must be specified")
@@ -225,7 +227,22 @@
setServiceStateDisabled(options.targetRoot, LAUNCHD_KEY, disabled)
+def triggerResourceMigration(newServerRootValue):
+ """
+ Leave a file in the server root to act as a signal that the server
+ should migrate locations and resources from OD when it starts up.
+ """
+ triggerPath = os.path.join(newServerRootValue, RESOURCE_MIGRATION_TRIGGER)
+ if not os.path.exists(newServerRootValue):
+ log("New server root directory doesn't exist: %s" % (newServerRootValue,))
+ return
+ if not os.path.exists(triggerPath):
+ # Create an empty trigger file
+ log("Creating resource migration trigger file: %s" % (triggerPath,))
+ open(triggerPath, "w").close()
+
+
def migrateConfiguration(options, newServerRootValue):
"""
Copy files/directories/symlinks from previous system's /etc/caldavd
Modified: CalendarServer/trunk/twistedcaldav/upgrade.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/upgrade.py 2010-10-20 16:52:58 UTC (rev 6448)
+++ CalendarServer/trunk/twistedcaldav/upgrade.py 2010-10-20 19:49:14 UTC (rev 6449)
@@ -478,38 +478,43 @@
#
# Migrates locations and resources from OD
#
+ triggerFile = "trigger_resource_migration"
+ triggerPath = os.path.join(config.ServerRoot, triggerFile)
+ if os.path.exists(triggerPath):
- directory = getDirectory()
- userService = directory.serviceForRecordType("users")
- resourceService = directory.serviceForRecordType("resources")
- if (
- not isinstance(userService, OpenDirectoryService) or
- not isinstance(resourceService, XMLDirectoryService)
- ):
- # Configuration requires no migration
- return succeed(None)
+ log.info("Migrating locations and resources")
- # Fetch the autoSchedule assignments from resourceinfo.sqlite and pass
- # those to migrateResources
- autoSchedules = {}
- dbPath = os.path.join(config.DataRoot, ResourceInfoDatabase.dbFilename)
- if os.path.exists(dbPath):
- resourceInfoDatabase = ResourceInfoDatabase(config.DataRoot)
- results = resourceInfoDatabase._db_execute(
- "select GUID, AUTOSCHEDULE from RESOURCEINFO"
- )
- for guid, autoSchedule in results:
- autoSchedules[guid] = autoSchedule
+ directory = getDirectory()
+ userService = directory.serviceForRecordType("users")
+ resourceService = directory.serviceForRecordType("resources")
+ if (
+ not isinstance(userService, OpenDirectoryService) or
+ not isinstance(resourceService, XMLDirectoryService)
+ ):
+ # Configuration requires no migration
+ return succeed(None)
- # Create internal copies of resources and locations based on what is found
- # in OD, overriding the autoSchedule default with existing assignments
- # from resourceinfo.sqlite
- return migrateResources(userService, resourceService,
- autoSchedules=autoSchedules)
+ # Fetch the autoSchedule assignments from resourceinfo.sqlite and pass
+ # those to migrateResources
+ autoSchedules = {}
+ dbPath = os.path.join(config.DataRoot, ResourceInfoDatabase.dbFilename)
+ if os.path.exists(dbPath):
+ resourceInfoDatabase = ResourceInfoDatabase(config.DataRoot)
+ results = resourceInfoDatabase._db_execute(
+ "select GUID, AUTOSCHEDULE from RESOURCEINFO"
+ )
+ for guid, autoSchedule in results:
+ autoSchedules[guid] = autoSchedule
+ # Create internal copies of resources and locations based on what is
+ # found in OD, overriding the autoSchedule default with existing
+ # assignments from resourceinfo.sqlite
+ return migrateResources(userService, resourceService,
+ autoSchedules=autoSchedules)
+
# The on-disk version number (which defaults to zero if .calendarserver_version
# doesn't exist), is compared with each of the numbers in the upgradeMethods
# array. If it is less than the number, the associated method is called.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20101020/b7250a1e/attachment-0001.html>
More information about the calendarserver-changes
mailing list