From 2a861b0519d6c93a87f96b81c4ba5f7d2ef1fb9b Mon Sep 17 00:00:00 2001 From: Einar Forselv Date: Tue, 3 Dec 2019 07:36:48 +0100 Subject: [PATCH] Ensure exit codes are propagated --- restic_volume_backup/backup_runner.py | 4 +++- restic_volume_backup/cli.py | 24 +++++++++++++++++++----- restic_volume_backup/restic.py | 2 +- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/restic_volume_backup/backup_runner.py b/restic_volume_backup/backup_runner.py index 56726a0..5f374e4 100644 --- a/restic_volume_backup/backup_runner.py +++ b/restic_volume_backup/backup_runner.py @@ -53,5 +53,7 @@ def run(image: str = None, command: str = None, volumes: dict = None, container.reload() - logger.info("Container ExitCode %s", container.attrs['State']['ExitCode']) + logger.debug("Container ExitCode %s", container.attrs['State']['ExitCode']) container.remove() + + return container.attrs['State']['ExitCode'] diff --git a/restic_volume_backup/cli.py b/restic_volume_backup/cli.py index 22e494c..228e5f5 100644 --- a/restic_volume_backup/cli.py +++ b/restic_volume_backup/cli.py @@ -73,7 +73,7 @@ def backup(config, containers): mounts = containers.generate_backup_mounts('/backup') volumes.update(mounts) - backup_runner.run( + result = backup_runner.run( image=containers.this_container.image, command='restic-volume-backup start-backup-process', volumes=volumes, @@ -84,6 +84,8 @@ def backup(config, containers): "com.docker.compose.project": containers.this_container.project_name, }, ) + logger.info('Backup container exit code: %s', result) + # TODO: Alert def start_backup_process(config, containers): @@ -100,14 +102,26 @@ def start_backup_process(config, containers): logger.info("start-backup-process") # Back up volumes - restic.backup_files(config.repository, source='/backup') + try: + vol_result = restic.backup_files(config.repository, source='/backup') + logger.info('Volume backup exit code: %s', vol_result) + # TODO: Alert + except Exception as ex: + logger.error(ex) + # TODO: Alert # back up databases for container in containers.containers_for_backup(): if container.database_backup_enabled: - instance = container.instance - logger.info('Backing up %s in service %s', instance.container_type, instance.service_name) - instance.backup() + try: + instance = container.instance + logger.info('Backing up %s in service %s', instance.container_type, instance.service_name) + result = instance.backup() + logger.info('Exit code: %s', result) + # TODO: Alert + except Exception as ex: + logger.error(ex) + # TODO: Alert def parse_args(): diff --git a/restic_volume_backup/restic.py b/restic_volume_backup/restic.py index 1b2067b..554bbe8 100644 --- a/restic_volume_backup/restic.py +++ b/restic_volume_backup/restic.py @@ -46,7 +46,7 @@ def backup_from_stdin(repository: str, filename: str, source_command: List[str]) # Ensure both processes exited with code 0 source_exit, dest_exit = source_process.poll(), dest_process.poll() - return source_exit == 0 and dest_exit == 0 + return 0 if (source_exit == 0 and dest_exit == 0) else 1 def snapshots(repository: str):