remoteRF-server-testing 0.0.7__tar.gz → 0.0.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/PKG-INFO +1 -1
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/pyproject.toml +1 -1
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/server/rpc_manager.py +80 -37
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server_testing.egg-info/PKG-INFO +1 -1
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/README.md +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/setup.cfg +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/__init__.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/__init__.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/grpc/__init__.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/grpc/grpc_host_pb2.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/grpc/grpc_host_pb2_grpc.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/grpc/grpc_pb2.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/grpc/grpc_pb2_grpc.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/idl/__init__.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/idl/device_schema.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/idl/pluto_schema.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/idl/schema.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/utils/__init__.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/utils/ansi_codes.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/utils/api_token.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/utils/db_connection.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/utils/db_location.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/utils/list_string.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/common/utils/process_arg.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/drivers/__init__.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/drivers/adalm_pluto/__init__.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/drivers/adalm_pluto/pluto_remote_server.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/host/__init__.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/host/host_auth_token.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/host/host_directory_store.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/host/host_tunnel_server.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/server/__init__.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/server/acc_perms.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/server/cert_provider.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/server/device_manager.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/server/grpc_server.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/server/reservation.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/server/user_group_cli.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/server/user_group_handler.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/serverrf_cli.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/tools/__init__.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/tools/gen_certs.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/tools/gist_status.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/tools/gist_status_testing.py +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server_testing.egg-info/SOURCES.txt +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server_testing.egg-info/dependency_links.txt +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server_testing.egg-info/entry_points.txt +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server_testing.egg-info/requires.txt +0 -0
- {remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server_testing.egg-info/top_level.txt +0 -0
|
@@ -52,7 +52,8 @@
|
|
|
52
52
|
|
|
53
53
|
from .reservation import reservation_handler
|
|
54
54
|
from ..common.utils import *
|
|
55
|
-
from .
|
|
55
|
+
from ..common.grpc import grpc_pb2 as generic_pb2
|
|
56
|
+
from .device_manager import acquire_device, VirtualDevice, get_device_schema, find_device_id_by_name, get_device_by_id, resolve_gid_for_token
|
|
56
57
|
from ..host import host_tunnel_server as hts
|
|
57
58
|
|
|
58
59
|
|
|
@@ -181,6 +182,71 @@ class RpcManager:
|
|
|
181
182
|
|
|
182
183
|
raise ValueError(f"Unknown verb {verb!r} in {function_name!r}")
|
|
183
184
|
|
|
185
|
+
def _resolve_idl_target(self, args: dict) -> tuple[int | None, str | None]:
|
|
186
|
+
if 'token' in args:
|
|
187
|
+
api_token = str(unmap_arg(args['token']))
|
|
188
|
+
gid = resolve_gid_for_token(api_token)
|
|
189
|
+
if gid is None:
|
|
190
|
+
return None, 'No schema available for this token (invalid token or device offline)'
|
|
191
|
+
return gid, None
|
|
192
|
+
|
|
193
|
+
if 'device_id' in args:
|
|
194
|
+
try:
|
|
195
|
+
return int(unmap_arg(args['device_id'])), None
|
|
196
|
+
except (ValueError, TypeError):
|
|
197
|
+
return None, 'device_id must be an integer'
|
|
198
|
+
|
|
199
|
+
if 'device_name' in args:
|
|
200
|
+
name = str(unmap_arg(args['device_name']))
|
|
201
|
+
gid = find_device_id_by_name(name)
|
|
202
|
+
if gid is None:
|
|
203
|
+
return None, f'No device found with name {name!r}'
|
|
204
|
+
return gid, None
|
|
205
|
+
|
|
206
|
+
return None, 'IDL:get_drivers requires token, device_id, or device_name'
|
|
207
|
+
|
|
208
|
+
def _fetch_host_idl(self, *, gid: int, dev: VirtualDevice, args: dict) -> dict:
|
|
209
|
+
registry = hts.get_tunnel_registry(create=False)
|
|
210
|
+
if registry is None:
|
|
211
|
+
return {'error': map_arg('Host tunnel registry unavailable')}
|
|
212
|
+
|
|
213
|
+
req = generic_pb2.GenericRPCRequest(function_name="IDL:get_drivers")
|
|
214
|
+
for key, value in dict(args).items():
|
|
215
|
+
if str(key) == "token":
|
|
216
|
+
continue
|
|
217
|
+
req.args[str(key)].CopyFrom(value)
|
|
218
|
+
req.args["device_id"].CopyFrom(map_arg(int(gid)))
|
|
219
|
+
req.args["g"].CopyFrom(map_arg(int(gid)))
|
|
220
|
+
|
|
221
|
+
try:
|
|
222
|
+
resp = hts.handle_host_device_request(
|
|
223
|
+
registry,
|
|
224
|
+
host_id=dev.host_id,
|
|
225
|
+
device_id=dev.device_id,
|
|
226
|
+
request=req,
|
|
227
|
+
timeout_sec=10.0,
|
|
228
|
+
)
|
|
229
|
+
except Exception as e:
|
|
230
|
+
return {'error': map_arg(str(e))}
|
|
231
|
+
|
|
232
|
+
results = dict(resp.results)
|
|
233
|
+
if 'error' in results:
|
|
234
|
+
return results
|
|
235
|
+
|
|
236
|
+
err = results.get('Error')
|
|
237
|
+
if err is not None:
|
|
238
|
+
return {'error': map_arg(str(unmap_arg(err)))}
|
|
239
|
+
|
|
240
|
+
ok = results.get('Ok')
|
|
241
|
+
if ok is not None:
|
|
242
|
+
try:
|
|
243
|
+
if not bool(unmap_arg(ok)):
|
|
244
|
+
return {'error': map_arg('Host schema fetch failed')}
|
|
245
|
+
except Exception:
|
|
246
|
+
return {'error': map_arg('Host schema fetch failed')}
|
|
247
|
+
|
|
248
|
+
return results
|
|
249
|
+
|
|
184
250
|
def _handle_idl(self, sub: str, args: dict) -> dict:
|
|
185
251
|
"""
|
|
186
252
|
IDL:get_drivers → schema + driver metadata for a device.
|
|
@@ -196,42 +262,19 @@ class RpcManager:
|
|
|
196
262
|
device_type str e.g. "pluto"
|
|
197
263
|
"""
|
|
198
264
|
if sub == "get_drivers":
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
if schema is None:
|
|
213
|
-
return {'error': map_arg('No schema available for this token (invalid token or device offline)')}
|
|
214
|
-
|
|
215
|
-
elif 'device_id' in args:
|
|
216
|
-
try:
|
|
217
|
-
gid = int(unmap_arg(args['device_id']))
|
|
218
|
-
except (ValueError, TypeError):
|
|
219
|
-
return {'error': map_arg('device_id must be an integer')}
|
|
220
|
-
schema = get_device_schema(gid)
|
|
221
|
-
if schema is None:
|
|
222
|
-
return {'error': map_arg(f'No schema available for device {gid} (offline or host device)')}
|
|
223
|
-
|
|
224
|
-
elif 'device_name' in args:
|
|
225
|
-
name = str(unmap_arg(args['device_name']))
|
|
226
|
-
gid = find_device_id_by_name(name)
|
|
227
|
-
if gid is None:
|
|
228
|
-
return {'error': map_arg(f'No device found with name {name!r}')}
|
|
229
|
-
schema = get_device_schema(gid)
|
|
230
|
-
if schema is None:
|
|
231
|
-
return {'error': map_arg(f'No schema available for device {name!r} (offline or host device)')}
|
|
232
|
-
|
|
233
|
-
else:
|
|
234
|
-
return {'error': map_arg('IDL:get_drivers requires token, device_id, or device_name')}
|
|
265
|
+
gid, err = self._resolve_idl_target(args)
|
|
266
|
+
if err is not None or gid is None:
|
|
267
|
+
return {'error': map_arg(err or 'Unable to resolve device')}
|
|
268
|
+
|
|
269
|
+
resolved = get_device_by_id(gid)
|
|
270
|
+
dev = resolved[0] if resolved is not None else None
|
|
271
|
+
|
|
272
|
+
if isinstance(dev, VirtualDevice):
|
|
273
|
+
return self._fetch_host_idl(gid=gid, dev=dev, args=args)
|
|
274
|
+
|
|
275
|
+
schema = get_device_schema(gid)
|
|
276
|
+
if schema is None:
|
|
277
|
+
return {'error': map_arg(f'No schema available for device {gid} (offline)')}
|
|
235
278
|
|
|
236
279
|
return {
|
|
237
280
|
'schema': map_arg(schema.get_idl_json()),
|
|
File without changes
|
|
File without changes
|
{remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server_testing-0.0.7 → remoterf_server_testing-0.0.10}/src/remoteRF_server/serverrf_cli.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|