def save_db(self): """Saves postgresql database into the file """ logger.debug(u'Backup database') pg_dump_path = os.path.join(self.working_directory, 'pg_dump_all.sql') pg_dump_files = utils.VersionedFile(pg_dump_path) pg_dump_tmp_path = pg_dump_files.next_file_name() utils.wait_for_true( lambda: self.make_pg_dump(pg_dump_tmp_path, pg_dump_path), timeout=self.config.db_backup_timeout, interval=self.config.db_backup_interval) valid_dumps = filter(utils.verify_postgres_dump, pg_dump_files.sorted_files()) if valid_dumps: utils.hardlink(valid_dumps[0], pg_dump_path, overwrite=True) map(utils.remove_if_exists, valid_dumps[self.config.keep_db_backups_count:]) else: raise errors.DatabaseDumpError( u'Failed to make database dump, there ' 'are no valid database backup ' 'files, {0}'.format(pg_dump_path))
def setUp(self): self.path = '/tmp/path.ext' self.versioned_file = utils.VersionedFile(self.path)