From aa5033873a02c14d0086b1a70111f28c92cd1afc Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Tue, 4 Jul 2017 11:20:14 +0200 Subject: [PATCH] rename get-deleteable-volumes -> volumes-delete-old --- ...-deleteable-volumes => volumes-delete-old} | 34 +++++++++++++++++-- modules/bacula/manifests/director.pp | 4 +-- 2 files changed, 34 insertions(+), 4 deletions(-) rename modules/bacula/files/{get-deleteable-volumes => volumes-delete-old} (76%) diff --git a/modules/bacula/files/get-deleteable-volumes b/modules/bacula/files/volumes-delete-old similarity index 76% rename from modules/bacula/files/get-deleteable-volumes rename to modules/bacula/files/volumes-delete-old index c89db7a86..e7e9ce235 100755 --- a/modules/bacula/files/get-deleteable-volumes +++ b/modules/bacula/files/volumes-delete-old @@ -1,6 +1,6 @@ #!/usr/bin/python3 -# queries a bacula database for volumes to delete +# queries a bacula database for volumes to delete and deletes them using bconsole # Copyright 2010, 2011, 2013, 2017 Peter Palfrader # @@ -28,6 +28,7 @@ import psycopg2 import psycopg2.extras import re import sys +import subprocess parser = argparse.ArgumentParser() parser.add_argument("-d", "--db-connect-string", metavar="connect-string", dest="db", @@ -35,6 +36,12 @@ parser.add_argument("-d", "--db-connect-string", metavar="connect-string", dest= parser.add_argument("-D", "--db-connect-string-file", metavar="FILE", dest="dbfile", default='/etc/dsa/bacula-reader-database', help="File to read database connect string from (/etc/dsa/bacula-reader-database)") +parser.add_argument("-v", "--verbose", dest="verbose", + default=False, action="store_true", + help="Be more verbose.") +parser.add_argument("-n", "--nodo", dest="nodo", + default=False, action="store_true", + help="Print to cat rather than bconsole.") args = parser.parse_args() if args.db is not None: @@ -92,5 +99,28 @@ cursor.execute(""" volbytes < 1000 AND recycle=1 """, {}) + +cmd = [] for r in cursor.fetchall(): - print("delete volume=%s yes"%(r['volumename'],)) + c = "delete volume=%s yes"%(r['volumename'],) + cmd.append(c) + +if args.nodo: + print("\n".join(cmd)) + sys.exit(0) + +if args.verbose: + for c in cmd: + print("Will run: %s"%(c,)) + +p = subprocess.Popen(['bconsole'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) +(out, err) = p.communicate("\n".join(cmd).encode()) +if p.returncode != 0: + raise Exception("bconsole failed. stdout:\n%s\nstderr:%s\n"%(out, err)) + +if args.verbose: + print("stdout:\n%s"%(out,)) + +if err != "": + print("bconsole said on stderr:\n%s\n"%(err,), file=sys.stderr) + sys.exit(1) diff --git a/modules/bacula/manifests/director.pp b/modules/bacula/manifests/director.pp index 38d420bd0..285c84af7 100644 --- a/modules/bacula/manifests/director.pp +++ b/modules/bacula/manifests/director.pp @@ -69,9 +69,9 @@ class bacula::director inherits bacula { source => 'puppet:///modules/bacula/volume-purge-action', ; } - file { '/etc/bacula/scripts/get-deleteable-volumes': + file { '/etc/bacula/scripts/volumes-delete-old': mode => '0555', - source => 'puppet:///modules/bacula/get-deleteable-volumes', + source => 'puppet:///modules/bacula/volumes-delete-old', ; } file { '/etc/bacula/storages-list.d': -- 2.20.1