pass all existing tests (and formatting)
This commit is contained in:
parent
8389851f2f
commit
89602d1614
12 changed files with 411 additions and 61 deletions
|
@ -304,6 +304,13 @@ def run_restore(
|
||||||
restore_names = find_databases_to_restore(restore_arguments.databases, archive_database_names)
|
restore_names = find_databases_to_restore(restore_arguments.databases, archive_database_names)
|
||||||
found_names = set()
|
found_names = set()
|
||||||
remaining_restore_names = {}
|
remaining_restore_names = {}
|
||||||
|
connection_params = {
|
||||||
|
'hostname': restore_arguments.hostname,
|
||||||
|
'port': restore_arguments.port,
|
||||||
|
'username': restore_arguments.username,
|
||||||
|
'password': restore_arguments.password,
|
||||||
|
'restore_path': restore_arguments.restore_path,
|
||||||
|
}
|
||||||
|
|
||||||
for hook_name, database_names in restore_names.items():
|
for hook_name, database_names in restore_names.items():
|
||||||
for database_name in database_names:
|
for database_name in database_names:
|
||||||
|
@ -311,14 +318,6 @@ def run_restore(
|
||||||
hooks, archive_database_names, hook_name, database_name
|
hooks, archive_database_names, hook_name, database_name
|
||||||
)
|
)
|
||||||
|
|
||||||
connection_params = {
|
|
||||||
'hostname': restore_arguments.hostname,
|
|
||||||
'port': restore_arguments.port,
|
|
||||||
'username': restore_arguments.username,
|
|
||||||
'password': restore_arguments.password,
|
|
||||||
'restore_path': restore_arguments.restore_path,
|
|
||||||
}
|
|
||||||
|
|
||||||
if not found_database:
|
if not found_database:
|
||||||
remaining_restore_names.setdefault(found_hook_name or hook_name, []).append(
|
remaining_restore_names.setdefault(found_hook_name or hook_name, []).append(
|
||||||
database_name
|
database_name
|
||||||
|
@ -368,6 +367,7 @@ def run_restore(
|
||||||
archive_name,
|
archive_name,
|
||||||
found_hook_name or hook_name,
|
found_hook_name or hook_name,
|
||||||
dict(database, **{'schemas': restore_arguments.schemas}),
|
dict(database, **{'schemas': restore_arguments.schemas}),
|
||||||
|
connection_params,
|
||||||
)
|
)
|
||||||
|
|
||||||
borgmatic.hooks.dispatch.call_hooks_even_if_unconfigured(
|
borgmatic.hooks.dispatch.call_hooks_even_if_unconfigured(
|
||||||
|
|
|
@ -725,7 +725,8 @@ def make_parsers():
|
||||||
help='Database hostname to restore to. Defaults to the "restore_hostname" option in borgmatic\'s configuration',
|
help='Database hostname to restore to. Defaults to the "restore_hostname" option in borgmatic\'s configuration',
|
||||||
)
|
)
|
||||||
restore_group.add_argument(
|
restore_group.add_argument(
|
||||||
'--port', help='Port to restore to. Defaults to the "restore_port" option in borgmatic\'s configuration'
|
'--port',
|
||||||
|
help='Port to restore to. Defaults to the "restore_port" option in borgmatic\'s configuration',
|
||||||
)
|
)
|
||||||
restore_group.add_argument(
|
restore_group.add_argument(
|
||||||
'--username',
|
'--username',
|
||||||
|
|
|
@ -816,7 +816,8 @@ properties:
|
||||||
OWNER or SET SESSION AUTHORIZATION statements
|
OWNER or SET SESSION AUTHORIZATION statements
|
||||||
to set ownership of created schema elements.
|
to set ownership of created schema elements.
|
||||||
These statements will fail unless the initial
|
These statements will fail unless the initial
|
||||||
connection to the database is made by a superuser.
|
connection to the database is made by a
|
||||||
|
superuser.
|
||||||
format:
|
format:
|
||||||
type: string
|
type: string
|
||||||
enum: ['plain', 'custom', 'directory', 'tar']
|
enum: ['plain', 'custom', 'directory', 'tar']
|
||||||
|
|
|
@ -102,7 +102,9 @@ def make_database_dump_pattern(
|
||||||
return dump.make_database_dump_filename(make_dump_path(location_config), name, hostname='*')
|
return dump.make_database_dump_filename(make_dump_path(location_config), name, hostname='*')
|
||||||
|
|
||||||
|
|
||||||
def restore_database_dump(database_config, log_prefix, location_config, dry_run, extract_process, connection_params):
|
def restore_database_dump(
|
||||||
|
database_config, log_prefix, location_config, dry_run, extract_process, connection_params
|
||||||
|
):
|
||||||
'''
|
'''
|
||||||
Restore the given MongoDB database from an extract stream. The database is supplied as a
|
Restore the given MongoDB database from an extract stream. The database is supplied as a
|
||||||
one-element sequence containing a dict describing the database, as per the configuration schema.
|
one-element sequence containing a dict describing the database, as per the configuration schema.
|
||||||
|
@ -122,7 +124,9 @@ def restore_database_dump(database_config, log_prefix, location_config, dry_run,
|
||||||
dump_filename = dump.make_database_dump_filename(
|
dump_filename = dump.make_database_dump_filename(
|
||||||
make_dump_path(location_config), database['name'], database.get('hostname')
|
make_dump_path(location_config), database['name'], database.get('hostname')
|
||||||
)
|
)
|
||||||
restore_command = build_restore_command(extract_process, database, dump_filename, connection_params)
|
restore_command = build_restore_command(
|
||||||
|
extract_process, database, dump_filename, connection_params
|
||||||
|
)
|
||||||
|
|
||||||
logger.debug(f"{log_prefix}: Restoring MongoDB database {database['name']}{dry_run_label}")
|
logger.debug(f"{log_prefix}: Restoring MongoDB database {database['name']}{dry_run_label}")
|
||||||
if dry_run:
|
if dry_run:
|
||||||
|
@ -142,10 +146,16 @@ def build_restore_command(extract_process, database, dump_filename, connection_p
|
||||||
'''
|
'''
|
||||||
Return the mongorestore command from a single database configuration.
|
Return the mongorestore command from a single database configuration.
|
||||||
'''
|
'''
|
||||||
hostname = connection_params['hostname'] or database.get('restore_hostname', database.get('hostname'))
|
hostname = connection_params['hostname'] or database.get(
|
||||||
|
'restore_hostname', database.get('hostname')
|
||||||
|
)
|
||||||
port = str(connection_params['port'] or database.get('restore_port', database.get('port', '')))
|
port = str(connection_params['port'] or database.get('restore_port', database.get('port', '')))
|
||||||
username = connection_params['username'] or database.get('restore_username', database.get('username'))
|
username = connection_params['username'] or database.get(
|
||||||
password = connection_params['password'] or database.get('restore_password', database.get('password'))
|
'restore_username', database.get('username')
|
||||||
|
)
|
||||||
|
password = connection_params['password'] or database.get(
|
||||||
|
'restore_password', database.get('password')
|
||||||
|
)
|
||||||
|
|
||||||
command = ['mongorestore']
|
command = ['mongorestore']
|
||||||
if extract_process:
|
if extract_process:
|
||||||
|
|
|
@ -185,7 +185,9 @@ def make_database_dump_pattern(
|
||||||
return dump.make_database_dump_filename(make_dump_path(location_config), name, hostname='*')
|
return dump.make_database_dump_filename(make_dump_path(location_config), name, hostname='*')
|
||||||
|
|
||||||
|
|
||||||
def restore_database_dump(database_config, log_prefix, location_config, dry_run, extract_process, connection_params):
|
def restore_database_dump(
|
||||||
|
database_config, log_prefix, location_config, dry_run, extract_process, connection_params
|
||||||
|
):
|
||||||
'''
|
'''
|
||||||
Restore the given MySQL/MariaDB database from an extract stream. The database is supplied as a
|
Restore the given MySQL/MariaDB database from an extract stream. The database is supplied as a
|
||||||
one-element sequence containing a dict describing the database, as per the configuration schema.
|
one-element sequence containing a dict describing the database, as per the configuration schema.
|
||||||
|
@ -200,10 +202,16 @@ def restore_database_dump(database_config, log_prefix, location_config, dry_run,
|
||||||
|
|
||||||
database = database_config[0]
|
database = database_config[0]
|
||||||
|
|
||||||
hostname = connection_params['hostname'] or database.get('restore_hostname', database.get('hostname'))
|
hostname = connection_params['hostname'] or database.get(
|
||||||
|
'restore_hostname', database.get('hostname')
|
||||||
|
)
|
||||||
port = str(connection_params['port'] or database.get('restore_port', database.get('port', '')))
|
port = str(connection_params['port'] or database.get('restore_port', database.get('port', '')))
|
||||||
username = connection_params['username'] or database.get('restore_username', database.get('username'))
|
username = connection_params['username'] or database.get(
|
||||||
password = connection_params['password'] or database.get('restore_password', database.get('password'))
|
'restore_username', database.get('username')
|
||||||
|
)
|
||||||
|
password = connection_params['password'] or database.get(
|
||||||
|
'restore_password', database.get('password')
|
||||||
|
)
|
||||||
|
|
||||||
restore_command = (
|
restore_command = (
|
||||||
('mysql', '--batch')
|
('mysql', '--batch')
|
||||||
|
|
|
@ -22,6 +22,7 @@ def make_dump_path(location_config): # pragma: no cover
|
||||||
location_config.get('borgmatic_source_directory'), 'postgresql_databases'
|
location_config.get('borgmatic_source_directory'), 'postgresql_databases'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def make_extra_environment(database, restore_connection_params=None):
|
def make_extra_environment(database, restore_connection_params=None):
|
||||||
'''
|
'''
|
||||||
Make the extra_environment dict from the given database configuration.
|
Make the extra_environment dict from the given database configuration.
|
||||||
|
@ -31,7 +32,9 @@ def make_extra_environment(database, restore_connection_params=None):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if restore_connection_params:
|
if restore_connection_params:
|
||||||
extra['PGPASSWORD'] = restore_connection_params.get('password') or database.get('restore_password', database['password'])
|
extra['PGPASSWORD'] = restore_connection_params.get('password') or database.get(
|
||||||
|
'restore_password', database['password']
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
extra['PGPASSWORD'] = database['password']
|
extra['PGPASSWORD'] = database['password']
|
||||||
except (AttributeError, KeyError):
|
except (AttributeError, KeyError):
|
||||||
|
@ -200,7 +203,9 @@ def make_database_dump_pattern(
|
||||||
return dump.make_database_dump_filename(make_dump_path(location_config), name, hostname='*')
|
return dump.make_database_dump_filename(make_dump_path(location_config), name, hostname='*')
|
||||||
|
|
||||||
|
|
||||||
def restore_database_dump(database_config, log_prefix, location_config, dry_run, extract_process, connection_params):
|
def restore_database_dump(
|
||||||
|
database_config, log_prefix, location_config, dry_run, extract_process, connection_params
|
||||||
|
):
|
||||||
'''
|
'''
|
||||||
Restore the given PostgreSQL database from an extract stream. The database is supplied as a
|
Restore the given PostgreSQL database from an extract stream. The database is supplied as a
|
||||||
one-element sequence containing a dict describing the database, as per the configuration schema.
|
one-element sequence containing a dict describing the database, as per the configuration schema.
|
||||||
|
@ -221,9 +226,13 @@ def restore_database_dump(database_config, log_prefix, location_config, dry_run,
|
||||||
|
|
||||||
database = database_config[0]
|
database = database_config[0]
|
||||||
|
|
||||||
hostname = connection_params['hostname'] or database.get('restore_hostname', database.get('hostname'))
|
hostname = connection_params['hostname'] or database.get(
|
||||||
|
'restore_hostname', database.get('hostname')
|
||||||
|
)
|
||||||
port = str(connection_params['port'] or database.get('restore_port', database.get('port', '')))
|
port = str(connection_params['port'] or database.get('restore_port', database.get('port', '')))
|
||||||
username = connection_params['username'] or database.get('restore_username', database.get('username'))
|
username = connection_params['username'] or database.get(
|
||||||
|
'restore_username', database.get('username')
|
||||||
|
)
|
||||||
|
|
||||||
all_databases = bool(database['name'] == 'all')
|
all_databases = bool(database['name'] == 'all')
|
||||||
dump_filename = dump.make_database_dump_filename(
|
dump_filename = dump.make_database_dump_filename(
|
||||||
|
@ -260,7 +269,9 @@ def restore_database_dump(database_config, log_prefix, location_config, dry_run,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
extra_environment = make_extra_environment(database, restore_connection_params=connection_params)
|
extra_environment = make_extra_environment(
|
||||||
|
database, restore_connection_params=connection_params
|
||||||
|
)
|
||||||
|
|
||||||
logger.debug(f"{log_prefix}: Restoring PostgreSQL database {database['name']}{dry_run_label}")
|
logger.debug(f"{log_prefix}: Restoring PostgreSQL database {database['name']}{dry_run_label}")
|
||||||
if dry_run:
|
if dry_run:
|
||||||
|
|
|
@ -85,7 +85,9 @@ def make_database_dump_pattern(
|
||||||
return dump.make_database_dump_filename(make_dump_path(location_config), name)
|
return dump.make_database_dump_filename(make_dump_path(location_config), name)
|
||||||
|
|
||||||
|
|
||||||
def restore_database_dump(database_config, log_prefix, location_config, dry_run, extract_process, connection_params):
|
def restore_database_dump(
|
||||||
|
database_config, log_prefix, location_config, dry_run, extract_process, connection_params
|
||||||
|
):
|
||||||
'''
|
'''
|
||||||
Restore the given SQLite3 database from an extract stream. The database is supplied as a
|
Restore the given SQLite3 database from an extract stream. The database is supplied as a
|
||||||
one-element sequence containing a dict describing the database, as per the configuration schema.
|
one-element sequence containing a dict describing the database, as per the configuration schema.
|
||||||
|
@ -98,7 +100,9 @@ def restore_database_dump(database_config, log_prefix, location_config, dry_run,
|
||||||
if len(database_config) != 1:
|
if len(database_config) != 1:
|
||||||
raise ValueError('The database configuration value is invalid')
|
raise ValueError('The database configuration value is invalid')
|
||||||
|
|
||||||
database_path = connection_params['restore_path'] or database_config[0].get('restore_path', database_config[0].get('path'))
|
database_path = connection_params['restore_path'] or database_config[0].get(
|
||||||
|
'restore_path', database_config[0].get('path')
|
||||||
|
)
|
||||||
|
|
||||||
logger.debug(f'{log_prefix}: Restoring SQLite database at {database_path}{dry_run_label}')
|
logger.debug(f'{log_prefix}: Restoring SQLite database at {database_path}{dry_run_label}')
|
||||||
if dry_run:
|
if dry_run:
|
||||||
|
|
|
@ -241,6 +241,7 @@ def test_run_restore_restores_each_database():
|
||||||
archive_name=object,
|
archive_name=object,
|
||||||
hook_name='postgresql_databases',
|
hook_name='postgresql_databases',
|
||||||
database={'name': 'foo', 'schemas': None},
|
database={'name': 'foo', 'schemas': None},
|
||||||
|
connection_params=object,
|
||||||
).once()
|
).once()
|
||||||
flexmock(module).should_receive('restore_single_database').with_args(
|
flexmock(module).should_receive('restore_single_database').with_args(
|
||||||
repository=object,
|
repository=object,
|
||||||
|
@ -254,6 +255,7 @@ def test_run_restore_restores_each_database():
|
||||||
archive_name=object,
|
archive_name=object,
|
||||||
hook_name='postgresql_databases',
|
hook_name='postgresql_databases',
|
||||||
database={'name': 'bar', 'schemas': None},
|
database={'name': 'bar', 'schemas': None},
|
||||||
|
connection_params=object,
|
||||||
).once()
|
).once()
|
||||||
flexmock(module).should_receive('ensure_databases_found')
|
flexmock(module).should_receive('ensure_databases_found')
|
||||||
|
|
||||||
|
@ -264,7 +266,15 @@ def test_run_restore_restores_each_database():
|
||||||
hooks=flexmock(),
|
hooks=flexmock(),
|
||||||
local_borg_version=flexmock(),
|
local_borg_version=flexmock(),
|
||||||
restore_arguments=flexmock(
|
restore_arguments=flexmock(
|
||||||
repository='repo', archive='archive', databases=flexmock(), schemas=None
|
repository='repo',
|
||||||
|
archive='archive',
|
||||||
|
databases=flexmock(),
|
||||||
|
schemas=None,
|
||||||
|
hostname=None,
|
||||||
|
port=None,
|
||||||
|
username=None,
|
||||||
|
password=None,
|
||||||
|
restore_path=None,
|
||||||
),
|
),
|
||||||
global_arguments=flexmock(dry_run=False),
|
global_arguments=flexmock(dry_run=False),
|
||||||
local_path=flexmock(),
|
local_path=flexmock(),
|
||||||
|
@ -337,6 +347,7 @@ def test_run_restore_restores_database_configured_with_all_name():
|
||||||
archive_name=object,
|
archive_name=object,
|
||||||
hook_name='postgresql_databases',
|
hook_name='postgresql_databases',
|
||||||
database={'name': 'foo', 'schemas': None},
|
database={'name': 'foo', 'schemas': None},
|
||||||
|
connection_params=object,
|
||||||
).once()
|
).once()
|
||||||
flexmock(module).should_receive('restore_single_database').with_args(
|
flexmock(module).should_receive('restore_single_database').with_args(
|
||||||
repository=object,
|
repository=object,
|
||||||
|
@ -350,6 +361,7 @@ def test_run_restore_restores_database_configured_with_all_name():
|
||||||
archive_name=object,
|
archive_name=object,
|
||||||
hook_name='postgresql_databases',
|
hook_name='postgresql_databases',
|
||||||
database={'name': 'bar', 'schemas': None},
|
database={'name': 'bar', 'schemas': None},
|
||||||
|
connection_params=object,
|
||||||
).once()
|
).once()
|
||||||
flexmock(module).should_receive('ensure_databases_found')
|
flexmock(module).should_receive('ensure_databases_found')
|
||||||
|
|
||||||
|
@ -360,7 +372,15 @@ def test_run_restore_restores_database_configured_with_all_name():
|
||||||
hooks=flexmock(),
|
hooks=flexmock(),
|
||||||
local_borg_version=flexmock(),
|
local_borg_version=flexmock(),
|
||||||
restore_arguments=flexmock(
|
restore_arguments=flexmock(
|
||||||
repository='repo', archive='archive', databases=flexmock(), schemas=None
|
repository='repo',
|
||||||
|
archive='archive',
|
||||||
|
databases=flexmock(),
|
||||||
|
schemas=None,
|
||||||
|
hostname=None,
|
||||||
|
port=None,
|
||||||
|
username=None,
|
||||||
|
password=None,
|
||||||
|
restore_path=None,
|
||||||
),
|
),
|
||||||
global_arguments=flexmock(dry_run=False),
|
global_arguments=flexmock(dry_run=False),
|
||||||
local_path=flexmock(),
|
local_path=flexmock(),
|
||||||
|
@ -411,6 +431,7 @@ def test_run_restore_skips_missing_database():
|
||||||
archive_name=object,
|
archive_name=object,
|
||||||
hook_name='postgresql_databases',
|
hook_name='postgresql_databases',
|
||||||
database={'name': 'foo', 'schemas': None},
|
database={'name': 'foo', 'schemas': None},
|
||||||
|
connection_params=object,
|
||||||
).once()
|
).once()
|
||||||
flexmock(module).should_receive('restore_single_database').with_args(
|
flexmock(module).should_receive('restore_single_database').with_args(
|
||||||
repository=object,
|
repository=object,
|
||||||
|
@ -424,6 +445,7 @@ def test_run_restore_skips_missing_database():
|
||||||
archive_name=object,
|
archive_name=object,
|
||||||
hook_name='postgresql_databases',
|
hook_name='postgresql_databases',
|
||||||
database={'name': 'bar', 'schemas': None},
|
database={'name': 'bar', 'schemas': None},
|
||||||
|
connection_params=object,
|
||||||
).never()
|
).never()
|
||||||
flexmock(module).should_receive('ensure_databases_found')
|
flexmock(module).should_receive('ensure_databases_found')
|
||||||
|
|
||||||
|
@ -434,7 +456,15 @@ def test_run_restore_skips_missing_database():
|
||||||
hooks=flexmock(),
|
hooks=flexmock(),
|
||||||
local_borg_version=flexmock(),
|
local_borg_version=flexmock(),
|
||||||
restore_arguments=flexmock(
|
restore_arguments=flexmock(
|
||||||
repository='repo', archive='archive', databases=flexmock(), schemas=None
|
repository='repo',
|
||||||
|
archive='archive',
|
||||||
|
databases=flexmock(),
|
||||||
|
schemas=None,
|
||||||
|
hostname=None,
|
||||||
|
port=None,
|
||||||
|
username=None,
|
||||||
|
password=None,
|
||||||
|
restore_path=None,
|
||||||
),
|
),
|
||||||
global_arguments=flexmock(dry_run=False),
|
global_arguments=flexmock(dry_run=False),
|
||||||
local_path=flexmock(),
|
local_path=flexmock(),
|
||||||
|
@ -479,6 +509,7 @@ def test_run_restore_restores_databases_from_different_hooks():
|
||||||
archive_name=object,
|
archive_name=object,
|
||||||
hook_name='postgresql_databases',
|
hook_name='postgresql_databases',
|
||||||
database={'name': 'foo', 'schemas': None},
|
database={'name': 'foo', 'schemas': None},
|
||||||
|
connection_params=object,
|
||||||
).once()
|
).once()
|
||||||
flexmock(module).should_receive('restore_single_database').with_args(
|
flexmock(module).should_receive('restore_single_database').with_args(
|
||||||
repository=object,
|
repository=object,
|
||||||
|
@ -492,6 +523,7 @@ def test_run_restore_restores_databases_from_different_hooks():
|
||||||
archive_name=object,
|
archive_name=object,
|
||||||
hook_name='mysql_databases',
|
hook_name='mysql_databases',
|
||||||
database={'name': 'bar', 'schemas': None},
|
database={'name': 'bar', 'schemas': None},
|
||||||
|
connection_params=object,
|
||||||
).once()
|
).once()
|
||||||
flexmock(module).should_receive('ensure_databases_found')
|
flexmock(module).should_receive('ensure_databases_found')
|
||||||
|
|
||||||
|
@ -502,7 +534,15 @@ def test_run_restore_restores_databases_from_different_hooks():
|
||||||
hooks=flexmock(),
|
hooks=flexmock(),
|
||||||
local_borg_version=flexmock(),
|
local_borg_version=flexmock(),
|
||||||
restore_arguments=flexmock(
|
restore_arguments=flexmock(
|
||||||
repository='repo', archive='archive', databases=flexmock(), schemas=None
|
repository='repo',
|
||||||
|
archive='archive',
|
||||||
|
databases=flexmock(),
|
||||||
|
schemas=None,
|
||||||
|
hostname=None,
|
||||||
|
port=None,
|
||||||
|
username=None,
|
||||||
|
password=None,
|
||||||
|
restore_path=None,
|
||||||
),
|
),
|
||||||
global_arguments=flexmock(dry_run=False),
|
global_arguments=flexmock(dry_run=False),
|
||||||
local_path=flexmock(),
|
local_path=flexmock(),
|
||||||
|
|
|
@ -171,7 +171,17 @@ def test_restore_database_dump_runs_mongorestore():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -185,7 +195,17 @@ def test_restore_database_dump_errors_on_multiple_database_config():
|
||||||
|
|
||||||
with pytest.raises(ValueError):
|
with pytest.raises(ValueError):
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=flexmock()
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=flexmock(),
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -215,7 +235,17 @@ def test_restore_database_dump_runs_mongorestore_with_hostname_and_port():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -253,7 +283,17 @@ def test_restore_database_dump_runs_mongorestore_with_username_and_password():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -271,7 +311,17 @@ def test_restore_database_dump_runs_mongorestore_with_options():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -299,7 +349,17 @@ def test_restore_databases_dump_runs_mongorestore_with_schemas():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -317,7 +377,17 @@ def test_restore_database_dump_runs_psql_for_all_database_dump():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -329,7 +399,17 @@ def test_restore_database_dump_with_dry_run_skips_restore():
|
||||||
flexmock(module).should_receive('execute_command_with_processes').never()
|
flexmock(module).should_receive('execute_command_with_processes').never()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=True, extract_process=flexmock()
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=True,
|
||||||
|
extract_process=flexmock(),
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -346,5 +426,15 @@ def test_restore_database_dump_without_extract_process_restores_from_disk():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=None
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=None,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
|
@ -392,7 +392,17 @@ def test_restore_database_dump_runs_mysql_to_restore():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -404,7 +414,17 @@ def test_restore_database_dump_errors_on_multiple_database_config():
|
||||||
|
|
||||||
with pytest.raises(ValueError):
|
with pytest.raises(ValueError):
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=flexmock()
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=flexmock(),
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -421,7 +441,17 @@ def test_restore_database_dump_runs_mysql_with_options():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -447,7 +477,17 @@ def test_restore_database_dump_runs_mysql_with_hostname_and_port():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -464,7 +504,17 @@ def test_restore_database_dump_runs_mysql_with_username_and_password():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -474,5 +524,15 @@ def test_restore_database_dump_with_dry_run_skips_restore():
|
||||||
flexmock(module).should_receive('execute_command_with_processes').never()
|
flexmock(module).should_receive('execute_command_with_processes').never()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=True, extract_process=flexmock()
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=True,
|
||||||
|
extract_process=flexmock(),
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
|
@ -479,7 +479,17 @@ def test_restore_database_dump_runs_pg_restore():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -494,7 +504,17 @@ def test_restore_database_dump_errors_on_multiple_database_config():
|
||||||
|
|
||||||
with pytest.raises(ValueError):
|
with pytest.raises(ValueError):
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=flexmock()
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=flexmock(),
|
||||||
|
connection_params={
|
||||||
|
'restore_hostname': None,
|
||||||
|
'restore_port': None,
|
||||||
|
'restore_username': None,
|
||||||
|
'restore_password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -545,7 +565,17 @@ def test_restore_database_dump_runs_pg_restore_with_hostname_and_port():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -594,7 +624,17 @@ def test_restore_database_dump_runs_pg_restore_with_username_and_password():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -644,7 +684,17 @@ def test_restore_database_dump_runs_pg_restore_with_options():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -672,7 +722,17 @@ def test_restore_database_dump_runs_psql_for_all_database_dump():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -705,7 +765,17 @@ def test_restore_database_dump_runs_psql_for_plain_database_dump():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -759,7 +829,17 @@ def test_restore_database_dump_runs_non_default_pg_restore_and_psql():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -772,7 +852,17 @@ def test_restore_database_dump_with_dry_run_skips_restore():
|
||||||
flexmock(module).should_receive('execute_command_with_processes').never()
|
flexmock(module).should_receive('execute_command_with_processes').never()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=True, extract_process=flexmock()
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=True,
|
||||||
|
extract_process=flexmock(),
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -813,7 +903,17 @@ def test_restore_database_dump_without_extract_process_restores_from_disk():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=None
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=None,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -858,5 +958,15 @@ def test_restore_database_dump_with_schemas_restores_schemas():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=None
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=None,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
|
@ -99,7 +99,12 @@ def test_restore_database_dump_restores_database():
|
||||||
flexmock(module.os).should_receive('remove').once()
|
flexmock(module.os).should_receive('remove').once()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={'restore_path': None},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -111,7 +116,12 @@ def test_restore_database_dump_does_not_restore_database_if_dry_run():
|
||||||
flexmock(module.os).should_receive('remove').never()
|
flexmock(module.os).should_receive('remove').never()
|
||||||
|
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=True, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=True,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={'restore_path': None},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -121,5 +131,10 @@ def test_restore_database_dump_raises_error_if_database_config_is_invalid():
|
||||||
|
|
||||||
with pytest.raises(ValueError):
|
with pytest.raises(ValueError):
|
||||||
module.restore_database_dump(
|
module.restore_database_dump(
|
||||||
database_config, 'test.yaml', {}, dry_run=False, extract_process=extract_process
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={'restore_path': None},
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue