@@ -31,22 +31,46 @@ def create_event(data):
3131 event = riemann .riemann_pb2 .Event ()
3232 event .tags .extend (data .pop ('tags' ))
3333 for name , value in data .items ():
34- setattr (event , name , value )
34+ if value is not None :
35+ setattr (event , name , value )
3536 return event
3637
3738 def send_event (self , event ):
3839 """Wraps an event in a message and sends it to Riemann"""
3940 message = riemann .riemann_pb2 .Msg ()
4041 message .events .extend ([event ])
41- self .transport .write (message )
42+ self .transport .send (message )
4243 return event
4344
4445 def event (self , ** data ):
4546 """Sends an event"""
4647 return self .send_event (self .create_event (data ))
4748
48- def query (self , * args , ** kwargs ):
49- raise NotImplemented ("Querying is not yet supported" )
49+ @staticmethod
50+ def create_dict (event ):
51+ """Creates a dict from an Event"""
52+ return {
53+ 'time' : event .time ,
54+ 'state' : event .state ,
55+ 'host' : event .host ,
56+ 'description' : event .description ,
57+ 'service' : event .service ,
58+ 'tags' : list (event .tags ),
59+ 'ttl' : event .ttl ,
60+ 'metric_f' : event .metric_f ,
61+ 'metric_d' : event .metric_d ,
62+ 'metric_sint64' : event .metric_sint64
63+ }
64+
65+ def send_query (self , query ):
66+ message = riemann .riemann_pb2 .Msg ()
67+ message .query .string = query
68+ self .transport .send (message )
69+ return self .transport .recv ()
70+
71+ def query (self , query ):
72+ response = self .send_query (query )
73+ return [self .create_dict (e ) for e in response .events ]
5074
5175
5276class QueuedClient (Client ):
@@ -58,7 +82,7 @@ def __init__(self, *args, **kwargs):
5882
5983 def flush (self ):
6084 """Sends the waiting message to Riemann"""
61- self .transport .write (self .queue )
85+ self .transport .send (self .queue )
6286 self .queue = riemann .riemann_pb2 .Msg ()
6387
6488 def send_event (self , event ):
0 commit comments