remoteRF-server 1.7.3__tar.gz → 1.7.4__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.
Files changed (200) hide show
  1. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/PKG-INFO +1 -1
  2. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/pyproject.toml +1 -1
  3. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/cluster.py +11 -2
  4. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server.egg-info/PKG-INFO +1 -1
  5. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_global_home.py +15 -0
  6. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/LICENSE +0 -0
  7. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/README.md +0 -0
  8. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/setup.cfg +0 -0
  9. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/__init__.py +0 -0
  10. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/__init__.py +0 -0
  11. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/__init__.py +0 -0
  12. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/deployment_capabilities.proto +0 -0
  13. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/deployment_capabilities_pb2.py +0 -0
  14. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/deployment_capabilities_pb2_grpc.py +0 -0
  15. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/federation.proto +0 -0
  16. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/federation_pb2.py +0 -0
  17. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/federation_pb2_grpc.py +0 -0
  18. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/grpc_host_pb2.py +0 -0
  19. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/grpc_host_pb2_grpc.py +0 -0
  20. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/grpc_pb2.py +0 -0
  21. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/grpc_pb2_grpc.py +0 -0
  22. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/grpc/v2_codec.py +0 -0
  23. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/idl/__init__.py +0 -0
  24. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/idl/device_schema.py +0 -0
  25. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/idl/pluto_mimo_schema.py +0 -0
  26. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/idl/pluto_schema.py +0 -0
  27. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/idl/schema.py +0 -0
  28. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/idl/v2.py +0 -0
  29. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/utils/__init__.py +0 -0
  30. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/utils/ansi_codes.py +0 -0
  31. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/utils/api_token.py +0 -0
  32. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/utils/db_connection.py +0 -0
  33. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/utils/db_location.py +0 -0
  34. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/utils/list_string.py +0 -0
  35. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/utils/panel.py +0 -0
  36. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/common/utils/process_arg.py +0 -0
  37. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/__init__.py +0 -0
  38. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/adalm_pluto/__init__.py +0 -0
  39. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/adalm_pluto/pluto_diag.py +0 -0
  40. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/adalm_pluto/pluto_mimo_schema.py +0 -0
  41. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/adalm_pluto/pluto_remote_server.py +0 -0
  42. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/adalm_pluto/pluto_schema.py +0 -0
  43. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/adalm_pluto/poe.py +0 -0
  44. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/bluetooth_diag.py +0 -0
  45. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/gps_diag.py +0 -0
  46. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/hackrf/__init__.py +0 -0
  47. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/hackrf/hackrf_schema.py +0 -0
  48. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/rtl_sdr/__init__.py +0 -0
  49. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/rtl_sdr/rtl_sdr_diag.py +0 -0
  50. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/rtl_sdr/rtl_sdr_schema.py +0 -0
  51. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/ti_mmwave/__init__.py +0 -0
  52. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/ti_mmwave/ti_mmwave_schema.py +0 -0
  53. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/usrp/__init__.py +0 -0
  54. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/usrp/policy.py +0 -0
  55. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/usrp/profiles.py +0 -0
  56. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/usrp/uhd_manifest.py +0 -0
  57. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/usrp/usrp_diag.py +0 -0
  58. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/usrp/usrp_schema.py +0 -0
  59. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/usrp_phaser/__init__.py +0 -0
  60. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/drivers/usrp_phaser/usrp_phaser_schema.py +0 -0
  61. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/host/__init__.py +0 -0
  62. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/host/host_auth_token.py +0 -0
  63. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/host/host_directory_store.py +0 -0
  64. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/host/host_tunnel_server.py +0 -0
  65. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/remote_admin_shell.py +0 -0
  66. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/__init__.py +0 -0
  67. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/acc_perms.py +0 -0
  68. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/cert_provider.py +0 -0
  69. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/commands.py +0 -0
  70. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/console.py +0 -0
  71. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/control.py +0 -0
  72. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/deployment/__init__.py +0 -0
  73. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/deployment/capabilities.py +0 -0
  74. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/device_manager.py +0 -0
  75. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/diag.py +0 -0
  76. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/direct_path.py +0 -0
  77. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/dynamic_v2.py +0 -0
  78. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/dynamic_v2_bridge.py +0 -0
  79. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/__init__.py +0 -0
  80. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/admin.py +0 -0
  81. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/cli.py +0 -0
  82. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/contracts.py +0 -0
  83. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/destination.py +0 -0
  84. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/devices.py +0 -0
  85. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/enrollment.py +0 -0
  86. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/global_home.py +0 -0
  87. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/home.py +0 -0
  88. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/home_devices.py +0 -0
  89. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/identity.py +0 -0
  90. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/legacy_state.py +0 -0
  91. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/links.py +0 -0
  92. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/migrations.py +0 -0
  93. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/peers.py +0 -0
  94. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/permissions.py +0 -0
  95. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/principals.py +0 -0
  96. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/runtime.py +0 -0
  97. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/federation/trust.py +0 -0
  98. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/global_onboarding.py +0 -0
  99. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/grpc_server.py +0 -0
  100. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/host_direct.py +0 -0
  101. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/host_dynamic_v2.py +0 -0
  102. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/remote_admin.py +0 -0
  103. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/remote_admin_ssh.py +0 -0
  104. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/reservation.py +0 -0
  105. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/rpc_manager.py +0 -0
  106. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/schema_registry.py +0 -0
  107. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/startup_check.py +0 -0
  108. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/user_group_cli.py +0 -0
  109. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/user_group_handler.py +0 -0
  110. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/server/v2_errors.py +0 -0
  111. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/serverrf_cli.py +0 -0
  112. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/tools/__init__.py +0 -0
  113. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/tools/gen_certs.py +0 -0
  114. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/tools/gist_status.py +0 -0
  115. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/tools/gist_status_testing.py +0 -0
  116. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server/tools/introspect_uhd.py +0 -0
  117. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server.egg-info/SOURCES.txt +0 -0
  118. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server.egg-info/dependency_links.txt +0 -0
  119. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server.egg-info/entry_points.txt +0 -0
  120. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server.egg-info/requires.txt +0 -0
  121. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/src/remoteRF_server.egg-info/top_level.txt +0 -0
  122. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_account_hardening.py +0 -0
  123. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_account_names.py +0 -0
  124. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_account_removal.py +0 -0
  125. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_activity_log.py +0 -0
  126. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_availability.py +0 -0
  127. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_bind_host.py +0 -0
  128. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_cert_provider.py +0 -0
  129. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_client_sessions.py +0 -0
  130. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_cluster.py +0 -0
  131. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_commands.py +0 -0
  132. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_console.py +0 -0
  133. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_contrib_drivers.py +0 -0
  134. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_default_rtl_sdr_schema.py +0 -0
  135. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_default_usrp_schema.py +0 -0
  136. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_deployment_capabilities.py +0 -0
  137. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_detached_device_rpc.py +0 -0
  138. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_device_core_aliases.py +0 -0
  139. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_device_handles.py +0 -0
  140. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_device_init.py +0 -0
  141. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_devices_add_wizard.py +0 -0
  142. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_devices_list.py +0 -0
  143. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_diag.py +0 -0
  144. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_direct_fixed_port.py +0 -0
  145. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_direct_path_server.py +0 -0
  146. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_dynamic_v2.py +0 -0
  147. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_federated_direct_path.py +0 -0
  148. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_federated_dynamic_v2.py +0 -0
  149. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_federation_edges.py +0 -0
  150. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_first_run.py +0 -0
  151. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_gate_d_contracts.py +0 -0
  152. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_gate_e_federation.py +0 -0
  153. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_gate_e_proto.py +0 -0
  154. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_gate_f_enrollment.py +0 -0
  155. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_gate_g1_logging.py +0 -0
  156. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_gate_g_permissions.py +0 -0
  157. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_gate_h_devices.py +0 -0
  158. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_gate_i_direct_path.py +0 -0
  159. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_gen_certs.py +0 -0
  160. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_global_accounts_migration.py +0 -0
  161. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_global_onboarding.py +0 -0
  162. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_global_v1_disposal.py +0 -0
  163. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_hackrf_schema.py +0 -0
  164. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_home_device_plane.py +0 -0
  165. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_host_direct.py +0 -0
  166. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_host_directory_store.py +0 -0
  167. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_host_dynamic_v2.py +0 -0
  168. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_idl_schema.py +0 -0
  169. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_lab_logins.py +0 -0
  170. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_panel.py +0 -0
  171. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_peer_transport.py +0 -0
  172. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_pluto_compat.py +0 -0
  173. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_pluto_poe.py +0 -0
  174. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_process_arg.py +0 -0
  175. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_proxy_lifecycle.py +0 -0
  176. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_remote_admin.py +0 -0
  177. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_reservation_handoff.py +0 -0
  178. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_reservation_policy_b.py +0 -0
  179. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_reservation_timestamps.py +0 -0
  180. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_rpc_manager_batch.py +0 -0
  181. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_rpc_manager_calln.py +0 -0
  182. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_rpc_manager_host_legacy.py +0 -0
  183. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_rpc_manager_rx_n.py +0 -0
  184. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_rtl_sdr_schema.py +0 -0
  185. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_schema_registry.py +0 -0
  186. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_soak_federation.py +0 -0
  187. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_startup_check.py +0 -0
  188. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_status_push.py +0 -0
  189. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_ti_mmwave_hardware.py +0 -0
  190. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_ti_mmwave_schema.py +0 -0
  191. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_user_group_cli.py +0 -0
  192. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_usrp_b205mini_uhd410_hardware.py +0 -0
  193. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_usrp_client_server_hardware.py +0 -0
  194. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_usrp_client_server_localhost.py +0 -0
  195. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_usrp_n210_client_server_hardware.py +0 -0
  196. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_usrp_preload.py +0 -0
  197. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_usrp_profiles.py +0 -0
  198. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_usrp_remoterf_rx_hardware.py +0 -0
  199. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_usrp_uhd410_hardware.py +0 -0
  200. {remoterf_server-1.7.3 → remoterf_server-1.7.4}/tests/test_wipe.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remoteRF-server
