15
15
# limitations under the License.
16
16
17
17
import argparse
18
+ import asyncio
18
19
from contextlib import contextmanager
19
20
from labgrid .remote .client import start_session
21
+ from labgrid .remote .generated import labgrid_coordinator_pb2
20
22
from labgrid .util .proxy import proxymanager
21
23
import os
22
24
import sys
@@ -51,14 +53,20 @@ async def do_sync(session, args):
51
53
for name in remove_places :
52
54
print (f"Removing place { name } " )
53
55
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
+
55
60
changed = True
56
61
57
62
for name in config ["places" ]:
58
63
if not name in seen_places :
59
64
print (f"Adding place { name } " )
60
65
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
+
62
70
changed = True
63
71
64
72
for name in config ["places" ]:
@@ -89,9 +97,10 @@ async def do_sync(session, args):
89
97
else :
90
98
print (f"Deleting match '{ match } ' for place { name } " )
91
99
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
+
95
104
changed = True
96
105
97
106
for m in matches :
@@ -103,9 +112,9 @@ async def do_sync(session, args):
103
112
print (f"Adding match '{ match } ' for place { name } " )
104
113
105
114
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 ( )
109
118
changed = True
110
119
111
120
tags = config ["places" ][name ].get ("tags" , {}).copy ()
@@ -131,9 +140,10 @@ async def do_sync(session, args):
131
140
tags [k ] = ""
132
141
133
142
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
+
137
147
changed = True
138
148
139
149
async def do_dump (session , args ):
@@ -174,11 +184,11 @@ async def do_dump(session, args):
174
184
formatter_class = argparse .RawDescriptionHelpFormatter ,
175
185
)
176
186
parser .add_argument (
177
- "--crossbar " ,
187
+ "--coordinator " ,
178
188
"-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)" ,
182
192
)
183
193
parser .add_argument ("--proxy" , "-P" , help = "Proxy connections via given ssh host" )
184
194
@@ -219,11 +229,19 @@ async def do_dump(session, args):
219
229
if args .proxy :
220
230
proxymanager .force_proxy (args .proxy )
221
231
232
+ loop = asyncio .new_event_loop ()
233
+ asyncio .set_event_loop (loop )
234
+
222
235
session = start_session (
223
- args .crossbar , os .environ .get ("LG_CROSSBAR_REALM" , "realm1" ), {}
236
+ args .coordinator ,
237
+ loop = loop ,
224
238
)
225
239
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 ())
227
245
228
246
229
247
if __name__ == "__main__" :
0 commit comments