remoteRF-server 0.1.96__tar.gz → 0.1.97__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-0.1.96 → remoterf_server-0.1.97}/PKG-INFO +1 -1
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/pyproject.toml +1 -1
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/device_manager.py +39 -12
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server.egg-info/PKG-INFO +1 -1
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/README.md +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/setup.cfg +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/__init__.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/__init__.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/grpc/__init__.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/grpc/grpc_host_pb2.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/grpc/grpc_host_pb2_grpc.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/grpc/grpc_pb2.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/grpc/grpc_pb2_grpc.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/__init__.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/ansi_codes.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/api_token.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/db_connection.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/db_location.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/list_string.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/process_arg.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/drivers/__init__.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/drivers/adalm_pluto/__init__.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/drivers/adalm_pluto/pluto_remote_server.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/host/__init__.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/host/host_directory_store.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/host/host_tunnel_server.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/__init__.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/acc_perms.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/cert_provider.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/grpc_server.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/reservation.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/rpc_manager.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/user_group_cli.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/user_group_handler.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/serverrf_cli.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/tools/__init__.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/tools/gen_certs.py +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server.egg-info/SOURCES.txt +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server.egg-info/dependency_links.txt +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server.egg-info/entry_points.txt +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server.egg-info/requires.txt +0 -0
- {remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server.egg-info/top_level.txt +0 -0
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/device_manager.py
RENAMED
|
@@ -212,34 +212,61 @@ def _local_devices_str_snapshot() -> Dict[int, str]:
|
|
|
212
212
|
out[int(gid)] = f"{name} [{', '.join(meta_parts)}] ({status})"
|
|
213
213
|
return out
|
|
214
214
|
|
|
215
|
-
|
|
216
215
|
def _host_devices_str_snapshot() -> Dict[int, str]:
|
|
217
|
-
_sync_host_devices(
|
|
218
|
-
|
|
216
|
+
_sync_host_devices() # ensure host devices are up-to-date before snapshot
|
|
219
217
|
reg = _get_host_registry()
|
|
220
218
|
if reg is None:
|
|
221
219
|
return {}
|
|
222
220
|
|
|
223
|
-
snap = reg.device_directory_cached(ttl_ms=0)
|
|
221
|
+
snap = reg.device_directory_cached(ttl_ms=0) # device_id -> (host_id, info_obj, is_active)
|
|
222
|
+
|
|
223
|
+
try:
|
|
224
|
+
status_map = reg.list_devices() # device_id -> DeviceStatus
|
|
225
|
+
except Exception:
|
|
226
|
+
status_map = {}
|
|
227
|
+
|
|
228
|
+
now_ms = int(time.time() * 1000)
|
|
224
229
|
|
|
225
230
|
out: Dict[int, str] = {}
|
|
226
231
|
for device_id, (host_id, info_obj, is_active) in snap.items():
|
|
232
|
+
# Prefer numeric device_id (old world), otherwise fall back to local_id (compat/UI key).
|
|
227
233
|
try:
|
|
228
234
|
gid = int(str(device_id))
|
|
229
235
|
except Exception:
|
|
230
|
-
|
|
236
|
+
try:
|
|
237
|
+
gid = int(getattr(info_obj, "local_id", 0) or 0)
|
|
238
|
+
except Exception:
|
|
239
|
+
continue
|
|
240
|
+
if gid <= 0:
|
|
241
|
+
continue
|
|
231
242
|
|
|
243
|
+
local_id = int(getattr(info_obj, "local_id", 0) or 0)
|
|
232
244
|
label = str(getattr(info_obj, "label", "") or "").strip()
|
|
245
|
+
serial = str(getattr(info_obj, "serial", "") or "").strip()
|
|
246
|
+
kind = str(getattr(info_obj, "kind", "") or "").strip()
|
|
247
|
+
|
|
233
248
|
status = "online" if bool(is_active) else "offline"
|
|
234
249
|
name = label or f"host-device-{gid}"
|
|
235
250
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
251
|
+
last_seen = ""
|
|
252
|
+
ds = status_map.get(str(device_id))
|
|
253
|
+
if ds is not None:
|
|
254
|
+
try:
|
|
255
|
+
ls = int(getattr(ds, "last_seen_ms", 0) or 0)
|
|
256
|
+
if ls > 0:
|
|
257
|
+
age_s = max(0, (now_ms - ls) // 1000)
|
|
258
|
+
last_seen = f", seen={age_s}s ago"
|
|
259
|
+
except Exception:
|
|
260
|
+
pass
|
|
261
|
+
|
|
262
|
+
out[gid] = (
|
|
263
|
+
f"{name} "
|
|
264
|
+
f"[host={host_id}, local_id={local_id}"
|
|
265
|
+
f"{', kind=' + kind if kind else ''}"
|
|
266
|
+
f"{', serial=' + serial if serial else ''}"
|
|
267
|
+
f"{last_seen}"
|
|
268
|
+
f"] ({status})"
|
|
269
|
+
)
|
|
243
270
|
|
|
244
271
|
return out
|
|
245
272
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/grpc/__init__.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/grpc/grpc_host_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/grpc/grpc_pb2.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/grpc/grpc_pb2_grpc.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/__init__.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/ansi_codes.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/api_token.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/db_connection.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/db_location.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/list_string.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/common/utils/process_arg.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/host/host_directory_store.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/host/host_tunnel_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/cert_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/user_group_cli.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server/server/user_group_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.96 → remoterf_server-0.1.97}/src/remoteRF_server.egg-info/top_level.txt
RENAMED
|
File without changes
|