32 lines
849 B
Go
32 lines
849 B
Go
package daemon
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"time"
|
|
|
|
"git.cloudinit.dev/coreci/orca/internal/model"
|
|
"git.cloudinit.dev/coreci/orca/internal/store"
|
|
)
|
|
|
|
// handleNodesCollection handles /v1/nodes (GET only in v0.1).
|
|
// Node registration is CLI-only; the API is read-only for observability.
|
|
func (s *Server) handleNodesCollection(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodGet {
|
|
writeError(w, http.StatusMethodNotAllowed, "method not allowed")
|
|
return
|
|
}
|
|
ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second)
|
|
defer cancel()
|
|
|
|
nodes, err := store.NewNodeRepo(s.db).List(ctx)
|
|
if err != nil {
|
|
writeError(w, http.StatusInternalServerError, "failed to list nodes")
|
|
return
|
|
}
|
|
if nodes == nil {
|
|
nodes = []*model.Node{}
|
|
}
|
|
writeJSON(w, http.StatusOK, map[string]any{"nodes": nodes, "count": len(nodes)})
|
|
}
|