mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
committed by
GitHub
parent
f3c707648c
commit
6fd9975aed
@ -167,6 +167,7 @@ func New(ctx context.Context, options *Options) (_ *API, err error) {
|
||||
)
|
||||
r.Get("/coordinate", api.workspaceProxyCoordinate)
|
||||
r.Post("/issue-signed-app-token", api.workspaceProxyIssueSignedAppToken)
|
||||
r.Post("/app-stats", api.workspaceProxyReportAppStats)
|
||||
r.Post("/register", api.workspaceProxyRegister)
|
||||
r.Post("/deregister", api.workspaceProxyDeregister)
|
||||
})
|
||||
|
@ -110,6 +110,10 @@ func NewWorkspaceProxy(t *testing.T, coderdAPI *coderd.API, owner *codersdk.Clie
|
||||
})
|
||||
require.NoError(t, err, "failed to create workspace proxy")
|
||||
|
||||
// Inherit collector options from coderd, but keep the wsproxy reporter.
|
||||
statsCollectorOptions := coderdAPI.Options.WorkspaceAppsStatsCollectorOptions
|
||||
statsCollectorOptions.Reporter = nil
|
||||
|
||||
wssrv, err := wsproxy.New(ctx, &wsproxy.Options{
|
||||
Logger: slogtest.Make(t, nil).Leveled(slog.LevelDebug),
|
||||
Experiments: options.Experiments,
|
||||
@ -129,6 +133,7 @@ func NewWorkspaceProxy(t *testing.T, coderdAPI *coderd.API, owner *codersdk.Clie
|
||||
DERPEnabled: !options.DerpDisabled,
|
||||
DERPOnly: options.DerpOnly,
|
||||
DERPServerRelayAddress: accessURL.String(),
|
||||
StatsCollectorOptions: statsCollectorOptions,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() {
|
||||
|
@ -497,6 +497,36 @@ func (api *API) workspaceProxyIssueSignedAppToken(rw http.ResponseWriter, r *htt
|
||||
})
|
||||
}
|
||||
|
||||
// @Summary Report workspace app stats
|
||||
// @ID report-workspace-app-stats
|
||||
// @Security CoderSessionToken
|
||||
// @Accept json
|
||||
// @Tags Enterprise
|
||||
// @Param request body wsproxysdk.ReportAppStatsRequest true "Report app stats request"
|
||||
// @Success 204
|
||||
// @Router /workspaceproxies/me/app-stats [post]
|
||||
// @x-apidocgen {"skip": true}
|
||||
func (api *API) workspaceProxyReportAppStats(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
_ = httpmw.WorkspaceProxy(r) // Ensure the proxy is authenticated.
|
||||
|
||||
var req wsproxysdk.ReportAppStatsRequest
|
||||
if !httpapi.Read(ctx, rw, r, &req) {
|
||||
return
|
||||
}
|
||||
|
||||
api.Logger.Debug(ctx, "report app stats", slog.F("stats", req.Stats))
|
||||
|
||||
reporter := api.WorkspaceAppsStatsCollectorOptions.Reporter
|
||||
if err := reporter.Report(ctx, req.Stats); err != nil {
|
||||
api.Logger.Error(ctx, "report app stats failed", slog.Error(err))
|
||||
httpapi.InternalServerError(rw, err)
|
||||
return
|
||||
}
|
||||
|
||||
httpapi.Write(ctx, rw, http.StatusNoContent, nil)
|
||||
}
|
||||
|
||||
// workspaceProxyRegister is used to register a new workspace proxy. When a proxy
|
||||
// comes online, it will announce itself to this endpoint. This updates its values
|
||||
// in the database and returns a signed token that can be used to authenticate
|
||||
|
Reference in New Issue
Block a user