server/migractions.py
branchstable
changeset 2960 1c6eafc68586
parent 2959 daabb9bc5233
child 2962 5e2239672e16
equal deleted inserted replaced
2959:daabb9bc5233 2960:1c6eafc68586
   131             return
   131             return
   132         open(backupfile,'w').close() # kinda lock
   132         open(backupfile,'w').close() # kinda lock
   133         os.chmod(backupfile, 0600)
   133         os.chmod(backupfile, 0600)
   134         # backup
   134         # backup
   135         tmpdir = tempfile.mkdtemp(dir=instbkdir)
   135         tmpdir = tempfile.mkdtemp(dir=instbkdir)
   136         for source in repo.sources:
   136         try:
   137             try:
   137             for source in repo.sources:
   138                 source.backup(osp.join(tmpdir,source.uri))
   138                 try:
   139             except Exception, exc:
   139                     source.backup(osp.join(tmpdir, source.uri))
   140                 print '-> error trying to backup [%s]' % exc
   140                 except Exception, exc:
   141                 if not self.confirm('Continue anyway?', default='n'):
   141                     print '-> error trying to backup [%s]' % exc
   142                     raise SystemExit(1)
   142                     if not self.confirm('Continue anyway?', default='n'):
   143         bkup = tarfile.open(backupfile, 'w|gz')
   143                         raise SystemExit(1)
   144         for filename in os.listdir(tmpdir):
   144                     else:
   145             bkup.add(osp.join(tmpdir,filename), filename)
   145                         break
   146         bkup.close()
   146             else:
   147         shutil.rmtree(tmpdir)
   147                 bkup = tarfile.open(backupfile, 'w|gz')
   148         # call hooks
   148                 for filename in os.listdir(tmpdir):
   149         repo.hm.call_hooks('server_backup', repo=repo, timestamp=timestamp)
   149                     bkup.add(osp.join(tmpdir,filename), filename)
   150         # done
   150                 bkup.close()
   151         print '-> backup file',  backupfile
   151                 # call hooks
       
   152                 repo.hm.call_hooks('server_backup', repo=repo, timestamp=timestamp)
       
   153                 # done
       
   154                 print '-> backup file',  backupfile
       
   155         finally:
       
   156             shutil.rmtree(tmpdir)
   152 
   157 
   153     def restore_database(self, backupfile, drop=True, systemonly=True,
   158     def restore_database(self, backupfile, drop=True, systemonly=True,
   154                          askconfirm=True):
   159                          askconfirm=True):
   155         # check
   160         # check
   156         if not osp.exists(backupfile):
   161         if not osp.exists(backupfile):