Add more timestamps and export them for profiler
[doctor.git] / tests / inspector.py
index 6261415..c1f9569 100644 (file)
@@ -12,6 +12,7 @@ import collections
 from flask import Flask
 from flask import request
 import json
+import logger as doctor_log
 import os
 import time
 
@@ -19,6 +20,8 @@ import novaclient.client as novaclient
 
 import nova_force_down
 
+LOG = doctor_log.Logger('doctor_inspector').getLogger()
+
 
 class DoctorInspectorSample(object):
 
@@ -44,13 +47,14 @@ class DoctorInspectorSample(object):
             try:
                 host=server.__dict__.get('OS-EXT-SRV-ATTR:host')
                 self.servers[host].append(server)
-                app.logger.debug('get hostname=%s from server=%s' % (host, server))
+                LOG.debug('get hostname=%s from server=%s' % (host, server))
             except Exception as e:
-                app.logger.debug('can not get hostname from server=%s' % server)
+                LOG.error('can not get hostname from server=%s' % server)
 
     def disable_compute_host(self, hostname):
         for server in self.servers[hostname]:
             self.nova.servers.reset_state(server, 'error')
+            LOG.info('doctor mark vm(%s) error at %s' % (server, time.time()))
 
         # NOTE: We use our own client here instead of this novaclient for a
         #       workaround.  Once keystone provides v2.1 nova api endpoint
@@ -60,23 +64,24 @@ class DoctorInspectorSample(object):
         # self.nova.services.force_down(hostname, 'nova-compute', True)
         #
         nova_force_down.force_down(hostname)
+        LOG.info('doctor mark host(%s) down at %s' % (hostname, time.time()))
 
 
 app = Flask(__name__)
-app.debug = True
 inspector = DoctorInspectorSample()
 
 
 @app.route('/events', methods=['POST'])
 def event_posted():
-    app.logger.debug('event posted at %s' % time.time())
-    app.logger.debug('inspector = %s' % inspector)
-    app.logger.debug('received data = %s' % request.data)
+    LOG.info('event posted at %s' % time.time())
+    LOG.info('inspector = %s' % inspector)
+    LOG.info('received data = %s' % request.data)
     d = json.loads(request.data)
-    hostname = d['hostname']
-    event_type = d['type']
-    if event_type == 'compute.host.down':
-        inspector.disable_compute_host(hostname)
+    for event in d:
+        hostname = event['details']['hostname']
+        event_type = event['type']
+        if event_type == 'compute.host.down':
+            inspector.disable_compute_host(hostname)
     return "OK"
 
 
@@ -91,5 +96,6 @@ def main():
     args = get_args()
     app.run(port=args.port)
 
+
 if __name__ == '__main__':
     main()