diff options
Diffstat (limited to 'scripts/contrib/oe-build-perf-report-email.py')
| -rwxr-xr-x | scripts/contrib/oe-build-perf-report-email.py | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/scripts/contrib/oe-build-perf-report-email.py b/scripts/contrib/oe-build-perf-report-email.py deleted file mode 100755 index 7192113c28..0000000000 --- a/scripts/contrib/oe-build-perf-report-email.py +++ /dev/null | |||
| @@ -1,121 +0,0 @@ | |||
| 1 | #!/usr/bin/python3 | ||
| 2 | # | ||
| 3 | # Send build performance test report emails | ||
| 4 | # | ||
| 5 | # Copyright (c) 2017, Intel Corporation. | ||
| 6 | # | ||
| 7 | # SPDX-License-Identifier: GPL-2.0-only | ||
| 8 | # | ||
| 9 | |||
| 10 | import argparse | ||
| 11 | import base64 | ||
| 12 | import logging | ||
| 13 | import os | ||
| 14 | import pwd | ||
| 15 | import re | ||
| 16 | import shutil | ||
| 17 | import smtplib | ||
| 18 | import socket | ||
| 19 | import subprocess | ||
| 20 | import sys | ||
| 21 | import tempfile | ||
| 22 | from email.mime.text import MIMEText | ||
| 23 | |||
| 24 | |||
| 25 | # Setup logging | ||
| 26 | logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") | ||
| 27 | log = logging.getLogger('oe-build-perf-report') | ||
| 28 | |||
| 29 | |||
| 30 | def parse_args(argv): | ||
| 31 | """Parse command line arguments""" | ||
| 32 | description = """Email build perf test report""" | ||
| 33 | parser = argparse.ArgumentParser( | ||
| 34 | formatter_class=argparse.ArgumentDefaultsHelpFormatter, | ||
| 35 | description=description) | ||
| 36 | |||
| 37 | parser.add_argument('--debug', '-d', action='store_true', | ||
| 38 | help="Verbose logging") | ||
| 39 | parser.add_argument('--quiet', '-q', action='store_true', | ||
| 40 | help="Only print errors") | ||
| 41 | parser.add_argument('--to', action='append', | ||
| 42 | help="Recipients of the email") | ||
| 43 | parser.add_argument('--cc', action='append', | ||
| 44 | help="Carbon copy recipients of the email") | ||
| 45 | parser.add_argument('--bcc', action='append', | ||
| 46 | help="Blind carbon copy recipients of the email") | ||
| 47 | parser.add_argument('--subject', default="Yocto build perf test report", | ||
| 48 | help="Email subject") | ||
| 49 | parser.add_argument('--outdir', '-o', | ||
| 50 | help="Store files in OUTDIR. Can be used to preserve " | ||
| 51 | "the email parts") | ||
| 52 | parser.add_argument('--text', | ||
| 53 | help="Plain text message") | ||
| 54 | |||
| 55 | args = parser.parse_args(argv) | ||
| 56 | |||
| 57 | if not args.text: | ||
| 58 | parser.error("Please specify --text") | ||
| 59 | |||
| 60 | return args | ||
| 61 | |||
| 62 | |||
| 63 | def send_email(text_fn, subject, recipients, copy=[], blind_copy=[]): | ||
| 64 | # Generate email message | ||
| 65 | with open(text_fn) as f: | ||
| 66 | msg = MIMEText("Yocto build performance test report.\n" + f.read(), 'plain') | ||
| 67 | |||
| 68 | pw_data = pwd.getpwuid(os.getuid()) | ||
| 69 | full_name = pw_data.pw_gecos.split(',')[0] | ||
| 70 | email = os.environ.get('EMAIL', | ||
| 71 | '{}@{}'.format(pw_data.pw_name, socket.getfqdn())) | ||
| 72 | msg['From'] = "{} <{}>".format(full_name, email) | ||
| 73 | msg['To'] = ', '.join(recipients) | ||
| 74 | if copy: | ||
| 75 | msg['Cc'] = ', '.join(copy) | ||
| 76 | if blind_copy: | ||
| 77 | msg['Bcc'] = ', '.join(blind_copy) | ||
| 78 | msg['Subject'] = subject | ||
| 79 | |||
| 80 | # Send email | ||
| 81 | with smtplib.SMTP('localhost') as smtp: | ||
| 82 | smtp.send_message(msg) | ||
| 83 | |||
| 84 | |||
| 85 | def main(argv=None): | ||
| 86 | """Script entry point""" | ||
| 87 | args = parse_args(argv) | ||
| 88 | if args.quiet: | ||
| 89 | log.setLevel(logging.ERROR) | ||
| 90 | if args.debug: | ||
| 91 | log.setLevel(logging.DEBUG) | ||
| 92 | |||
| 93 | if args.outdir: | ||
| 94 | outdir = args.outdir | ||
| 95 | if not os.path.exists(outdir): | ||
| 96 | os.mkdir(outdir) | ||
| 97 | else: | ||
| 98 | outdir = tempfile.mkdtemp(dir='.') | ||
| 99 | |||
| 100 | try: | ||
| 101 | log.debug("Storing email parts in %s", outdir) | ||
| 102 | if args.to: | ||
| 103 | log.info("Sending email to %s", ', '.join(args.to)) | ||
| 104 | if args.cc: | ||
| 105 | log.info("Copying to %s", ', '.join(args.cc)) | ||
| 106 | if args.bcc: | ||
| 107 | log.info("Blind copying to %s", ', '.join(args.bcc)) | ||
| 108 | send_email(args.text, args.subject, args.to, args.cc, args.bcc) | ||
| 109 | except subprocess.CalledProcessError as err: | ||
| 110 | log.error("%s, with output:\n%s", str(err), err.output.decode()) | ||
| 111 | return 1 | ||
| 112 | finally: | ||
| 113 | if not args.outdir: | ||
| 114 | log.debug("Wiping %s", outdir) | ||
| 115 | shutil.rmtree(outdir) | ||
| 116 | |||
| 117 | return 0 | ||
| 118 | |||
| 119 | |||
| 120 | if __name__ == "__main__": | ||
| 121 | sys.exit(main()) | ||
