mirror of
https://github.com/netbirdio/netbird.git
synced 2026-09-28 01:29:05 +02:00
Adds the account-scoped agent-network module: provider/policy/budget CRUD and store, the reverse-proxy service synthesizer, policy selection + limit enforcement, the provider catalog (incl. Vertex AI and AWS Bedrock entries), and the management HTTP + proxy gRPC surfaces.
54 lines
1.6 KiB
Go
54 lines
1.6 KiB
Go
package agentnetwork
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
|
|
"github.com/netbirdio/netbird/management/server/agentnetwork/types"
|
|
nbcontext "github.com/netbirdio/netbird/management/server/context"
|
|
"github.com/netbirdio/netbird/shared/management/http/api"
|
|
"github.com/netbirdio/netbird/shared/management/http/util"
|
|
)
|
|
|
|
// addConsumptionEndpoints registers the read-only Agent Network
|
|
// consumption listing — backs the dashboard's basic counter view.
|
|
func (h *handler) addConsumptionEndpoints(router *mux.Router) {
|
|
router.HandleFunc("/agent-network/consumption", h.listConsumption).Methods("GET", "OPTIONS")
|
|
}
|
|
|
|
func (h *handler) listConsumption(w http.ResponseWriter, r *http.Request) {
|
|
userAuth, err := nbcontext.GetUserAuthFromContext(r.Context())
|
|
if err != nil {
|
|
util.WriteError(r.Context(), err, w)
|
|
return
|
|
}
|
|
|
|
rows, err := h.manager.ListConsumption(r.Context(), userAuth.AccountId, userAuth.UserId)
|
|
if err != nil {
|
|
util.WriteError(r.Context(), err, w)
|
|
return
|
|
}
|
|
|
|
out := make([]api.AgentNetworkConsumption, 0, len(rows))
|
|
for _, row := range rows {
|
|
out = append(out, consumptionToAPI(row))
|
|
}
|
|
util.WriteJSONObject(r.Context(), w, out)
|
|
}
|
|
|
|
func consumptionToAPI(c *types.Consumption) api.AgentNetworkConsumption {
|
|
windowStart := c.WindowStartUTC
|
|
updatedAt := c.UpdatedAt
|
|
return api.AgentNetworkConsumption{
|
|
DimensionKind: api.AgentNetworkConsumptionDimensionKind(c.DimensionKind),
|
|
DimensionId: c.DimensionID,
|
|
WindowSeconds: c.WindowSeconds,
|
|
WindowStartUtc: windowStart,
|
|
TokensInput: c.TokensInput,
|
|
TokensOutput: c.TokensOutput,
|
|
CostUsd: c.CostUSD,
|
|
UpdatedAt: &updatedAt,
|
|
}
|
|
}
|