add endpoint to manually trigger inventory collection
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-01-15 16:37:58 +11:00
parent e5e5be37a3
commit 2ea0f937c5
6 changed files with 204 additions and 2 deletions

View File

@@ -647,6 +647,59 @@ const docTemplate = `{
}
}
},
"/api/snapshots/hourly/force": {
"post": {
"description": "Manually trigger an hourly snapshot for all configured vCenters. Requires confirmation text to avoid accidental execution.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"snapshots"
],
"summary": "Trigger hourly snapshot (manual)",
"parameters": [
{
"type": "string",
"description": "Confirmation text; must be 'FORCE'",
"name": "confirm",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "Snapshot started",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Server error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/snapshots/migrate": {
"post": {
"description": "Rebuilds the snapshot registry from existing tables and renames hourly tables to epoch-based names.",

View File

@@ -636,6 +636,59 @@
}
}
},
"/api/snapshots/hourly/force": {
"post": {
"description": "Manually trigger an hourly snapshot for all configured vCenters. Requires confirmation text to avoid accidental execution.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"snapshots"
],
"summary": "Trigger hourly snapshot (manual)",
"parameters": [
{
"type": "string",
"description": "Confirmation text; must be 'FORCE'",
"name": "confirm",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "Snapshot started",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"500": {
"description": "Server error",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/api/snapshots/migrate": {
"post": {
"description": "Rebuilds the snapshot registry from existing tables and renames hourly tables to epoch-based names.",

View File

@@ -580,6 +580,42 @@ paths:
summary: Force snapshot aggregation
tags:
- snapshots
/api/snapshots/hourly/force:
post:
consumes:
- application/json
description: Manually trigger an hourly snapshot for all configured vCenters.
Requires confirmation text to avoid accidental execution.
parameters:
- description: Confirmation text; must be 'FORCE'
in: query
name: confirm
required: true
type: string
produces:
- application/json
responses:
"200":
description: Snapshot started
schema:
additionalProperties:
type: string
type: object
"400":
description: Invalid request
schema:
additionalProperties:
type: string
type: object
"500":
description: Server error
schema:
additionalProperties:
type: string
type: object
summary: Trigger hourly snapshot (manual)
tags:
- snapshots
/api/snapshots/migrate:
post:
description: Rebuilds the snapshot registry from existing tables and renames

View File

@@ -63,6 +63,7 @@ func New(logger *slog.Logger, database db.Database, buildTime string, sha1ver st
mux.HandleFunc("/api/report/updates", h.UpdateReportDownload)
mux.HandleFunc("/api/report/snapshot", h.SnapshotReportDownload)
mux.HandleFunc("/api/snapshots/aggregate", h.SnapshotAggregateForce)
mux.HandleFunc("/api/snapshots/hourly/force", h.SnapshotForceHourly)
mux.HandleFunc("/api/snapshots/migrate", h.SnapshotMigrate)
mux.HandleFunc("/api/snapshots/regenerate-hourly-reports", h.SnapshotRegenerateHourlyReports)
mux.HandleFunc("/metrics", h.Metrics)