From da2e6fa93c052ac49ea5eb15a74f401cf88f4674 Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Tue, 28 Apr 2015 23:54:45 +0300 Subject: server-tools/rz-backup: learn to talk to docker Example: python src/local/server-tools/rz_backup.py --root backup-test --docker 4b69d3661966 --neo4j-shell /home/neo4j-community-2.2.1/bin/neo4j-shell --- src/local/server-tools/rz_backup.py | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'src/local/server-tools') diff --git a/src/local/server-tools/rz_backup.py b/src/local/server-tools/rz_backup.py index e60928ba..edff3148 100755 --- a/src/local/server-tools/rz_backup.py +++ b/src/local/server-tools/rz_backup.py @@ -1,14 +1,20 @@ #!/usr/bin/python2.7 +import click + from datetime import datetime from glob import glob import os +from subprocess import Popen from os.path import basename, dirname, exists import re import shutil -root = '/var/lib/rhizi/backup' +# Set by command line arguments, defaults below Click.command() +root = None +docker_container_id = None +neo4j_shell = None debug = True @@ -43,10 +49,12 @@ def copy(src, dst): shutil.copy(src, dst) def neo4jshell(command, stdout): - cmdline = "neo4j-shell -c '%s' > '%s'" % (command, stdout) + args = [neo4j_shell, '-c', command] + if docker_container_id is not None: + args = ['docker', 'exec', docker_container_id] + args if debug: - print("executing %r" % cmdline) - os.system(cmdline) + print("executing %s (%r)" % (' '.join(args), args)) + Popen(args=args, stdout=open(stdout, 'w+')).wait() def next_daily_filename(): filename = os.path.join(daily_root(), backup_template % datetime.now().strftime('%Y%m%d')) @@ -111,7 +119,20 @@ def create_daily_backup(): neo4jshell("dump", stdout=filename) return filename -def main(): +@click.command() +@click.option('--root', 'cli_root', default='/var/lib/rhizi/backup', + type=click.Path(exists=True)) +@click.option('--docker', 'cli_docker_container_id', default=None) +@click.option('--neo4j-shell', 'cli_neo4j_shell', default='neo4j-shell') +def backup(cli_root, cli_docker_container_id, cli_neo4j_shell): + + global root + global docker_container_id + global neo4j_shell + root = cli_root + docker_container_id = cli_docker_container_id + neo4j_shell = cli_neo4j_shell + # create the daily backup filename = create_daily_backup() @@ -128,4 +149,4 @@ def main(): unlink(filename) if __name__ == '__main__': - main() + backup() -- cgit v1.3.1