diff hg_status.py @ 17:a4778c56cc03

update deps and k8s setup
author drewp@bigasterisk.com
date Sun, 12 Dec 2021 22:32:25 -0800
parents db4037285592
children
line wrap: on
line diff
--- a/hg_status.py	Fri Aug 27 13:40:49 2021 -0700
+++ b/hg_status.py	Sun Dec 12 22:32:25 2021 -0800
@@ -1,28 +1,28 @@
-from dataclasses import dataclass, field
 import datetime
 import json
-import logging
-from pathlib import Path
 import time
 import traceback
+from dataclasses import dataclass, field
+from pathlib import Path
 from typing import Dict, Optional, Tuple
 
 import cyclone.httpserver
 import cyclone.sse
 import cyclone.web
+import docopt
+import treq
+import tzlocal
 from cycloneerr import PrettyErrorHandler
 from dateutil.parser import parse
 from dateutil.tz import tzlocal
-import docopt
+from prometheus_client.exposition import generate_latest
+from prometheus_client.registry import REGISTRY
 from ruamel.yaml import YAML
 from standardservice.logsetup import log, verboseLogging
-import treq
 from twisted.internet import reactor
 from twisted.internet.defer import inlineCallbacks, returnValue
-from twisted.internet.utils import getProcessOutput, _UnexpectedErrorOutput
-import tzlocal
+from twisted.internet.utils import _UnexpectedErrorOutput, getProcessOutput
 
-local = tzlocal.get_localzone()
 githubOwner = 'drewp'
 
 
@@ -76,7 +76,7 @@
             rows = yield runHg(self.path, ['log', '--limit', '1'])
             commit = rows[0]
             sec = commit['date'][0]
-            t = datetime.datetime.fromtimestamp(sec, local)
+            t = datetime.datetime.fromtimestamp(sec, tzlocal())
             self._save('log', {'email': commit['user'], 't': t.isoformat(), 'message': commit['desc']})
         returnValue(self._get('log'))
 
@@ -91,7 +91,7 @@
                                   })
             ret = yield treq.json_content(resp)
             commit = ret[0]['commit']
-            t = parse(commit['committer']['date']).astimezone(local).isoformat()
+            t = parse(commit['committer']['date']).astimezone(tzlocal()).isoformat()
             self._save('github', {'email': commit['committer']['email'], 't': t, 'message': commit['message']})
         returnValue(self._get('github'))
 
@@ -109,7 +109,7 @@
 ?
 then push
 then github setdefault to master
-then github delete clearing 
+then github delete clearing
 '''
 
     @inlineCallbacks
@@ -161,6 +161,13 @@
         reactor.callLater(0, self.runOne)
 
 
+class Metrics(cyclone.web.RequestHandler):
+
+    def get(self):
+        self.add_header('content-type', 'text/plain')
+        self.write(generate_latest(REGISTRY))
+
+
 def main():
     args = docopt.docopt('''
 Usage:
@@ -171,9 +178,9 @@
 ''')
     verboseLogging(args['--verbose'])
 
-    import sys
-    sys.path.append('/usr/lib/python3/dist-packages')
-    import OpenSSL
+    # import sys
+    # sys.path.append('/usr/lib/python3/dist-packages')
+    # import OpenSSL
 
     yaml = YAML(typ='safe')
     config = yaml.load(open('config.yaml'))
@@ -192,6 +199,7 @@
                 }),
                 (r'/status/events', Statuses),
                 (r'/githubSync', GithubSync),
+                (r'/metrics', Metrics),
             ]
             cyclone.web.Application.__init__(
                 self,