42
42
43
43
import sys
44
44
import argparse
45
- import statsd
46
45
import os
47
- import labgrid .remote .client
48
46
import time
49
47
import 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
51
53
52
54
53
55
def inc_gauge (gauges , key ):
@@ -56,12 +58,13 @@ def inc_gauge(gauges, key):
56
58
57
59
58
60
async def report_reservations (session , tags , gauges ):
59
- reservations = await session . call ( "org.labgrid.coordinator.get_reservations" )
61
+ request = labgrid_coordinator_pb2 . GetReservationsRequest ( )
60
62
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 ]
63
65
64
- groups = config .get ("filters" , {})
66
+ for reservation in reservations :
67
+ groups = reservation .filters
65
68
66
69
if not groups :
67
70
groups = {"" : {}}
@@ -72,7 +75,7 @@ async def report_reservations(session, tags, gauges):
72
75
"." .join (
73
76
["reservations" , group_name ]
74
77
+ [group .get (t , "" ) for t in tags ]
75
- + [state ]
78
+ + [reservation . state . name ]
76
79
),
77
80
)
78
81
@@ -94,10 +97,10 @@ def main():
94
97
)
95
98
parser .add_argument (
96
99
"-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" ),
101
104
)
102
105
parser .add_argument (
103
106
"--period" ,
@@ -142,8 +145,8 @@ def main():
142
145
143
146
args = parser .parse_args ()
144
147
145
- txaio . use_asyncio ()
146
- txaio . config . loop = asyncio .get_event_loop ( )
148
+ loop = asyncio . new_event_loop ()
149
+ asyncio .set_event_loop ( loop )
147
150
148
151
statsd_client = None
149
152
gauges = {}
@@ -175,22 +178,18 @@ def main():
175
178
176
179
next_time = time .monotonic () + args .period
177
180
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 )
184
182
try :
185
- session . loop .run_until_complete (
183
+ loop .run_until_complete (
186
184
asyncio .gather (
187
185
report_places (session , args .tags , gauges ),
188
186
report_reservations (session , args .tags , gauges ),
189
187
)
190
188
)
191
189
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 :
194
193
print (f"Error communicating with labgrid: { e } " )
195
194
continue
196
195
0 commit comments