network/preseem/main.go
2026-07-19 14:42:02 -05:00

85 lines
1.9 KiB
Go

package main
import (
"fmt"
"os"
)
func usage() {
fmt.Fprint(os.Stderr, `preseem - CLI for the Preseem Model API at $PRESEEM_URL (default `+defaultBaseURL+`)
Auth: export PRESEEM_KEY=<api key> (HTTP Basic, key as username, empty password)
Resources (read-only):
accounts list | get <id>
ap list | get <id> (access points)
ap-config get <id>
ap-scores
cpe-scores
packages list | get <id>
services list | get <id>
routers list | get <id>
olts list | get <id>
sites list | get <id>
Write operations:
clear-services [--dry-run | --confirm] [--account <id>]
delete all services (MACs) from all accounts
--dry-run: preview only; --confirm: actually delete
--account: limit to a single account ID
Common flags:
list: [--json] [--page N] [--limit 100..1000]
(no --page = auto-paginate; --json + auto = merged data envelope)
get: [--json]
Examples:
preseem accounts list
preseem ap list --json | jq '.data[].name'
preseem ap get 123
preseem ap-scores
preseem sites list --page 1 --limit 100
`)
}
func main() {
if len(os.Args) < 2 {
usage()
os.Exit(2)
}
var err error
switch os.Args[1] {
case "accounts":
err = cmdAccounts(os.Args[2:])
case "ap":
err = cmdAP(os.Args[2:])
case "ap-config":
err = cmdAPConfig(os.Args[2:])
case "ap-scores":
err = cmdAPScores(os.Args[2:])
case "cpe-scores":
err = cmdCPEScores(os.Args[2:])
case "packages":
err = cmdPackages(os.Args[2:])
case "services":
err = cmdServices(os.Args[2:])
case "routers":
err = cmdRouters(os.Args[2:])
case "olts":
err = cmdOLTs(os.Args[2:])
case "sites":
err = cmdSites(os.Args[2:])
case "clear-services":
err = cmdClearServices(os.Args[2:])
case "-h", "--help", "help":
usage()
return
default:
usage()
os.Exit(2)
}
if err != nil {
fmt.Fprintln(os.Stderr, "error:", err)
os.Exit(1)
}
}