|
@@ -5,6 +5,7 @@ import shlex
|
|
|
|
|
|
import borgmatic.borg.pattern
|
|
import borgmatic.borg.pattern
|
|
import borgmatic.config.paths
|
|
import borgmatic.config.paths
|
|
|
|
+import borgmatic.hooks.credential.tag
|
|
from borgmatic.execute import (
|
|
from borgmatic.execute import (
|
|
execute_command,
|
|
execute_command,
|
|
execute_command_and_capture_output,
|
|
execute_command_and_capture_output,
|
|
@@ -45,7 +46,11 @@ def database_names_to_dump(database, extra_environment, dry_run):
|
|
+ (('--host', database['hostname']) if 'hostname' in database else ())
|
|
+ (('--host', database['hostname']) if 'hostname' in database else ())
|
|
+ (('--port', str(database['port'])) if 'port' in database else ())
|
|
+ (('--port', str(database['port'])) if 'port' in database else ())
|
|
+ (('--protocol', 'tcp') if 'hostname' in database or 'port' in database else ())
|
|
+ (('--protocol', 'tcp') if 'hostname' in database or 'port' in database else ())
|
|
- + (('--user', database['username']) if 'username' in database else ())
|
|
|
|
|
|
+ + (
|
|
|
|
+ ('--user', borgmatic.hooks.credential.tag.resolve_credential(database['username']))
|
|
|
|
+ if 'username' in database
|
|
|
|
+ else ()
|
|
|
|
+ )
|
|
+ ('--skip-column-names', '--batch')
|
|
+ ('--skip-column-names', '--batch')
|
|
+ ('--execute', 'show schemas')
|
|
+ ('--execute', 'show schemas')
|
|
)
|
|
)
|
|
@@ -96,7 +101,11 @@ def execute_dump_command(
|
|
+ (('--host', database['hostname']) if 'hostname' in database else ())
|
|
+ (('--host', database['hostname']) if 'hostname' in database else ())
|
|
+ (('--port', str(database['port'])) if 'port' in database else ())
|
|
+ (('--port', str(database['port'])) if 'port' in database else ())
|
|
+ (('--protocol', 'tcp') if 'hostname' in database or 'port' in database else ())
|
|
+ (('--protocol', 'tcp') if 'hostname' in database or 'port' in database else ())
|
|
- + (('--user', database['username']) if 'username' in database else ())
|
|
|
|
|
|
+ + (
|
|
|
|
+ ('--user', borgmatic.hooks.credential.tag.resolve_credential(database['username']))
|
|
|
|
+ if 'username' in database
|
|
|
|
+ else ()
|
|
|
|
+ )
|
|
+ ('--databases',)
|
|
+ ('--databases',)
|
|
+ database_names
|
|
+ database_names
|
|
+ ('--result-file', dump_filename)
|
|
+ ('--result-file', dump_filename)
|
|
@@ -152,7 +161,11 @@ def dump_data_sources(
|
|
|
|
|
|
for database in databases:
|
|
for database in databases:
|
|
dump_path = make_dump_path(borgmatic_runtime_directory)
|
|
dump_path = make_dump_path(borgmatic_runtime_directory)
|
|
- extra_environment = {'MYSQL_PWD': database['password']} if 'password' in database else None
|
|
|
|
|
|
+ extra_environment = (
|
|
|
|
+ {'MYSQL_PWD': borgmatic.hooks.credential.tag.resolve_credential(database['password'])}
|
|
|
|
+ if 'password' in database
|
|
|
|
+ else None
|
|
|
|
+ )
|
|
dump_database_names = database_names_to_dump(database, extra_environment, dry_run)
|
|
dump_database_names = database_names_to_dump(database, extra_environment, dry_run)
|
|
|
|
|
|
if not dump_database_names:
|
|
if not dump_database_names:
|
|
@@ -251,11 +264,13 @@ def restore_data_source_dump(
|
|
port = str(
|
|
port = str(
|
|
connection_params['port'] or data_source.get('restore_port', data_source.get('port', ''))
|
|
connection_params['port'] or data_source.get('restore_port', data_source.get('port', ''))
|
|
)
|
|
)
|
|
- username = connection_params['username'] or data_source.get(
|
|
|
|
- 'restore_username', data_source.get('username')
|
|
|
|
|
|
+ username = borgmatic.hooks.credential.tag.resolve_credential(
|
|
|
|
+ connection_params['username']
|
|
|
|
+ or data_source.get('restore_username', data_source.get('username'))
|
|
)
|
|
)
|
|
- password = connection_params['password'] or data_source.get(
|
|
|
|
- 'restore_password', data_source.get('password')
|
|
|
|
|
|
+ password = borgmatic.hooks.credential.tag.resolve_credential(
|
|
|
|
+ connection_params['password']
|
|
|
|
+ or data_source.get('restore_password', data_source.get('password'))
|
|
)
|
|
)
|
|
|
|
|
|
mariadb_restore_command = tuple(
|
|
mariadb_restore_command = tuple(
|
|
@@ -274,7 +289,11 @@ def restore_data_source_dump(
|
|
+ (('--protocol', 'tcp') if hostname or port else ())
|
|
+ (('--protocol', 'tcp') if hostname or port else ())
|
|
+ (('--user', username) if username else ())
|
|
+ (('--user', username) if username else ())
|
|
)
|
|
)
|
|
- extra_environment = {'MYSQL_PWD': password} if password else None
|
|
|
|
|
|
+ extra_environment = (
|
|
|
|
+ {'MYSQL_PWD': borgmatic.hooks.credential.tag.resolve_credential(password)}
|
|
|
|
+ if password
|
|
|
|
+ else None
|
|
|
|
+ )
|
|
|
|
|
|
logger.debug(f"Restoring MariaDB database {data_source['name']}{dry_run_label}")
|
|
logger.debug(f"Restoring MariaDB database {data_source['name']}{dry_run_label}")
|
|
if dry_run:
|
|
if dry_run:
|