OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 """Send automated email alerts.""" | |
6 | |
7 import logging | |
8 import os | |
9 import re | |
10 import smtplib | |
11 import socket | |
12 import sys | |
13 | |
14 ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) | |
15 sys.path.insert(0, os.path.join(ROOT_DIR, '..', 'commit-queue-internal')) | |
16 | |
17 # These come from commit-queue-internal. | |
18 try: | |
19 import alert_settings # pylint: disable=F0401 | |
20 except ImportError: | |
21 alert_settings = None | |
22 | |
23 | |
24 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) | |
25 | |
26 | |
27 def SendAlert(subject, message): | |
28 """Send an alert to troopers. | |
29 | |
30 Use the golo smtp relay to prevent accidental leaks from local checkouts. | |
31 """ | |
32 hostname = socket.getfqdn() | |
33 if (alert_settings and | |
34 re.match(r'cq\d?\.golo\.chromium\.org$', hostname)): | |
35 logging.warning('Sending alert, subject %s', subject) | |
36 body = """\ | |
37 From: %s | |
38 To: %s | |
39 Subject: [cq alert] %s | |
40 | |
41 host: %s | |
42 script dir: %s | |
43 cwd: %s | |
44 argv: %s | |
45 | |
46 | |
47 %s""" % (alert_settings.FROM_ADDRESS, ', '.join(alert_settings.TO_ADDRESSES), | |
48 subject, hostname, SCRIPT_DIR, os.getcwd(), sys.argv, message) | |
49 | |
50 server = smtplib.SMTP(alert_settings.SMTP_RELAY) | |
51 server.sendmail( | |
52 alert_settings.FROM_ADDRESS, alert_settings.TO_ADDRESSES, body) | |
53 server.quit() | |
54 else: | |
55 logging.warning('\n '.join([ | |
56 'Would send alert if running in production.', | |
57 'Subject: %s' % subject, ''] + message.splitlines()[:20])) | |
OLD | NEW |