[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