2019-04-15 16:31:08 +00:00
|
|
|
import argparse
|
|
|
|
import sys
|
|
|
|
|
2019-04-15 15:25:42 +00:00
|
|
|
from restic_volume_backup.config import Config
|
|
|
|
from restic_volume_backup.containers import RunningContainers
|
2019-04-17 01:45:51 +00:00
|
|
|
from restic_volume_backup import backup_runner
|
|
|
|
from restic_volume_backup import restic
|
2019-04-13 17:04:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
def main():
|
2019-04-15 16:31:08 +00:00
|
|
|
args = parse_args()
|
2019-04-16 00:18:49 +00:00
|
|
|
config = Config()
|
2019-04-13 17:04:54 +00:00
|
|
|
containers = RunningContainers()
|
|
|
|
|
2019-04-15 16:31:08 +00:00
|
|
|
if args.action == 'status':
|
2019-04-16 22:08:24 +00:00
|
|
|
print()
|
|
|
|
print("Backup config for compose project '{}'".format(containers.this_container.project_name))
|
|
|
|
print()
|
|
|
|
|
|
|
|
for container in containers.containers:
|
|
|
|
print('service: {}'.format(container.service_name))
|
|
|
|
for mount in container.filter_mounts():
|
|
|
|
print(' - {}'.format(mount.source))
|
|
|
|
|
|
|
|
print()
|
2019-04-13 17:04:54 +00:00
|
|
|
|
2019-04-17 01:45:51 +00:00
|
|
|
elif args.action == 'backup':
|
2019-04-17 02:38:15 +00:00
|
|
|
if containers.backup_process_running:
|
|
|
|
raise ValueError("Backup process alredy running")
|
|
|
|
|
|
|
|
print("Initializing repository")
|
|
|
|
|
2019-04-13 23:35:14 +00:00
|
|
|
# TODO: Errors when repo already exists
|
2019-04-17 01:45:51 +00:00
|
|
|
restic.init_repo(config.repository)
|
2019-04-13 17:04:54 +00:00
|
|
|
|
2019-04-17 02:38:15 +00:00
|
|
|
print("Starting backup container..")
|
|
|
|
backup_runner.run(
|
|
|
|
containers.this_container.image,
|
|
|
|
# "sleep 10",
|
|
|
|
'./test.sh',
|
|
|
|
)
|
2019-04-13 23:35:14 +00:00
|
|
|
# for vol in containers.backup_volumes():
|
|
|
|
# restic.backup_volume(Config.repository, vol)
|
|
|
|
|
|
|
|
|
2019-04-15 16:31:08 +00:00
|
|
|
def parse_args():
|
|
|
|
parser = argparse.ArgumentParser(prog='restic_volume_backup')
|
|
|
|
parser.add_argument(
|
|
|
|
'action',
|
|
|
|
choices=['status', 'backup'],
|
|
|
|
)
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
|
|
|
2019-04-13 17:04:54 +00:00
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|