[FIX] dbmanager: backup allow pg_dump custom dump to be larger than diskspace
- delete a forgotten print - allow pg_dump custom dumps to be larger than the available disk size, the previous commit allowed dumps to be larger than memory, this one remove this limitation. zip dumps are still limited to by the disk size.
This commit is contained in:
parent
ec9a543014
commit
c1c8ac7d7f
|
@ -733,7 +733,7 @@ class Database(http.Controller):
|
|||
('Content-Type', 'application/octet-stream; charset=binary'),
|
||||
('Content-Disposition', content_disposition(filename)),
|
||||
]
|
||||
dump_stream = openerp.service.db.dump_db_stream(backup_db, backup_format)
|
||||
dump_stream = openerp.service.db.dump_db(backup_db, None, backup_format)
|
||||
response = werkzeug.wrappers.Response(dump_stream, headers=headers, direct_passthrough=True)
|
||||
response.set_cookie('fileToken', token)
|
||||
return response
|
||||
|
|
|
@ -168,7 +168,10 @@ def dump_db_manifest(cr):
|
|||
return manifest
|
||||
|
||||
def dump_db(db_name, stream, backup_format='zip'):
|
||||
"""Dump database `db` into file-like object `stream`"""
|
||||
"""Dump database `db` into file-like object `stream` if stream is None
|
||||
return a file object with the dump """
|
||||
|
||||
_logger.info('DUMP DB: %s format %s', db_name, backup_format)
|
||||
|
||||
cmd = ['pg_dump', '--no-owner']
|
||||
if openerp.tools.config['db_user']:
|
||||
|
@ -191,20 +194,20 @@ def dump_db(db_name, stream, backup_format='zip'):
|
|||
json.dump(manifest, fh, indent=4)
|
||||
cmd.insert(-1, '--file=' + os.path.join(dump_dir, 'dump.sql'))
|
||||
openerp.tools.exec_pg_command(*cmd)
|
||||
openerp.tools.osutil.zip_dir(dump_dir, stream, include_dir=False)
|
||||
if stream:
|
||||
openerp.tools.osutil.zip_dir(dump_dir, stream, include_dir=False)
|
||||
else:
|
||||
t=tempfile.TemporaryFile()
|
||||
openerp.tools.osutil.zip_dir(dump_dir, t, include_dir=False)
|
||||
t.seek(0)
|
||||
return t
|
||||
else:
|
||||
cmd.insert(-1, '--format=c')
|
||||
print cmd
|
||||
stdin, stdout = openerp.tools.exec_pg_command_pipe(*cmd)
|
||||
shutil.copyfileobj(stdout, stream)
|
||||
|
||||
_logger.info('DUMP DB successful: %s', db_name)
|
||||
|
||||
def dump_db_stream(db_name, backup_format='zip'):
|
||||
t=tempfile.TemporaryFile()
|
||||
dump_db(db_name, t, backup_format)
|
||||
t.seek(0)
|
||||
return t
|
||||
if stream:
|
||||
shutil.copyfileobj(stdout, stream)
|
||||
else:
|
||||
return stdout
|
||||
|
||||
def exp_restore(db_name, data, copy=False):
|
||||
data_file = tempfile.NamedTemporaryFile(delete=False)
|
||||
|
|
Loading…
Reference in New Issue