File: //lib/python2.7/site-packages/lap/check_job_full.py
import commands
import json
import httplib2
import socket
from datetime import datetime,timedelta
from lap import backupmanager
from check_jobsd.baculaconf import pgconnect
def job(jobname):
auth = backupmanager.BackupAPI()
valuejson = auth.login('job', jobname)
return valuejson
def changedate(date):
changed = datetime.now() - datetime.strptime(date, '%Y-%m-%dT%H:%M:%S.%fZ') > timedelta(days=2)
if changed:
return True
else:
return False
def jobStatus(jobname):
cmd = '/opt/bacula/bin/bdirjson -r Job -r Job -l Enabled'
status, output = commands.getstatusoutput(cmd)
if status != 0:
raise Exception(output)
else:
try:
jobEnable = json.loads(output)[jobname]
return jobEnable['Enabled']
except KeyError:
return False
def __run__(params):
crit = []
sql = """select name
from job
group by name
having sum(case when level = 'F' and jobstatus='T' then 1 else 0 end) = 0"""
result = pgconnect(sql, "fetchall")
for jobs in result:
if jobStatus(jobs[0]):
jobjson = job(jobs[0])
createDate = jobjson['date']
if changedate(createDate):
crit.append(jobs[0])
if crit:
return [1, '%s without full job' % crit]
else:
return [0, 'OK']