add mongodb support, and sqlite restore path (config option only)
This commit is contained in:
parent
205e5b1524
commit
a9386b7a87
2 changed files with 68 additions and 11 deletions
|
@ -952,16 +952,33 @@ properties:
|
|||
Database hostname to connect to. Defaults to
|
||||
connecting via local Unix socket.
|
||||
example: database.example.org
|
||||
restore_hostname:
|
||||
type: string
|
||||
description: |
|
||||
Database hostname to restore to. Defaults to
|
||||
the "hostname" option.
|
||||
example: database.example.org
|
||||
port:
|
||||
type: integer
|
||||
description: Port to connect to. Defaults to 3306.
|
||||
example: 3307
|
||||
restore_port:
|
||||
type: integer
|
||||
description: Port to restore to. Defaults to the
|
||||
"port" option.
|
||||
example: 5433
|
||||
username:
|
||||
type: string
|
||||
description: |
|
||||
Username with which to connect to the database.
|
||||
Defaults to the username of the current user.
|
||||
example: dbuser
|
||||
restore_username:
|
||||
type: string
|
||||
description: |
|
||||
Username with which to restore the database.
|
||||
Defaults to the "username" option.
|
||||
example: dbuser
|
||||
password:
|
||||
type: string
|
||||
description: |
|
||||
|
@ -970,6 +987,12 @@ properties:
|
|||
configured to trust the configured username
|
||||
without a password.
|
||||
example: trustsome1
|
||||
restore_password:
|
||||
type: string
|
||||
description: |
|
||||
Password with which to connect to the restore
|
||||
database. Defaults to the "password" option.
|
||||
example: trustsome1
|
||||
format:
|
||||
type: string
|
||||
enum: ['sql']
|
||||
|
@ -1047,6 +1070,12 @@ properties:
|
|||
read_special and one_file_system (see above) to
|
||||
support dump and restore streaming.
|
||||
example: /var/lib/sqlite/users.db
|
||||
restore_path:
|
||||
type: string
|
||||
description: |
|
||||
Path to the SQLite database file to restore to.
|
||||
Defaults to the "path" option.
|
||||
example: /var/lib/sqlite/users.db
|
||||
mongodb_databases:
|
||||
type: array
|
||||
items:
|
||||
|
@ -1069,22 +1098,45 @@ properties:
|
|||
Database hostname to connect to. Defaults to
|
||||
connecting to localhost.
|
||||
example: database.example.org
|
||||
restore_hostname:
|
||||
type: string
|
||||
description: |
|
||||
Database hostname to restore to. Defaults to
|
||||
the "hostname" option.
|
||||
example: database.example.org
|
||||
port:
|
||||
type: integer
|
||||
description: Port to connect to. Defaults to 27017.
|
||||
example: 27018
|
||||
restore_port:
|
||||
type: integer
|
||||
description: Port to restore to. Defaults to the
|
||||
"port" option.
|
||||
example: 5433
|
||||
username:
|
||||
type: string
|
||||
description: |
|
||||
Username with which to connect to the database.
|
||||
Skip it if no authentication is needed.
|
||||
example: dbuser
|
||||
restore_username:
|
||||
type: string
|
||||
description: |
|
||||
Username with which to restore the database.
|
||||
Defaults to the "username" option.
|
||||
example: dbuser
|
||||
password:
|
||||
type: string
|
||||
description: |
|
||||
Password with which to connect to the database.
|
||||
Skip it if no authentication is needed.
|
||||
example: trustsome1
|
||||
restore_password:
|
||||
type: string
|
||||
description: |
|
||||
Password with which to connect to the restore
|
||||
database. Defaults to the "password" option.
|
||||
example: trustsome1
|
||||
authentication_database:
|
||||
type: string
|
||||
description: |
|
||||
|
|
|
@ -102,7 +102,7 @@ def make_database_dump_pattern(
|
|||
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):
|
||||
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
|
||||
one-element sequence containing a dict describing the database, as per the configuration schema.
|
||||
|
@ -122,7 +122,7 @@ def restore_database_dump(database_config, log_prefix, location_config, dry_run,
|
|||
dump_filename = dump.make_database_dump_filename(
|
||||
make_dump_path(location_config), database['name'], database.get('hostname')
|
||||
)
|
||||
restore_command = build_restore_command(extract_process, database, dump_filename)
|
||||
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}")
|
||||
if dry_run:
|
||||
|
@ -138,10 +138,15 @@ def restore_database_dump(database_config, log_prefix, location_config, dry_run,
|
|||
)
|
||||
|
||||
|
||||
def build_restore_command(extract_process, database, dump_filename):
|
||||
def build_restore_command(extract_process, database, dump_filename, connection_params):
|
||||
'''
|
||||
Return the mongorestore command from a single database configuration.
|
||||
'''
|
||||
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')))
|
||||
username = connection_params['username'] or database.get('restore_username', database.get('username'))
|
||||
password = connection_params['password'] or database.get('restore_password', database.get('password'))
|
||||
|
||||
command = ['mongorestore']
|
||||
if extract_process:
|
||||
command.append('--archive')
|
||||
|
@ -149,14 +154,14 @@ def build_restore_command(extract_process, database, dump_filename):
|
|||
command.extend(('--dir', dump_filename))
|
||||
if database['name'] != 'all':
|
||||
command.extend(('--drop', '--db', database['name']))
|
||||
if 'hostname' in database:
|
||||
command.extend(('--host', database['hostname']))
|
||||
if 'port' in database:
|
||||
command.extend(('--port', str(database['port'])))
|
||||
if 'username' in database:
|
||||
command.extend(('--username', database['username']))
|
||||
if 'password' in database:
|
||||
command.extend(('--password', database['password']))
|
||||
if hostname:
|
||||
command.extend(('--host', hostname))
|
||||
if port:
|
||||
command.extend(('--port', str(port)))
|
||||
if username:
|
||||
command.extend(('--username', username))
|
||||
if password:
|
||||
command.extend(('--password', password))
|
||||
if 'authentication_database' in database:
|
||||
command.extend(('--authenticationDatabase', database['authentication_database']))
|
||||
if 'restore_options' in database:
|
||||
|
|
Loading…
Reference in a new issue