def listJobs(sort): with Pidfile(config().lockfile, logger().debug, logger().error): # Run director directorInstance = director() jobs = directorInstance.getJobArray() sizes = {} averages = {} tot_size = 0 tot_avg = 0 for job in jobs: sizes[job.hostname], averages[ job.hostname] = director().getBackupsSize(job) aux = sorted(sizes.items(), key=lambda x: x[1], reverse=True) if sort == 'average': aux = sorted(averages.items(), key=lambda x: x[1], reverse=True) x = PrettyTable([ 'Hostname', 'Estimated total backup size', 'Average backup size increase' ]) for elem in aux: hostname = elem[0] tot_size += sizes[hostname] tot_avg += averages[hostname] size = jinjafilters()._bytesToReadableStr(sizes[hostname]) avg = jinjafilters()._bytesToReadableStr(averages[hostname]) x.add_row([hostname, size, avg]) tot_size = jinjafilters()._bytesToReadableStr(tot_size) tot_avg = jinjafilters()._bytesToReadableStr(tot_avg) x.add_row(['Total', tot_size, tot_avg]) x.align = "l" x.padding_width = 1 print(x)
def printOutput(self, hostname): ret = 1 l = self.getList(hostname) if l: x = PrettyTable([ 'Hostname', 'Backup status', 'Start time', 'Duration', 'Total number of files', 'Total filesize' ]) backupState = 'Failed' hostname = l[0]['hostname'] totalNumberOfFiles = jinjafilters()._intToReadableStr( l[0]['rsync_number_of_files']) totalFileSize = jinjafilters()._bytesToReadableStr( l[0]['rsync_total_file_size']) duration = jinjafilters()._secondsToReadableStr( l[0]['enddatetime'] - l[0]['startdatetime'] + 1, True) starttime = jinjafilters()._epochToStrDate(l[0]['startdatetime'], "%d-%m-%Y %H:%M:%S") if l[0]['rsync_backup_status'] == 1: backupState = 'Ok' ret = 0 else: duration = '-' totalNumberOfFiles = '-' totalFileSize = '-' x.add_row([ hostname, backupState, starttime, duration, totalNumberOfFiles, totalFileSize ]) x.align = "l" x.padding_width = 1 print(x) else: print("Could not find hostname: [%s]" % hostname) return ret
def printOutput(self, hostname): ret = 1 l = self.getList(hostname) if l: x = PrettyTable(['Hostname', 'Backup status', 'Start time', 'Duration', 'Total number of files', 'Total filesize']) backupState = 'Failed' hostname = l[0]['hostname'] totalNumberOfFiles = jinjafilters()._intToReadableStr(l[0]['rsync_number_of_files']) totalFileSize = jinjafilters()._bytesToReadableStr(l[0]['rsync_total_file_size']) duration = jinjafilters()._secondsToReadableStr(l[0]['enddatetime'] - l[0]['startdatetime'] + 1, True) starttime = jinjafilters()._epochToStrDate(l[0]['startdatetime'], "%d-%m-%Y %H:%M:%S") if l[0]['rsync_backup_status'] == 1: backupState = 'Ok' ret = 0 else: duration = '-' totalNumberOfFiles = '-' totalFileSize = '-' x.add_row([hostname, backupState, starttime, duration, totalNumberOfFiles, totalFileSize]) x.align = "l" x.padding_width = 1 print(x) else: print("Could not find hostname: [%s]" % hostname) return ret
def listJobs(sort): with Pidfile(config().lockfile, logger().debug, logger().error): # Run director directorInstance = director() jobs = directorInstance.getJobArray() sizes = {} averages = {} tot_size=0 tot_avg=0 for job in jobs: sizes[job.hostname], averages[job.hostname] = director().getBackupsSize(job) aux = sorted(sizes.items(), key=lambda x: x[1], reverse=True) if sort == 'average': aux = sorted(averages.items(), key=lambda x: x[1], reverse=True) x = PrettyTable(['Hostname', 'Estimated total backup size', 'Average backup size increase']) for elem in aux: hostname = elem[0] tot_size += sizes[hostname] tot_avg += averages[hostname] size = jinjafilters()._bytesToReadableStr(sizes[hostname]) avg = jinjafilters()._bytesToReadableStr(averages[hostname]) x.add_row([hostname, size, avg]) tot_size = jinjafilters()._bytesToReadableStr(tot_size) tot_avg = jinjafilters()._bytesToReadableStr(tot_avg) x.add_row(['Total', tot_size, tot_avg]) x.align = "l" x.padding_width = 1 print(x)
def getHtmlEmailBody(self, state, hosts, missinghosts, stats, durationstats, jobrunhistory, jobs): env = Environment(loader=PackageLoader('autorsyncbackup', 'templates')) env.filters['datetimeformat'] = jinjafilters()._epochToStrDate env.filters['bytesformat'] = jinjafilters()._bytesToReadableStr env.filters['secondsformat'] = jinjafilters()._secondsToReadableStr env.filters['numberformat'] = jinjafilters()._intToReadableStr template = env.get_template('email.j2') return template.render(state=state, hosts=hosts, missinghosts=missinghosts, stats=stats, durationstats=durationstats, jobrunhistory=jobrunhistory, jobs=jobs)
def getHtmlExceptionBody(self, exc): env = Environment(loader=PackageLoader('autorsyncbackup', 'templates')) env.filters['datetimeformat'] = jinjafilters()._epochToStrDate env.filters['bytesformat'] = jinjafilters()._bytesToReadableStr env.filters['secondsformat'] = jinjafilters()._secondsToReadableStr env.filters['numberformat'] = jinjafilters()._intToReadableStr env.filters['nl2br'] = jinjafilters()._nl2br template = env.get_template('email_exc.j2') return template.render(exc=exc)
def getTextExceptionBody(self, exc): env = Environment(loader=PackageLoader('autorsyncbackup', 'templates')) env.filters['datetimeformat'] = jinjafilters()._epochToStrDate env.filters['bytesformat'] = jinjafilters()._bytesToReadableStr env.filters['secondsformat'] = jinjafilters()._secondsToReadableStr env.filters['numberformat'] = jinjafilters()._intToReadableStr env.filters['nl2br'] = jinjafilters()._nl2br template = env.get_template('text_email_exc.j2') return template.render(exc=exc)
def getTextEmailBody(self, state, hosts, missinghosts, stats, durationstats, jobrunhistory, jobs, sizes, averages): env = Environment(loader=PackageLoader('autorsyncbackup', 'templates')) env.filters['datetimeformat'] = jinjafilters()._epochToStrDate env.filters['bytesformat'] = jinjafilters()._bytesToReadableStr env.filters['secondsformat'] = jinjafilters()._secondsToReadableStr env.filters['numberformat'] = jinjafilters()._intToReadableStr env.filters['nl2br'] = jinjafilters()._nl2br template = env.get_template('text_email.j2') return template.render(state=state, hosts=hosts, missinghosts=missinghosts, stats=stats, durationstats=durationstats, jobrunhistory=jobrunhistory, jobs=jobs, sizes=sizes, averages=averages)
def filters(): filters = jinjafilters() yield filters