summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/local/server-tools/rz_backup.py33
1 files changed, 27 insertions, 6 deletions
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()