agent: complete plan05 closeout
This commit is contained in:
parent
33ba248c49
commit
2f0fffa905
12 changed files with 1347 additions and 313 deletions
|
|
@ -106,14 +106,11 @@ def _parse_args() -> argparse.Namespace:
|
|||
subparsers.add_parser("slots", help="List slots")
|
||||
subparsers.add_parser("reservations", help="List reservations")
|
||||
|
||||
parser_drain = subparsers.add_parser("drain", help="Drain a slot (not implemented)")
|
||||
parser_drain = subparsers.add_parser("drain", help="Drain a slot")
|
||||
parser_drain.add_argument("slot_id")
|
||||
parser_unq = subparsers.add_parser(
|
||||
"unquarantine",
|
||||
help="Unquarantine a slot (not implemented)",
|
||||
)
|
||||
parser_unq = subparsers.add_parser("unquarantine", help="Unquarantine a slot")
|
||||
parser_unq.add_argument("slot_id")
|
||||
subparsers.add_parser("reconcile-now", help="Run reconciler now (not implemented)")
|
||||
subparsers.add_parser("reconcile-now", help="Trigger immediate reconcile tick")
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
|
|
@ -130,19 +127,31 @@ def main() -> None:
|
|||
if not args.command:
|
||||
raise SystemExit(1)
|
||||
|
||||
if args.command in {"drain", "unquarantine", "reconcile-now"}:
|
||||
print(f"{args.command}: not yet implemented in API v1")
|
||||
raise SystemExit(0)
|
||||
|
||||
endpoint_map = {
|
||||
"status": "/v1/state/summary",
|
||||
"slots": "/v1/slots",
|
||||
"reservations": "/v1/reservations",
|
||||
}
|
||||
path = endpoint_map[args.command]
|
||||
method = "GET"
|
||||
path = ""
|
||||
body: dict[str, Any] | None = None
|
||||
if args.command == "status":
|
||||
path = "/v1/state/summary"
|
||||
elif args.command == "slots":
|
||||
path = "/v1/slots"
|
||||
elif args.command == "reservations":
|
||||
path = "/v1/reservations"
|
||||
elif args.command == "drain":
|
||||
method = "POST"
|
||||
path = "/v1/admin/drain"
|
||||
body = {"slot_id": args.slot_id}
|
||||
elif args.command == "unquarantine":
|
||||
method = "POST"
|
||||
path = "/v1/admin/unquarantine"
|
||||
body = {"slot_id": args.slot_id}
|
||||
elif args.command == "reconcile-now":
|
||||
method = "POST"
|
||||
path = "/v1/admin/reconcile-now"
|
||||
else:
|
||||
raise SystemExit(1)
|
||||
|
||||
try:
|
||||
status, data = _uds_request(args.socket, "GET", path)
|
||||
status, data = _uds_request(args.socket, method, path, body=body)
|
||||
except OSError as err:
|
||||
print(f"Error: cannot connect to daemon at {args.socket}")
|
||||
raise SystemExit(1) from err
|
||||
|
|
@ -151,7 +160,7 @@ def main() -> None:
|
|||
_print_error(data)
|
||||
raise SystemExit(1)
|
||||
|
||||
if args.command == "status":
|
||||
if args.command in {"status", "drain", "unquarantine", "reconcile-now"}:
|
||||
print(json.dumps(data, indent=2))
|
||||
elif args.command == "slots":
|
||||
if isinstance(data, list):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue