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, |