Skip to content

Commit 394864e

Browse files
contrib/coordinator-statsd: migrate to gRPC
Signed-off-by: Bastian Krause <[email protected]>
1 parent 61516b6 commit 394864e

File tree

1 file changed

+22
-23
lines changed

1 file changed

+22
-23
lines changed

contrib/coordinator-statsd.py

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,14 @@
4242

4343
import sys
4444
import argparse
45-
import statsd
4645
import os
47-
import labgrid.remote.client
4846
import time
4947
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
5153

5254

5355
def inc_gauge(gauges, key):
@@ -56,12 +58,13 @@ def inc_gauge(gauges, key):
5658

5759

5860
async 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

Comments
 (0)