aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2012-03-07 22:01:00 +0000
committerRob Austein <sra@hactrn.net>2012-03-07 22:01:00 +0000
commit2ec3eb5619c9a5f1505d7eda238cb1a555cc5395 (patch)
tree7c054166b9015f8d2b33441268a67efd5443d739
parentf1a3699caa0e11de0d281b4a33a6f6c7bbb69a34 (diff)
Start collecting data on how long it takes to run the bits we care
about on the relying party side (time to fetch, time to validate). svn path=/trunk/; revision=4389
-rw-r--r--rcynic/rpki-torrent.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/rcynic/rpki-torrent.py b/rcynic/rpki-torrent.py
index 88ac53f9..1dfc26e7 100644
--- a/rcynic/rpki-torrent.py
+++ b/rcynic/rpki-torrent.py
@@ -27,7 +27,6 @@ import zipfile
import sys
import os
import email.utils
-import datetime
import base64
import hashlib
import subprocess
@@ -39,6 +38,8 @@ import time
import errno
import fcntl
import getopt
+import smtplib
+import email.mime.text
import transmissionrpc
@@ -253,6 +254,8 @@ def torrent_completion_main():
if torrent is None or torrent.progress != 100:
raise TorrentNotReady("Torrent %s not ready for checking, how did I get here?" % torrent_name)
+ log_email("Download complete %s" % z.url)
+
run_rcynic(client, z)
@@ -289,9 +292,11 @@ def run_rcynic(client, z):
os.unlink(os.path.join(download_dir, fn))
syslog.syslog("Running rcynic")
+ log_email("Starting rcynic %s" % z.url)
subprocess.check_call((cfg.rcynic_prog,
"-c", cfg.rcynic_conf,
"-u", os.path.join(client.get_session().download_dir, z.torrent_name)))
+ log_email("Completed rcynic %s" % z.url)
for cmd in cfg.post_rcynic_commands:
syslog.syslog("Running post-rcynic command: %s" % cmd)
@@ -430,6 +435,7 @@ class ZipFile(object):
r = self.build_opener().open(urllib2.Request(self.url, None, headers))
syslog.syslog("%s has changed, starting download" % self.url)
self.changed = True
+ log_email("Downloading %s" % self.url)
except urllib2.HTTPError, e:
if e.code != 304:
raise
@@ -509,6 +515,24 @@ def create_manifest(topdir, torrent_name):
return result
+def log_email(msg, subj = None):
+ try:
+ if not msg.endswith("\n"):
+ msg += "\n"
+ if subj is None:
+ subj = msg.partition("\n")[0]
+ m = email.mime.text.MIMEText(msg)
+ m["Date"] = time.strftime("%d %b %Y %H:%M:%S +0000", time.gmtime())
+ m["From"] = cfg.log_email
+ m["To"] = cfg.log_email
+ m["Subject"] = subj
+ s = smtplib.SMTP("localhost")
+ s.sendmail(cfg.log_email, [cfg.log_email], m.as_string())
+ s.quit()
+ except ConfigParser.Error:
+ pass
+
+
class TransmissionClient(transmissionrpc.client.Client):
"""
Extension of transmissionrpc.client.Client.
@@ -642,6 +666,10 @@ class MyConfigParser(ConfigParser.RawConfigParser):
except ConfigParser.Error:
return self.get("rcynic", "unauthenticated")
+ @property
+ def log_email(self):
+ return self.get(self.rpki_torrent_section, "log_email")
+
def multioption_iter(self, name, getter = None):
if getter is None:
getter = self.get