Skip to content

Commit

Permalink
triggerjob: fix parameter handling
Browse files Browse the repository at this point in the history
Fixes problems in parameter handling
and apply some changes proposed by pylint.
  • Loading branch information
joergsteffens committed Feb 7, 2024
1 parent 0de44f2 commit 96124d0
Showing 1 changed file with 27 additions and 19 deletions.
46 changes: 27 additions & 19 deletions contrib/misc/triggerjob/bareos-triggerjob.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,32 @@
#!/usr/bin/env python

from bareos.util import argparse
import bareos.bsock
import logging
import sys
import bareos.bsock
from bareos.util import argparse


def get_job_names(director):
"""Get list of job names"""
result = director.call(".jobs")["jobs"]
jobs = [job["name"] for job in result]
return jobs


def get_connected_clients(director):
"""Get list of connected clients (via client initiated connections)"""
result = director.call("status director")["client-connection"]
clients = [client["name"] for client in result]
return clients


def trigger(director, jobnames, clients, hours):
"""
trigger all jobs that are named "backup-<CLIENTNAME>"
for all clients that are connected via client initiated connection
and did run a successful backup for more than <hours> hours.
"""

for client in clients:
jobname = "backup-{}".format(client)
if not jobname in jobnames:
Expand All @@ -44,7 +52,9 @@ def trigger(director, jobnames, clients, hours):
print("{}: backup triggered, jobid={}".format(jobname, jobid))


def getArguments():
def get_arguments():
"""argparse setup"""

epilog = """
bareos-triggerjob is a Python script that allows you to perform a backup for a connected client if a definable time has passed since the last backup.
Expand All @@ -57,12 +67,20 @@ def getArguments():
"""

argparser = argparse.ArgumentParser(
description=u"Trigger Bareos jobs.", epilog=epilog
description="Trigger Bareos jobs.", epilog=epilog
)
argparser.add_argument(
"-d", "--debug", action="store_true", help="enable debugging output"
)
bareos.bsock.DirectorConsole.argparser_add_default_command_line_arguments(argparser)
argparser.add_argument(
"--hours",
type=int,
default=24,
help="Minimum time (in hours) since the last successful backup. Default: 24.",
)
bareos.bsock.DirectorConsoleJson.argparser_add_default_command_line_arguments(
argparser
)
args = argparser.parse_args()
return args

Expand All @@ -73,24 +91,14 @@ def getArguments():
)
logger = logging.getLogger()

args = getArguments()
args = get_arguments()
if args.debug:
logger.setLevel(logging.DEBUG)

bareos_args = bareos.bsock.DirectorConsoleJson.argparser_get_bareos_parameter(args)
try:
options = ["address", "port", "dirname", "name"]
parameter = {}
for i in options:
if hasattr(args, i) and getattr(args, i) != None:
logger.debug("%s: %s" % (i, getattr(args, i)))
parameter[i] = getattr(args, i)
else:
logger.debug('%s: ""' % (i))
logger.debug("options: %s" % (parameter))
password = bareos.bsock.Password(args.password)
parameter["password"] = password
director = bareos.bsock.DirectorConsoleJson(**parameter)
except RuntimeError as e:
director = bareos.bsock.DirectorConsoleJson(**bareos_args)
except bareos.exceptions.Error as e:
print(str(e))
sys.exit(1)
logger.debug("authentication successful")
Expand Down

0 comments on commit 96124d0

Please sign in to comment.