diff --git a/restic_volume_backup/commands.py b/restic_volume_backup/commands.py new file mode 100644 index 0000000..74af642 --- /dev/null +++ b/restic_volume_backup/commands.py @@ -0,0 +1,62 @@ +import logging +from typing import List +from subprocess import Popen, PIPE + +logger = logging.getLogger(__name__) + + +def test(): + return run_command(['ls', '/backup']) + + +def ping_mysql(host, port, username, password) -> int: + """Check if the database is up and can be reached""" + return commands.run([ + 'mysqladmin', + 'ping', + '--host', + host, + '--port', + port, + '--user', + username, + f'--password={password}', + ]) + + +def ping_mariadb(host, port, username, password) -> int: + """Check if the database is up and can be reached""" + return commands.run([ + 'mysqladmin', + 'ping', + '--host', + host, + '--port', + port, + '--user', + username, + f'--password={password}', + ]) + + +def ping_postgres(self) -> int: + pass + + +def run(cmd: List[str]) -> int: + """Run a command with parameters""" + logger.info('cmd: %s', ' '.join(cmd)) + child = Popen(cmd, stdout=PIPE, stderr=PIPE) + stdoutdata, stderrdata = child.communicate() + + if stdoutdata: + logger.info(stdoutdata.decode().strip()) + logger.info('-' * 28) + + if stderrdata: + logger.info('%s STDERR %s', '-' * 10, '-' * 10) + logger.info(stderrdata.decode().strip()) + logger.info('-' * 28) + + logger.info("returncode %s", child.returncode) + return child.returncode diff --git a/restic_volume_backup/restic.py b/restic_volume_backup/restic.py index f2b0517..9d2e023 100644 --- a/restic_volume_backup/restic.py +++ b/restic_volume_backup/restic.py @@ -1,18 +1,19 @@ +""" +Restic commands +""" import logging from subprocess import Popen, PIPE +from restic_volume_backup import commands logger = logging.getLogger(__name__) -def test(): - return run_command(['ls', '/backup']) - def init_repo(repository): """ Attempt to initialize the repository. Doing this after the repository is initialized """ - return run_command([ + return commands.run([ "restic", "--cache-dir", "/restic_cache", @@ -23,7 +24,7 @@ def init_repo(repository): def backup_files(repository, source='/backup'): - return run_command([ + return commands.run([ "restic", "--cache-dir", "/restic_cache", @@ -38,7 +39,7 @@ def backup_files(repository, source='/backup'): def backup_mysql_all(repository, host, port, user, password, filename): """Backup all mysql databases""" # -h host, -p password - return run_command([ + return commands.run([ 'mysqldump', '--host', host, @@ -62,22 +63,8 @@ def backup_mysql_database(repository, host, port, user, password, filename, data pass -def ping_mysql(host, port, username, password): - """Check if the database is up and can be reached""" - return run_command([ - 'mysqladmin', - 'ping', - '--host', - host, - '--port', - port, - '--user', - username, - f'--password={password}', - ]) - def snapshots(repository): - return run_command([ + return commands.run([ "restic", "--cache-dir", "/restic_cache", @@ -88,7 +75,7 @@ def snapshots(repository): def check(repository): - return run_command([ + return commands.run([ "restic", "--cache-dir", "/restic_cache", @@ -96,21 +83,3 @@ def check(repository): repository, "check", ]) - - -def run_command(cmd): - logger.info('cmd: %s', ' '.join(cmd)) - child = Popen(cmd, stdout=PIPE, stderr=PIPE) - stdoutdata, stderrdata = child.communicate() - - if stdoutdata: - logger.info(stdoutdata.decode().strip()) - logger.info('-' * 28) - - if stderrdata: - logger.info('%s STDERR %s', '-' * 10, '-' * 10) - logger.info(stderrdata.decode().strip()) - logger.info('-' * 28) - - logger.info("returncode %s", child.returncode) - return child.returncode