server/sqlutils.py
changeset 2512 106b2a05dc88
parent 2510 2aeac9d85a79
child 2596 d02eed70937f
child 2615 1ea41b7c0836
equal deleted inserted replaced
2511:a4b50efb97f6 2512:106b2a05dc88
   121 
   121 
   122 
   122 
   123 def sql_source_backup(source, sqladapter, confirm, backupfile,
   123 def sql_source_backup(source, sqladapter, confirm, backupfile,
   124                       askconfirm=False):
   124                       askconfirm=False):
   125     if exists(backupfile):
   125     if exists(backupfile):
   126         if not confirm('backup file %s exists, overwrite it?' % backupfile):
   126         if not confirm('Backup file %s exists, overwrite it?' % backupfile):
   127             return
   127             return
   128     elif askconfirm and not confirm('backup %s database?'
   128     elif askconfirm and not confirm('Backup %s database?'
   129                                     % source.repo.config.appid):
   129                                     % source.repo.config.appid):
       
   130         print '-> no backup done.'
   130         return
   131         return
   131     # should close opened connection before backuping
   132     # should close opened connection before backuping
   132     source.close_pool_connections()
   133     source.close_pool_connections()
   133     try:
   134     try:
   134         sqladapter.backup_to_file(backupfile, confirm)
   135         sqladapter.backup_to_file(backupfile, confirm)
   138 def sql_source_restore(source, sqladapter, confirm, backupfile, drop=True,
   139 def sql_source_restore(source, sqladapter, confirm, backupfile, drop=True,
   139                        askconfirm=False):
   140                        askconfirm=False):
   140     if not exists(backupfile):
   141     if not exists(backupfile):
   141         raise Exception("backup file %s doesn't exist" % backupfile)
   142         raise Exception("backup file %s doesn't exist" % backupfile)
   142     app = source.repo.config.appid
   143     app = source.repo.config.appid
   143     if askconfirm and not confirm('restore %s %s database from %s ?'
   144     if askconfirm and not confirm('Restore %s %s database from %s ?'
   144                                   % (app, source.uri, backupfile)):
   145                                   % (app, source.uri, backupfile)):
   145         return
   146         return
   146     # should close opened connection before restoring
   147     # should close opened connection before restoring
   147     source.close_pool_connections()
   148     source.close_pool_connections()
   148     try:
   149     try:
   199                                            self.dbuser, backupfile,
   200                                            self.dbuser, backupfile,
   200                                            keepownership=False)
   201                                            keepownership=False)
   201         while True:
   202         while True:
   202             print cmd
   203             print cmd
   203             if os.system(cmd):
   204             if os.system(cmd):
   204                 print 'error while backuping the base'
   205                 print '-> error while backuping the base'
   205                 answer = confirm('continue anyway?',
   206                 answer = confirm('Continue anyway?',
   206                                  shell=False, abort=False, retry=True)
   207                                  shell=False, abort=False, retry=True)
   207                 if not answer:
   208                 if not answer:
   208                     raise SystemExit(1)
   209                     raise SystemExit(1)
   209                 if answer == 1: # 1: continue, 2: retry
   210                 if answer == 1: # 1: continue, 2: retry
   210                     break
   211                     break
   211             else:
   212             else:
   212                 print 'database backup:', backupfile
   213                 print '-> backup file',  backupfile
   213                 restrict_perms_to_user(backupfile, self.info)
   214                 restrict_perms_to_user(backupfile, self.info)
   214                 break
   215                 break
   215 
   216 
   216     def restore_from_file(self, backupfile, confirm, drop=True):
   217     def restore_from_file(self, backupfile, confirm, drop=True):
   217         for cmd in self.dbhelper.restore_commands(self.dbname, self.dbhost,
   218         for cmd in self.dbhelper.restore_commands(self.dbname, self.dbhost,