[CalendarServer-changes] [3783] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Mon Mar 2 12:36:17 PST 2009
Revision: 3783
http://trac.macosforge.org/projects/calendarserver/changeset/3783
Author: wsanchez at apple.com
Date: 2009-03-02 12:36:16 -0800 (Mon, 02 Mar 2009)
Log Message:
-----------
Update SBS backup
Modified Paths:
--------------
CalendarServer/trunk/contrib/SBS/bin/calendarServer_restore
CalendarServer/trunk/contrib/SBS/conf/85-calendarServer.plist
CalendarServer/trunk/support/Makefile.Apple
Modified: CalendarServer/trunk/contrib/SBS/bin/calendarServer_restore
===================================================================
--- CalendarServer/trunk/contrib/SBS/bin/calendarServer_restore 2009-03-02 20:28:39 UTC (rev 3782)
+++ CalendarServer/trunk/contrib/SBS/bin/calendarServer_restore 2009-03-02 20:36:16 UTC (rev 3783)
@@ -15,21 +15,24 @@
# limitations under the License.
##
+"""
+Utility code for backup and restore
+"""
+
import os
-import sys
+import shutil
import fnmatch
+import commands
from twext.python.plistlib import readPlist
-ServiceConf = "85-calendarServer.plist"
+VERBOSE = os.environ.get('VERBOSE', False)
+FUNCLOG = os.environ.get('FUNCLOG', False)
-configFile = "/private/etc/caldavd/caldavd.plist"
+SERVERADMIN = "/usr/sbin/serveradmin"
-documentRoot = "/Library/CalendarServer/Documents/"
+SBSCONF = "/private/etc/server_backup"
-removePatterns = ['.db.sqlite']
-
-
class Options(dict):
def parseOpts(self, argv):
for x in xrange(0, len(argv)):
@@ -38,54 +41,139 @@
self[opt.strip('-')] = argv[x+1]
-def cleanDocRoot():
- root = None
+def debug(string):
+ if VERBOSE:
+ print "DEBUG:", string
+
+
+def funclog(string):
+ if FUNCLOG:
+ print "FUNCLOG:", string
+
+
+def logFuncCall(func):
+ def printArgs(args):
+ a = []
+ for arg in args:
+ a.append(repr(arg))
+ a.append(', ')
+
+ return ''.join(a).strip(', ')
+
+ def printKwargs(kwargs):
+ a = []
+ for kwarg, value in kwargs:
+ a.append('%s=%r, ' % (kwarg, value))
+
+ return ''.join(a).strip(', ')
+
+ def _(*args, **kwargs):
+ funclog("%s(%s)" % (func.func_name,
+ ', '.join((printArgs(args),
+ printKwargs(kwargs))).strip(', ')))
+
+ retval = func(*args, **kwargs)
+
+ funclog("%s - > %s" % (func.func_name, retval))
+
+ return retval
+
+ return _
+
+
+ at logFuncCall
+def readConfig(configFile):
+ config = readPlist(configFile + '.default')
+
if os.path.exists(configFile):
- root = readPlist(configFile)['DocumentRoot']
+ config.update(readPlist(configFile))
+
+ return config
- if not root and os.path.exists(configFile + '.default'):
- root = readPlist(configFile + '.default')['DocumentRoot']
- if not root:
- root = documentRoot
+ at logFuncCall
+def mkroot(path):
+ root = '/'.join(path.rstrip('/').split('/')[:-1])
+ os.makedirs(root)
- if not root:
- print "Could not find document root"
- sys.exit(1)
+ at logFuncCall
+def serveradmin(action, service):
+ cmd = ' '.join((
+ SERVERADMIN,
+ action,
+ service))
+
+ status, output = commands.getstatusoutput(cmd)
+
+ for line in output.split('\n'):
+ debug("C: %s" % (line,))
+
+ return status
+
+
+ at logFuncCall
+def isRunning(service):
+ cmd = ' '.join((
+ SERVERADMIN,
+ 'status',
+ service))
+
+ debug(cmd)
+
+ output = commands.getoutput(cmd)
+
+ for line in output.split('\n'):
+ debug("C: %s" % (line,))
+
+ status = output.split('=')[-1].strip(' "\n')
+
+ if status == "RUNNING":
+ return True
+ else:
+ return False
+
+
+ at logFuncCall
+def copy(src, dst):
+ shutil.copytree(src, dst)
+
+
+ at logFuncCall
+def move(src, dst):
+ os.rename(src, dst)
+
+
+ at logFuncCall
+def remove(dst):
+ shutil.rmtree(dst)
+
+
+ at logFuncCall
+def purge(root, patterns):
removed = []
for root, dirs, files in os.walk(root):
- dirs.extend(files)
- for file in dirs:
- for pat in removePatterns:
+ debug("purging in %s" % (root,))
+
+ for file in files:
+ for pat in patterns:
if fnmatch.fnmatch(file, pat):
full = os.path.join(root, file)
+ debug("removing %s because of %s" % (full, pat))
os.remove(full)
removed.append(full)
-
- return removed
+ for dir in dirs:
+ for pat in patterns:
+ if fnmatch.fnmatch(dir, pat):
+ full = os.path.join(root, dir)
+ debug("removing %s because of %s" % (full, pat))
-def cmd_restore(options):
- cleanDocRoot()
+ os.remove(full)
-
-if __name__ == '__main__':
- options = Options({'cmd': None,
- 'target': None,
- 'path': None,
- 'log': None,
- 'opt': 'all'})
-
- options.parseOpts(sys.argv[1:])
-
- cmd = globals().get('cmd_%s' % (options['cmd'],), None)
-
- if not cmd:
- print "Unknown Command: %s" % (options['cmd'],)
- sys.exit(1)
-
- cmd(options)
+ removed.append(full)
+
+ return removed
Modified: CalendarServer/trunk/contrib/SBS/conf/85-calendarServer.plist
===================================================================
--- CalendarServer/trunk/contrib/SBS/conf/85-calendarServer.plist 2009-03-02 20:28:39 UTC (rev 3782)
+++ CalendarServer/trunk/contrib/SBS/conf/85-calendarServer.plist 2009-03-02 20:36:16 UTC (rev 3783)
@@ -6,11 +6,11 @@
<string>calendarServer</string>
<key>RestoreBinaryPath</key>
- <string>/usr/libexec/sbs_backup/calendarServer_restore</string>
+ <string>/usr/libexec/server_backup/calendarServer_restore</string>
<key>RestoreLog</key>
- <string>/private/var/log/sbs_backup/calendarServer_restore.log</string>
+ <string>/private/var/log/server_backup/calendarServer_restore.log</string>
<key>Version</key>
- <string>10.5</string>
+ <string>10.6</string>
</dict>
</plist>
Modified: CalendarServer/trunk/support/Makefile.Apple
===================================================================
--- CalendarServer/trunk/support/Makefile.Apple 2009-03-02 20:28:39 UTC (rev 3782)
+++ CalendarServer/trunk/support/Makefile.Apple 2009-03-02 20:36:16 UTC (rev 3783)
@@ -107,10 +107,10 @@
$(_v) $(INSTALL_DIRECTORY) -m 0755 $(DSTROOT)$(VARDIR)/log/caldavd
$(_v) $(INSTALL_DIRECTORY) $(DSTROOT)$(NSLIBRARYDIR)/LaunchDaemons
$(_v) $(INSTALL_FILE) $(Sources)/contrib/launchd/calendarserver.plist $(DSTROOT)$(NSLIBRARYDIR)/LaunchDaemons/org.calendarserver.calendarserver.plist
- $(_v) $(INSTALL_DIRECTORY) $(DSTROOT)$(ETCDIR)/sbs_backup/
- $(_v) $(INSTALL_DIRECTORY) $(DSTROOT)$(LIBEXECDIR)/sbs_backup/
- $(_v) $(INSTALL_FILE) $(Sources)/contrib/SBS/conf/85-calendarServer.plist $(DSTROOT)$(ETCDIR)/sbs_backup/
- $(_v) $(INSTALL_FILE) $(Sources)/contrib/SBS/bin/calendarServer_restore $(DSTROOT)$(LIBEXECDIR)/sbs_backup/
+ $(_v) $(INSTALL_DIRECTORY) $(DSTROOT)$(ETCDIR)/server_backup/
+ $(_v) $(INSTALL_DIRECTORY) $(DSTROOT)$(LIBEXECDIR)/server_backup/
+ $(_v) $(INSTALL_FILE) $(Sources)/contrib/SBS/conf/85-calendarServer.plist $(DSTROOT)$(ETCDIR)/server_backup/
+ $(_v) $(INSTALL_FILE) $(Sources)/contrib/SBS/bin/calendarServer_restore $(DSTROOT)$(LIBEXECDIR)/server_backup/
install:: prep
$(_v) $(INSTALL_DIRECTORY) $(DSTROOT)/AppleInternal/ServerTools
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090302/c5e082c9/attachment-0001.html>
More information about the calendarserver-changes
mailing list