3
- Version: 1.7.3
3
+ Version: 1.7.4
4
4
  Summary: RemoteRF server-side control package
5
5
  License: GPL-3.0-or-later
6
6
  Classifier: Programming Language :: Python :: 3
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "remoteRF-server"
7
- version = "1.7.3"
7
+ version = "1.7.4"
8
8
  description = "RemoteRF server-side control package"
9
9
  license = { text = "GPL-3.0-or-later" }
10
10
  requires-python = ">=3.10"
@@ -1303,13 +1303,22 @@ def _walk_in(pools: list[dict], notify) -> None:
1303
1303
  active. Any other open door (an older lab's own) is ignored."""
1304
1304
  from . import global_home
1305
1305
 
1306
- if GLOBAL in load():
1307
- return
1308
1306
  state = global_home.load()
1309
1307
  home = (state.get("identity") or {}).get("deployment_id")
1310
1308
  party = state.get("party") or {}
1309
+ clusters = load()
1310
+ if GLOBAL in clusters and (clusters[GLOBAL].get("peer") == home or not home):
1311
+ return
1311
1312
  if not home or party.get("state") != "active":
1312
1313
  return
1314
+ if GLOBAL in clusters:
1315
+ # Joined under an earlier Global home (this lab's state outlived a Global
1316
+ # reset): drop it and rejoin the current one, keeping what it shared.
1317
+ stale = clusters.pop(GLOBAL)
1318
+ queued = state.setdefault("public_groups", [])
1319
+ queued += [group_id for group_id in stale.get("groups", []) if group_id not in queued]
1320
+ save(clusters)
1321
+ global_home.save(state)
1313
1322
  for pool in pools:
1314
1323
  owner = (pool.get("owner") or {}).get("identity") or {}
1315
1324
  if pool.get("cluster_name") != GLOBAL or owner.get("deployment_id") != home:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remoteRF-server
3
- Version: 1.7.3
3
+ Version: 1.7.4
4
4
  Summary: RemoteRF server-side control package
5
5
  License: GPL-3.0-or-later
6
6
  Classifier: Programming Language :: Python :: 3
@@ -81,6 +81,21 @@ class GlobalHomeContractTests(unittest.TestCase):
81
81
  self.assertEqual([c["contract_id"] for c in self.broker.call("GET", "/v2/broker/contracts")["contracts"]],
82
82
  [party["contract_id"]])
83
83
 
84
+ def test_a_global_cluster_joined_under_an_earlier_home_is_rejoined_with_its_groups(self):
85
+ with self.server(H):
86
+ home_identity = cluster._identity()
87
+ cluster._public_note(cluster.GLOBAL, "open")
88
+ self._standing(B, home_identity)
89
+ with self.server(B):
90
+ # State from before a Global reset: the cluster names a home that is gone.
91
+ cluster.save({cluster.GLOBAL: {"role": "member", "state": "active", "public": True, "peer": C,
92
+ "contract_id": "8a2e3f10-0000-4000-8000-0000000000ff",
93
+ "published": [], "groups": [7]}})
94
+ cluster.tick(self.notes.append)
95
+ item = cluster.load()[cluster.GLOBAL]
96
+ self.assertEqual((item["peer"], item["contract_id"], item["groups"]), (H, global_home.contract_id(), [7]))
97
+ self.assertNotIn("public_groups", global_home.load())
98
+
84
99
  def _standing(self, lab, home_identity):
85
100
  """The lab proposes its standing contract; the home accepts; the lab sees it active."""
86
101
  with self.server(lab), mock.patch.object(global_home, "fetch_identity", return_value=home_identity):
File without changes