qac-cli-commands #26
|
|
@ -38,16 +38,41 @@ def _cmd_detect(_args: argparse.Namespace) -> int:
|
||||||
|
|
||||||
|
|
||||||
def _cmd_register(args: argparse.Namespace) -> int:
|
def _cmd_register(args: argparse.Namespace) -> int:
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
hub_url = args.hub.rstrip("/")
|
||||||
|
url = f"{hub_url}/screens/agents/register"
|
||||||
|
body = json.dumps({"name": args.name or ""}).encode()
|
||||||
|
req = urllib.request.Request(
|
||||||
|
url,
|
||||||
|
data=body,
|
||||||
|
headers={
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-API-Key": args.api_key,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
with urllib.request.urlopen(req) as resp:
|
||||||
|
data = json.loads(resp.read())
|
||||||
|
except Exception as e:
|
||||||
|
print(f"error: registration failed: {e}", file=sys.stderr)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
agent_id = data["agent_id"]
|
||||||
|
token = data["token"]
|
||||||
|
|
||||||
cfg = _config.load()
|
cfg = _config.load()
|
||||||
cfg.hub_url = args.url
|
cfg.hub_url = hub_url
|
||||||
cfg.token = args.token
|
cfg.agent_id = agent_id
|
||||||
|
cfg.token = token
|
||||||
|
cfg.api_key = args.api_key
|
||||||
if args.name:
|
if args.name:
|
||||||
cfg.name = args.name
|
cfg.name = args.name
|
||||||
if args.agent_id:
|
|
||||||
cfg.agent_id = args.agent_id
|
|
||||||
cfg.insecure = bool(args.insecure)
|
cfg.insecure = bool(args.insecure)
|
||||||
path = _config.save(cfg)
|
path = _config.save(cfg)
|
||||||
print(f"Saved agent credentials to {path}")
|
|
||||||
|
print(f"Registered agent: {agent_id}")
|
||||||
|
print(f"Credentials saved to {path}")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -75,7 +100,7 @@ def _derive_ws_url(hub_url: str, agent_id: str) -> str:
|
||||||
base = "wss://" + base[len("https://"):]
|
base = "wss://" + base[len("https://"):]
|
||||||
elif base.startswith("http://"):
|
elif base.startswith("http://"):
|
||||||
base = "ws://" + base[len("http://"):]
|
base = "ws://" + base[len("http://"):]
|
||||||
suffix = f"/api/agent/ws/{agent_id}" if agent_id else "/api/agent/ws"
|
suffix = f"/screens/agent/ws?agent_id={agent_id}" if agent_id else "/screens/agent/ws"
|
||||||
return base + suffix
|
return base + suffix
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -93,12 +118,11 @@ def main() -> None:
|
||||||
sub.add_parser("run", help="Legacy long-poll agent (NodeAgent)")
|
sub.add_parser("run", help="Legacy long-poll agent (NodeAgent)")
|
||||||
sub.add_parser("detect", help="List available SDR drivers")
|
sub.add_parser("detect", help="List available SDR drivers")
|
||||||
|
|
||||||
p_reg = sub.add_parser("register", help="Save agent credentials to ~/.ria/agent.json")
|
p_reg = sub.add_parser("register", help="Register agent with RIA Hub and save credentials")
|
||||||
p_reg.add_argument("--url", required=True, help="RIA Hub base URL")
|
p_reg.add_argument("--hub", required=True, help="RIA Hub URL (e.g. http://whitehorse:3005)")
|
||||||
p_reg.add_argument("--token", required=True, help="Agent registration token")
|
p_reg.add_argument("--api-key", dest="api_key", required=True, help="Hub API key")
|
||||||
p_reg.add_argument("--name", default=None)
|
p_reg.add_argument("--name", default=None, help="Human-friendly agent name")
|
||||||
p_reg.add_argument("--agent-id", dest="agent_id", default=None)
|
p_reg.add_argument("--insecure", action="store_true", help="Skip TLS verification")
|
||||||
p_reg.add_argument("--insecure", action="store_true")
|
|
||||||
|
|
||||||
p_stream = sub.add_parser("stream", help="Run the WebSocket IQ streamer")
|
p_stream = sub.add_parser("stream", help="Run the WebSocket IQ streamer")
|
||||||
p_stream.add_argument("--url", default=None, help="Override WebSocket URL")
|
p_stream.add_argument("--url", default=None, help="Override WebSocket URL")
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ class AgentConfig:
|
||||||
token: str = ""
|
token: str = ""
|
||||||
name: str = ""
|
name: str = ""
|
||||||
insecure: bool = False
|
insecure: bool = False
|
||||||
|
api_key: str = ""
|
||||||
extra: dict = field(default_factory=dict)
|
extra: dict = field(default_factory=dict)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -48,6 +49,7 @@ def load(path: Path | None = None) -> AgentConfig:
|
||||||
token=data.get("token", ""),
|
token=data.get("token", ""),
|
||||||
name=data.get("name", ""),
|
name=data.get("name", ""),
|
||||||
insecure=bool(data.get("insecure", False)),
|
insecure=bool(data.get("insecure", False)),
|
||||||
|
api_key=data.get("api_key", ""),
|
||||||
extra=extra,
|
extra=extra,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user