4242
4343import sys
4444import argparse
45- import statsd
4645import os
47- import labgrid .remote .client
4846import time
4947import asyncio
50- import txaio
48+
49+ from labgrid .remote .client import start_session , Error
50+ from labgrid .remote .generated import labgrid_coordinator_pb2
51+ from labgrid .remote .common import Reservation
52+ import statsd
5153
5254
5355def inc_gauge (gauges , key ):
@@ -56,12 +58,13 @@ def inc_gauge(gauges, key):
5658
5759
5860async def report_reservations (session , tags , gauges ):
59- reservations = await session . call ( "org.labgrid.coordinator.get_reservations" )
61+ request = labgrid_coordinator_pb2 . GetReservationsRequest ( )
6062
61- for token , config in reservations . items ():
62- state = config [ "state" ]
63+ response = await session . stub . GetReservations ( request )
64+ reservations = [ Reservation . from_pb2 ( x ) for x in response . reservations ]
6365
64- groups = config .get ("filters" , {})
66+ for reservation in reservations :
67+ groups = reservation .filters
6568
6669 if not groups :
6770 groups = {"" : {}}
@@ -72,7 +75,7 @@ async def report_reservations(session, tags, gauges):
7275 "." .join (
7376 ["reservations" , group_name ]
7477 + [group .get (t , "" ) for t in tags ]
75- + [state ]
78+ + [reservation . state . name ]
7679 ),
7780 )
7881
@@ -94,10 +97,10 @@ def main():
9497 )
9598 parser .add_argument (
9699 "-x" ,
97- "--crossbar " ,
98- metavar = "URL " ,
99- help = "Crossbar URL for the coordinator " ,
100- default = os .environ .get ("LG_CROSSBAR " , "ws:// 127.0.0.1:20408/ws " ),
100+ "--coordinator " ,
101+ metavar = "ADDRESS " ,
102+ help = "Coordinator address as HOST[:PORT]. Default is %(default)s " ,
103+ default = os .environ .get ("LG_COORDINATOR " , "127.0.0.1:20408" ),
101104 )
102105 parser .add_argument (
103106 "--period" ,
@@ -142,8 +145,8 @@ def main():
142145
143146 args = parser .parse_args ()
144147
145- txaio . use_asyncio ()
146- txaio . config . loop = asyncio .get_event_loop ( )
148+ loop = asyncio . new_event_loop ()
149+ asyncio .set_event_loop ( loop )
147150
148151 statsd_client = None
149152 gauges = {}
@@ -175,22 +178,18 @@ def main():
175178
176179 next_time = time .monotonic () + args .period
177180 try :
178- extra = {}
179- session = labgrid .remote .client .start_session (
180- args .crossbar ,
181- os .environ .get ("LG_CROSSBAR_REALM" , "realm1" ),
182- extra ,
183- )
181+ session = start_session (args .coordinator , loop = loop )
184182 try :
185- session . loop .run_until_complete (
183+ loop .run_until_complete (
186184 asyncio .gather (
187185 report_places (session , args .tags , gauges ),
188186 report_reservations (session , args .tags , gauges ),
189187 )
190188 )
191189 finally :
192- session .leave ()
193- except labgrid .remote .client .Error as e :
190+ loop .run_until_complete (session .stop ())
191+ loop .run_until_complete (session .close ())
192+ except Error as e :
194193 print (f"Error communicating with labgrid: { e } " )
195194 continue
196195
0 commit comments