/usr/share/pyshared/cobbler/modules/install_post_report.py is in python-cobbler 2.2.2-0ubuntu33.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | # (c) 2008-2009
# Jeff Schroeder <jeffschroeder@computer.org>
# Michael DeHaan <mdehaan@redhat.com>
#
# License: GPLv2+
# Post install trigger for cobbler to
# send out a pretty email report that
# contains target information.
import distutils.sysconfig
import sys
import os
import traceback
plib = distutils.sysconfig.get_python_lib()
mod_path="%s/cobbler" % plib
sys.path.insert(0, mod_path)
from utils import _
import smtplib
import sys
import cobbler.templar as templar
from cobbler.cexceptions import CX
import utils
def register():
# this pure python trigger acts as if it were a legacy shell-trigger, but is much faster.
# the return of this method indicates the trigger type
return "/var/lib/cobbler/triggers/install/post/*"
def run(api, args, logger):
# FIXME: make everything use the logger
settings = api.settings()
# go no further if this feature is turned off
if not str(settings.build_reporting_enabled).lower() in [ "1", "yes", "y", "true"]:
return 0
objtype = args[0] # "target" or "profile"
name = args[1] # name of target or profile
boot_ip = args[2] # ip or "?"
if objtype == "system":
target = api.find_system(name)
else:
target = api.find_profile(name)
# collapse the object down to a rendered datastructure
target = utils.blender(api, False, target)
if target == {}:
raise CX("failure looking up target")
to_addr = settings.build_reporting_email
if to_addr == "":
return 0
# add the ability to specify an MTA for servers that don't run their own
smtp_server = settings.build_reporting_smtp_server
if smtp_server == "":
smtp_server = "localhost"
# use a custom from address or fall back to a reasonable default
from_addr = settings.build_reporting_sender
if from_addr == "":
from_addr = "cobbler@%s" % settings.server
subject = settings.build_reporting_subject
if subject == "":
subject = '[Cobbler] install complete '
to_addr = ", ".join(to_addr)
metadata = {
"from_addr" : from_addr,
"to_addr" : to_addr,
"subject" : subject,
"boot_ip" : boot_ip
}
metadata.update(target)
input_template = open("/etc/cobbler/reporting/build_report_email.template")
input_data = input_template.read()
input_template.close()
message = templar.Templar().render(input_data, metadata, None)
# for debug, call
# print message
# Send the mail
# FIXME: on error, return non-zero
server_handle = smtplib.SMTP(smtp_server)
server_handle.sendmail(from_addr, to_addr, message)
server_handle.quit()
return 0
|