59 lines
2.5 KiB
Python
59 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Open Notebook API setup helper — reads .env vars, drives provider setup."""
|
|
import json, os, sys, urllib.request
|
|
|
|
BASE = os.environ.get("ON_BASE", "http://72.62.251.51:5055")
|
|
PW = os.environ.get("ON_PW", "UltimaHub2026!Notes")
|
|
|
|
def call(method, path, body=None, timeout=90):
|
|
req = urllib.request.Request(BASE + path, method=method)
|
|
req.add_header("Authorization", "Bearer " + PW)
|
|
req.add_header("Content-Type", "application/json")
|
|
data = json.dumps(body).encode() if body is not None else None
|
|
try:
|
|
with urllib.request.urlopen(req, data=data, timeout=timeout) as r:
|
|
return r.status, json.loads(r.read().decode())
|
|
except urllib.error.HTTPError as e:
|
|
try:
|
|
return e.code, json.loads(e.read().decode())
|
|
except Exception:
|
|
return e.code, e.read().decode()[:300]
|
|
except Exception as e:
|
|
return -1, str(e)
|
|
|
|
if __name__ == "__main__":
|
|
cmd = sys.argv[1]
|
|
if cmd == "creds":
|
|
print(json.dumps(call("GET", "/api/credentials")[1], indent=1))
|
|
elif cmd == "discover":
|
|
s, r = call("POST", f"/api/credentials/{sys.argv[2]}/discover")
|
|
print("discover:", s, json.dumps(r)[:800])
|
|
elif cmd == "register":
|
|
s, r = call("POST", f"/api/credentials/{sys.argv[2]}/register-models")
|
|
print("register:", s, json.dumps(r)[:800])
|
|
elif cmd == "add-creds":
|
|
body = {"provider": sys.argv[2], "name": sys.argv[3]}
|
|
if len(sys.argv) > 4 and sys.argv[4]:
|
|
body["api_key"] = sys.argv[4]
|
|
if len(sys.argv) > 5 and sys.argv[5]:
|
|
body["base_url"] = sys.argv[5]
|
|
s, r = call("POST", "/api/credentials", body)
|
|
print("add:", s, json.dumps(r)[:800])
|
|
elif cmd == "autoassign":
|
|
s, r = call("POST", "/api/models/auto-assign")
|
|
print("auto-assign:", s, json.dumps(r)[:800])
|
|
elif cmd == "post":
|
|
path = sys.argv[2]
|
|
body = json.loads(sys.argv[3]) if len(sys.argv) > 3 else None
|
|
s, r = call("POST", path, body)
|
|
print(s, json.dumps(r)[:900])
|
|
elif cmd == "defaults":
|
|
print(json.dumps(call("GET", "/api/models/defaults")[1], indent=1))
|
|
elif cmd == "models":
|
|
s, r = call("GET", "/api/models")
|
|
print("models:", s)
|
|
for m in (r if isinstance(r, list) else r.get("models", []))[:40]:
|
|
print(" -", m.get("provider"), "|", m.get("model_id") or m.get("id"), "|", m.get("modality"), "| enabled:", m.get("enabled"))
|
|
elif cmd == "providers":
|
|
print(json.dumps(call("GET", "/api/models/providers")[1], indent=1)[:900])
|