1515# limitations under the License.
1616
1717import argparse
18+ import asyncio
1819from contextlib import contextmanager
1920from labgrid .remote .client import start_session
21+ from labgrid .remote .generated import labgrid_coordinator_pb2
2022from labgrid .util .proxy import proxymanager
2123import os
2224import sys
@@ -51,14 +53,20 @@ async def do_sync(session, args):
5153 for name in remove_places :
5254 print (f"Removing place { name } " )
5355 if not args .dry_run :
54- await session .call ("org.labgrid.coordinator.del_place" , name )
56+ request = labgrid_coordinator_pb2 .DeletePlaceRequest (name = name )
57+ await session .stub .DeletePlace (request )
58+ await session .sync_with_coordinator ()
59+
5560 changed = True
5661
5762 for name in config ["places" ]:
5863 if not name in seen_places :
5964 print (f"Adding place { name } " )
6065 if not args .dry_run :
61- await session .call ("org.labgrid.coordinator.add_place" , name )
66+ request = labgrid_coordinator_pb2 .AddPlaceRequest (name = name )
67+ await session .stub .AddPlace (request )
68+ await session .sync_with_coordinator ()
69+
6270 changed = True
6371
6472 for name in config ["places" ]:
@@ -89,9 +97,10 @@ async def do_sync(session, args):
8997 else :
9098 print (f"Deleting match '{ match } ' for place { name } " )
9199 if not args .dry_run :
92- await session .call (
93- "org.labgrid.coordinator.del_place_match" , name , match , rename
94- )
100+ request = labgrid_coordinator_pb2 .DeletePlaceMatchRequest (placename = name , pattern = match )
101+ await session .stub .DeletePlaceMatch (request )
102+ await session .sync_with_coordinator ()
103+
95104 changed = True
96105
97106 for m in matches :
@@ -103,9 +112,9 @@ async def do_sync(session, args):
103112 print (f"Adding match '{ match } ' for place { name } " )
104113
105114 if not args .dry_run :
106- await session . call (
107- "org.labgrid.coordinator.add_place_match" , name , match , rename
108- )
115+ request = labgrid_coordinator_pb2 . AddPlaceMatchRequest ( placename = name , pattern = match , rename = rename )
116+ await session . stub . AddPlaceMatch ( request )
117+ await session . sync_with_coordinator ( )
109118 changed = True
110119
111120 tags = config ["places" ][name ].get ("tags" , {}).copy ()
@@ -131,9 +140,10 @@ async def do_sync(session, args):
131140 tags [k ] = ""
132141
133142 if not args .dry_run :
134- await session .call (
135- "org.labgrid.coordinator.set_place_tags" , name , tags
136- )
143+ request = labgrid_coordinator_pb2 .SetPlaceTagsRequest (placename = name , tags = tags )
144+ await session .stub .SetPlaceTags (request )
145+ await session .sync_with_coordinator ()
146+
137147 changed = True
138148
139149 async def do_dump (session , args ):
@@ -174,11 +184,11 @@ async def do_dump(session, args):
174184 formatter_class = argparse .RawDescriptionHelpFormatter ,
175185 )
176186 parser .add_argument (
177- "--crossbar " ,
187+ "--coordinator " ,
178188 "-x" ,
179- metavar = "URL " ,
180- default = os .environ .get ("LG_CROSSBAR " , "ws:// 127.0.0.1:20408/ws " ),
181- help = "Crossbar websocket URL (default: %(default)s)" ,
189+ metavar = "ADDRESS " ,
190+ default = os .environ .get ("LG_COORDINATOR " , "127.0.0.1:20408" ),
191+ help = "Coordinator address as HOST[:PORT] (default: %(default)s)" ,
182192 )
183193 parser .add_argument ("--proxy" , "-P" , help = "Proxy connections via given ssh host" )
184194
@@ -219,11 +229,19 @@ async def do_dump(session, args):
219229 if args .proxy :
220230 proxymanager .force_proxy (args .proxy )
221231
232+ loop = asyncio .new_event_loop ()
233+ asyncio .set_event_loop (loop )
234+
222235 session = start_session (
223- args .crossbar , os .environ .get ("LG_CROSSBAR_REALM" , "realm1" ), {}
236+ args .coordinator ,
237+ loop = loop ,
224238 )
225239
226- return session .loop .run_until_complete (args .func (session , args ))
240+ try :
241+ return loop .run_until_complete (args .func (session , args ))
242+ finally :
243+ loop .run_until_complete (session .stop ())
244+ loop .run_until_complete (session .close ())
227245
228246
229247if __name__ == "__main__" :
0 commit comments