add more documentation
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
21
README.md
21
README.md
@@ -10,6 +10,19 @@ vCTP is a vSphere Chargeback Tracking Platform, designed for a specific customer
|
|||||||
- Snapshots/aggregations: `vctp_hourly_snapshots_total`, `vctp_hourly_snapshots_failed_total`, `vctp_hourly_snapshot_last_unix`, `vctp_hourly_snapshot_last_rows`, `vctp_daily_aggregations_total`, `vctp_daily_aggregations_failed_total`, `vctp_daily_aggregation_duration_seconds`, `vctp_monthly_aggregations_total`, `vctp_monthly_aggregations_failed_total`, `vctp_monthly_aggregation_duration_seconds`, `vctp_reports_available`
|
- Snapshots/aggregations: `vctp_hourly_snapshots_total`, `vctp_hourly_snapshots_failed_total`, `vctp_hourly_snapshot_last_unix`, `vctp_hourly_snapshot_last_rows`, `vctp_daily_aggregations_total`, `vctp_daily_aggregations_failed_total`, `vctp_daily_aggregation_duration_seconds`, `vctp_monthly_aggregations_total`, `vctp_monthly_aggregations_failed_total`, `vctp_monthly_aggregation_duration_seconds`, `vctp_reports_available`
|
||||||
- vCenter health/perf: `vctp_vcenter_connect_failures_total{vcenter}`, `vctp_vcenter_snapshot_duration_seconds{vcenter}`, `vctp_vcenter_inventory_size{vcenter}`
|
- vCenter health/perf: `vctp_vcenter_connect_failures_total{vcenter}`, `vctp_vcenter_snapshot_duration_seconds{vcenter}`, `vctp_vcenter_inventory_size{vcenter}`
|
||||||
|
|
||||||
|
## Prorating and Aggregation Logic
|
||||||
|
Daily aggregation runs per VM using sample counts for the day:
|
||||||
|
- `SamplesPresent`: count of snapshot samples in which the VM appears.
|
||||||
|
- `TotalSamples`: count of unique snapshot timestamps for the vCenter in the day.
|
||||||
|
- `AvgIsPresent`: `SamplesPresent / TotalSamples` (0 when `TotalSamples` is 0).
|
||||||
|
- `AvgVcpuCount`, `AvgRamGB`, `AvgProvisionedDisk` (daily): `AvgIsPresent * last_observed_value` for the VM that day. This prorates partial-day VMs by presence ratio.
|
||||||
|
- `PoolTinPct`, `PoolBronzePct`, `PoolSilverPct`, `PoolGoldPct` (daily): `(pool_hits / SamplesPresent) * 100`, so pool percentages reflect only the time the VM existed.
|
||||||
|
|
||||||
|
Monthly aggregation builds on daily summaries (or the daily rollup cache):
|
||||||
|
- For each VM, daily averages are converted to weighted sums: `daily_avg * daily_total_samples`.
|
||||||
|
- Monthly averages are `sum(weighted_sums) / monthly_total_samples` (per vCenter).
|
||||||
|
- Pool percentages are weighted the same way: `(daily_pool_pct / 100) * daily_total_samples`, summed, then divided by `monthly_total_samples` and multiplied by 100.
|
||||||
|
|
||||||
## RPM Layout (summary)
|
## RPM Layout (summary)
|
||||||
The RPM installs the service and defaults under `/usr/bin`, config under `/etc/dtms`, and data under `/var/lib/vctp`:
|
The RPM installs the service and defaults under `/usr/bin`, config under `/etc/dtms`, and data under `/var/lib/vctp`:
|
||||||
- Binary: `/usr/bin/vctp-linux-amd64`
|
- Binary: `/usr/bin/vctp-linux-amd64`
|
||||||
@@ -19,7 +32,7 @@ The RPM installs the service and defaults under `/usr/bin`, config under `/etc/d
|
|||||||
- Data: SQLite DB and reports default to `/var/lib/vctp` (reports under `/var/lib/vctp/reports`)
|
- Data: SQLite DB and reports default to `/var/lib/vctp` (reports under `/var/lib/vctp/reports`)
|
||||||
- Scripts: preinstall/postinstall handle directory creation and permissions.
|
- Scripts: preinstall/postinstall handle directory creation and permissions.
|
||||||
|
|
||||||
## Settings File
|
# Settings File
|
||||||
Configuration now lives in the YAML settings file. By default the service reads
|
Configuration now lives in the YAML settings file. By default the service reads
|
||||||
`/etc/dtms/vctp.yml`, or you can override it with the `-settings` flag.
|
`/etc/dtms/vctp.yml`, or you can override it with the `-settings` flag.
|
||||||
|
|
||||||
@@ -34,7 +47,7 @@ exit (no scheduler/server), use:
|
|||||||
vctp -settings /path/to/vctp.yml -run-inventory
|
vctp -settings /path/to/vctp.yml -run-inventory
|
||||||
```
|
```
|
||||||
|
|
||||||
### Database Configuration
|
## Database Configuration
|
||||||
By default the app uses SQLite and creates/opens `db.sqlite3`. You can opt into PostgreSQL
|
By default the app uses SQLite and creates/opens `db.sqlite3`. You can opt into PostgreSQL
|
||||||
by updating the settings file:
|
by updating the settings file:
|
||||||
|
|
||||||
@@ -55,13 +68,13 @@ settings:
|
|||||||
PostgreSQL migrations live in `db/migrations_postgres`, while SQLite migrations remain in
|
PostgreSQL migrations live in `db/migrations_postgres`, while SQLite migrations remain in
|
||||||
`db/migrations`.
|
`db/migrations`.
|
||||||
|
|
||||||
### Snapshot Retention
|
## Snapshot Retention
|
||||||
Hourly and daily snapshot table retention can be configured in the settings file:
|
Hourly and daily snapshot table retention can be configured in the settings file:
|
||||||
|
|
||||||
- `settings.hourly_snapshot_max_age_days` (default: 60)
|
- `settings.hourly_snapshot_max_age_days` (default: 60)
|
||||||
- `settings.daily_snapshot_max_age_months` (default: 12)
|
- `settings.daily_snapshot_max_age_months` (default: 12)
|
||||||
|
|
||||||
### Settings Reference
|
## Settings Reference
|
||||||
All configuration lives under the top-level `settings:` key in `vctp.yml`.
|
All configuration lives under the top-level `settings:` key in `vctp.yml`.
|
||||||
|
|
||||||
General:
|
General:
|
||||||
|
|||||||
@@ -48,6 +48,34 @@ templ Index(info BuildInfo) {
|
|||||||
<p class="mt-3 text-xl font-semibold">{info.GoVersion}</p>
|
<p class="mt-3 text-xl font-semibold">{info.GoVersion}</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section class="grid gap-6 lg:grid-cols-3">
|
||||||
|
<div class="web2-card">
|
||||||
|
<h2 class="text-lg font-semibold">Overview</h2>
|
||||||
|
<p class="mt-2 text-sm text-slate-600">
|
||||||
|
vCTP is a vSphere Chargeback Tracking Platform.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="web2-card">
|
||||||
|
<h2 class="text-lg font-semibold">Snapshots and Reports</h2>
|
||||||
|
<ul class="mt-3 space-y-2 text-sm text-slate-600 list-disc pl-5">
|
||||||
|
<li>Hourly snapshots capture inventory per vCenter (concurrency via `hourly_snapshot_concurrency`).</li>
|
||||||
|
<li>Daily summaries aggregate the hourly snapshots for the day; monthly summaries aggregate daily summaries for the month (or hourly snapshots if configured).</li>
|
||||||
|
<li>Snapshots are registered in `snapshot_registry` so regeneration via `/api/snapshots/aggregate` can locate the correct tables (fallback scanning is also supported).</li>
|
||||||
|
<li>Reports (XLSX with totals/charts) are generated automatically after hourly, daily, and monthly jobs and written to a reports directory.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="web2-card">
|
||||||
|
<h2 class="text-lg font-semibold">Prorating and Aggregation</h2>
|
||||||
|
<ul class="mt-3 space-y-2 text-sm text-slate-600 list-disc pl-5">
|
||||||
|
<li>SamplesPresent is the count of snapshots in which the VM appears; TotalSamples is the count of unique snapshot times for the vCenter.</li>
|
||||||
|
<li>AvgIsPresent = SamplesPresent / TotalSamples (0 when TotalSamples is 0).</li>
|
||||||
|
<li>Daily AvgVcpuCount/AvgRamGB/AvgProvisionedDisk = AvgIsPresent * last observed value for the day.</li>
|
||||||
|
<li>Daily pool percentages use pool hits divided by SamplesPresent, so they reflect only the time the VM existed.</li>
|
||||||
|
<li>Monthly aggregation weights daily averages by daily total samples, then divides by monthly total samples.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
</main>
|
</main>
|
||||||
</body>
|
</body>
|
||||||
@core.Footer()
|
@core.Footer()
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ func Index(info BuildInfo) templ.Component {
|
|||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
return templ_7745c5c3_Err
|
return templ_7745c5c3_Err
|
||||||
}
|
}
|
||||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</p></div></section></main></body>")
|
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</p></div></section><section class=\"grid gap-6 lg:grid-cols-3\"><div class=\"web2-card\"><h2 class=\"text-lg font-semibold\">Overview</h2><p class=\"mt-2 text-sm text-slate-600\">vCTP is a vSphere Chargeback Tracking Platform.</p></div><div class=\"web2-card\"><h2 class=\"text-lg font-semibold\">Snapshots and Reports</h2><ul class=\"mt-3 space-y-2 text-sm text-slate-600 list-disc pl-5\"><li>Hourly snapshots capture inventory per vCenter (concurrency via `hourly_snapshot_concurrency`).</li><li>Daily summaries aggregate the hourly snapshots for the day; monthly summaries aggregate daily summaries for the month (or hourly snapshots if configured).</li><li>Snapshots are registered in `snapshot_registry` so regeneration via `/api/snapshots/aggregate` can locate the correct tables (fallback scanning is also supported).</li><li>Reports (XLSX with totals/charts) are generated automatically after hourly, daily, and monthly jobs and written to a reports directory.</li></ul></div><div class=\"web2-card\"><h2 class=\"text-lg font-semibold\">Prorating and Aggregation</h2><ul class=\"mt-3 space-y-2 text-sm text-slate-600 list-disc pl-5\"><li>SamplesPresent is the count of snapshots in which the VM appears; TotalSamples is the count of unique snapshot times for the vCenter.</li><li>AvgIsPresent = SamplesPresent / TotalSamples (0 when TotalSamples is 0).</li><li>Daily AvgVcpuCount/AvgRamGB/AvgProvisionedDisk = AvgIsPresent * last observed value for the day.</li><li>Daily pool percentages use pool hits divided by SamplesPresent, so they reflect only the time the VM existed.</li><li>Monthly aggregation weights daily averages by daily total samples, then divides by monthly total samples.</li></ul></div></section></main></body>")
|
||||||
if templ_7745c5c3_Err != nil {
|
if templ_7745c5c3_Err != nil {
|
||||||
return templ_7745c5c3_Err
|
return templ_7745c5c3_Err
|
||||||
}
|
}
|
||||||
|
|||||||
20
dist/assets/css/web3.css
vendored
20
dist/assets/css/web3.css
vendored
@@ -29,6 +29,26 @@ body {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 1.5rem 1.75rem;
|
padding: 1.5rem 1.75rem;
|
||||||
}
|
}
|
||||||
|
.web2-card h2 {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 0.75rem;
|
||||||
|
font-size: 1.05rem;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.02em;
|
||||||
|
color: #0b1220;
|
||||||
|
}
|
||||||
|
.web2-card h2::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
width: 4px;
|
||||||
|
height: 70%;
|
||||||
|
background: var(--web2-blue);
|
||||||
|
border-radius: 2px;
|
||||||
|
box-shadow: 0 0 0 1px rgba(29, 155, 240, 0.18);
|
||||||
|
}
|
||||||
.web2-pill {
|
.web2-pill {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -92,19 +92,13 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Cleanup completed",
|
"description": "Cleanup completed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -141,19 +135,13 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Ciphertext response",
|
"description": "Ciphertext response",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -282,28 +270,19 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Modify event processed",
|
"description": "Modify event processed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"202": {
|
"202": {
|
||||||
"description": "No relevant changes",
|
"description": "No relevant changes",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -338,28 +317,19 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Move event processed",
|
"description": "Move event processed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -393,19 +363,13 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Import processed",
|
"description": "Import processed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -441,19 +405,13 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Cleanup completed",
|
"description": "Cleanup completed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -505,10 +463,7 @@ const docTemplate = `{
|
|||||||
"500": {
|
"500": {
|
||||||
"description": "Report generation failed",
|
"description": "Report generation failed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -543,19 +498,13 @@ const docTemplate = `{
|
|||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -581,10 +530,7 @@ const docTemplate = `{
|
|||||||
"500": {
|
"500": {
|
||||||
"description": "Report generation failed",
|
"description": "Report generation failed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -614,34 +560,31 @@ const docTemplate = `{
|
|||||||
"name": "date",
|
"name": "date",
|
||||||
"in": "query",
|
"in": "query",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "Monthly aggregation granularity: hourly or daily",
|
||||||
|
"name": "granularity",
|
||||||
|
"in": "query"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Aggregation complete",
|
"description": "Aggregation complete",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -673,28 +616,19 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Snapshot started",
|
"description": "Snapshot started",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -714,17 +648,13 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Migration results",
|
"description": "Migration results",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.SnapshotMigrationResponse"
|
||||||
"additionalProperties": true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.SnapshotMigrationResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -744,17 +674,13 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Regeneration summary",
|
"description": "Regeneration summary",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.SnapshotRegenerateReportsResponse"
|
||||||
"additionalProperties": true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -774,10 +700,7 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.SnapshotRepairResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -797,10 +720,7 @@ const docTemplate = `{
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.SnapshotRepairSuiteResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1214,6 +1134,17 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.ErrorResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"message": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.ImportReceived": {
|
"models.ImportReceived": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -1254,6 +1185,119 @@ const docTemplate = `{
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"models.SnapshotMigrationResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"error": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"$ref": "#/definitions/models.SnapshotMigrationStats"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SnapshotMigrationStats": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"DailyRegistered": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"Errors": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"HourlyRegistered": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"HourlyRenamed": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"MonthlyRegistered": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SnapshotRegenerateReportsResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"errors": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"regenerated": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"reports_dir": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"skipped": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"snapshotType": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SnapshotRepairResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"failed": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"repaired": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SnapshotRepairSuiteResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"daily_failed": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"daily_repaired": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"monthly_failed": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"monthly_refined": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.StatusMessageResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"message": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.StatusResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}`
|
}`
|
||||||
|
|||||||
@@ -81,19 +81,13 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Cleanup completed",
|
"description": "Cleanup completed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,19 +124,13 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Ciphertext response",
|
"description": "Ciphertext response",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -271,28 +259,19 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Modify event processed",
|
"description": "Modify event processed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"202": {
|
"202": {
|
||||||
"description": "No relevant changes",
|
"description": "No relevant changes",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -327,28 +306,19 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Move event processed",
|
"description": "Move event processed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -382,19 +352,13 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Import processed",
|
"description": "Import processed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -430,19 +394,13 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Cleanup completed",
|
"description": "Cleanup completed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusMessageResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -494,10 +452,7 @@
|
|||||||
"500": {
|
"500": {
|
||||||
"description": "Report generation failed",
|
"description": "Report generation failed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -532,19 +487,13 @@
|
|||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -570,10 +519,7 @@
|
|||||||
"500": {
|
"500": {
|
||||||
"description": "Report generation failed",
|
"description": "Report generation failed",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -603,34 +549,31 @@
|
|||||||
"name": "date",
|
"name": "date",
|
||||||
"in": "query",
|
"in": "query",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "Monthly aggregation granularity: hourly or daily",
|
||||||
|
"name": "granularity",
|
||||||
|
"in": "query"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Aggregation complete",
|
"description": "Aggregation complete",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -662,28 +605,19 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Snapshot started",
|
"description": "Snapshot started",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.StatusResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Invalid request",
|
"description": "Invalid request",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -703,17 +637,13 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Migration results",
|
"description": "Migration results",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.SnapshotMigrationResponse"
|
||||||
"additionalProperties": true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.SnapshotMigrationResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -733,17 +663,13 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "Regeneration summary",
|
"description": "Regeneration summary",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.SnapshotRegenerateReportsResponse"
|
||||||
"additionalProperties": true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"500": {
|
"500": {
|
||||||
"description": "Server error",
|
"description": "Server error",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.ErrorResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -763,10 +689,7 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.SnapshotRepairResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -786,10 +709,7 @@
|
|||||||
"200": {
|
"200": {
|
||||||
"description": "OK",
|
"description": "OK",
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"$ref": "#/definitions/models.SnapshotRepairSuiteResponse"
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1203,6 +1123,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.ErrorResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"message": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.ImportReceived": {
|
"models.ImportReceived": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -1243,6 +1174,119 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"models.SnapshotMigrationResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"error": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"$ref": "#/definitions/models.SnapshotMigrationStats"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SnapshotMigrationStats": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"DailyRegistered": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"Errors": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"HourlyRegistered": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"HourlyRenamed": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"MonthlyRegistered": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SnapshotRegenerateReportsResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"errors": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"regenerated": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"reports_dir": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"skipped": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"snapshotType": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SnapshotRepairResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"failed": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"repaired": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SnapshotRepairSuiteResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"daily_failed": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"daily_repaired": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"monthly_failed": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"monthly_refined": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.StatusMessageResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"message": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.StatusResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"status": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -126,6 +126,13 @@ definitions:
|
|||||||
modified:
|
modified:
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
|
models.ErrorResponse:
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
models.ImportReceived:
|
models.ImportReceived:
|
||||||
properties:
|
properties:
|
||||||
Cluster:
|
Cluster:
|
||||||
@@ -153,6 +160,79 @@ definitions:
|
|||||||
VmId:
|
VmId:
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
|
models.SnapshotMigrationResponse:
|
||||||
|
properties:
|
||||||
|
error:
|
||||||
|
type: string
|
||||||
|
stats:
|
||||||
|
$ref: '#/definitions/models.SnapshotMigrationStats'
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
models.SnapshotMigrationStats:
|
||||||
|
properties:
|
||||||
|
DailyRegistered:
|
||||||
|
type: integer
|
||||||
|
Errors:
|
||||||
|
type: integer
|
||||||
|
HourlyRegistered:
|
||||||
|
type: integer
|
||||||
|
HourlyRenamed:
|
||||||
|
type: integer
|
||||||
|
MonthlyRegistered:
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
models.SnapshotRegenerateReportsResponse:
|
||||||
|
properties:
|
||||||
|
errors:
|
||||||
|
type: integer
|
||||||
|
regenerated:
|
||||||
|
type: integer
|
||||||
|
reports_dir:
|
||||||
|
type: string
|
||||||
|
skipped:
|
||||||
|
type: integer
|
||||||
|
snapshotType:
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
total:
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
models.SnapshotRepairResponse:
|
||||||
|
properties:
|
||||||
|
failed:
|
||||||
|
type: string
|
||||||
|
repaired:
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
models.SnapshotRepairSuiteResponse:
|
||||||
|
properties:
|
||||||
|
daily_failed:
|
||||||
|
type: string
|
||||||
|
daily_repaired:
|
||||||
|
type: string
|
||||||
|
monthly_failed:
|
||||||
|
type: string
|
||||||
|
monthly_refined:
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
models.StatusMessageResponse:
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
models.StatusResponse:
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
info:
|
info:
|
||||||
contact: {}
|
contact: {}
|
||||||
paths:
|
paths:
|
||||||
@@ -209,15 +289,11 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: Cleanup completed
|
description: Cleanup completed
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.StatusMessageResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"400":
|
"400":
|
||||||
description: Invalid request
|
description: Invalid request
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Cleanup vCenter inventory (deprecated)
|
summary: Cleanup vCenter inventory (deprecated)
|
||||||
tags:
|
tags:
|
||||||
- maintenance
|
- maintenance
|
||||||
@@ -241,15 +317,11 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: Ciphertext response
|
description: Ciphertext response
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.StatusMessageResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"500":
|
"500":
|
||||||
description: Server error
|
description: Server error
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Encrypt data
|
summary: Encrypt data
|
||||||
tags:
|
tags:
|
||||||
- crypto
|
- crypto
|
||||||
@@ -337,21 +409,15 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: Modify event processed
|
description: Modify event processed
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.StatusMessageResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"202":
|
"202":
|
||||||
description: No relevant changes
|
description: No relevant changes
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.StatusMessageResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"500":
|
"500":
|
||||||
description: Server error
|
description: Server error
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Record VM modify event (deprecated)
|
summary: Record VM modify event (deprecated)
|
||||||
tags:
|
tags:
|
||||||
- events
|
- events
|
||||||
@@ -375,21 +441,15 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: Move event processed
|
description: Move event processed
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.StatusMessageResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"400":
|
"400":
|
||||||
description: Invalid request
|
description: Invalid request
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"500":
|
"500":
|
||||||
description: Server error
|
description: Server error
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Record VM move event (deprecated)
|
summary: Record VM move event (deprecated)
|
||||||
tags:
|
tags:
|
||||||
- events
|
- events
|
||||||
@@ -411,15 +471,11 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: Import processed
|
description: Import processed
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.StatusMessageResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"500":
|
"500":
|
||||||
description: Server error
|
description: Server error
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Import VMs
|
summary: Import VMs
|
||||||
tags:
|
tags:
|
||||||
- inventory
|
- inventory
|
||||||
@@ -443,15 +499,11 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: Cleanup completed
|
description: Cleanup completed
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.StatusMessageResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"400":
|
"400":
|
||||||
description: Invalid request
|
description: Invalid request
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Cleanup VM inventory entry
|
summary: Cleanup VM inventory entry
|
||||||
tags:
|
tags:
|
||||||
- inventory
|
- inventory
|
||||||
@@ -485,9 +537,7 @@ paths:
|
|||||||
"500":
|
"500":
|
||||||
description: Report generation failed
|
description: Report generation failed
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Download inventory report
|
summary: Download inventory report
|
||||||
tags:
|
tags:
|
||||||
- reports
|
- reports
|
||||||
@@ -510,15 +560,11 @@ paths:
|
|||||||
"400":
|
"400":
|
||||||
description: Invalid request
|
description: Invalid request
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"500":
|
"500":
|
||||||
description: Server error
|
description: Server error
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Download snapshot report
|
summary: Download snapshot report
|
||||||
tags:
|
tags:
|
||||||
- snapshots
|
- snapshots
|
||||||
@@ -535,9 +581,7 @@ paths:
|
|||||||
"500":
|
"500":
|
||||||
description: Report generation failed
|
description: Report generation failed
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Download updates report
|
summary: Download updates report
|
||||||
tags:
|
tags:
|
||||||
- reports
|
- reports
|
||||||
@@ -556,27 +600,25 @@ paths:
|
|||||||
name: date
|
name: date
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
- description: 'Monthly aggregation granularity: hourly or daily'
|
||||||
|
in: query
|
||||||
|
name: granularity
|
||||||
|
type: string
|
||||||
produces:
|
produces:
|
||||||
- application/json
|
- application/json
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: Aggregation complete
|
description: Aggregation complete
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.StatusResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"400":
|
"400":
|
||||||
description: Invalid request
|
description: Invalid request
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"500":
|
"500":
|
||||||
description: Server error
|
description: Server error
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Force snapshot aggregation
|
summary: Force snapshot aggregation
|
||||||
tags:
|
tags:
|
||||||
- snapshots
|
- snapshots
|
||||||
@@ -598,21 +640,15 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: Snapshot started
|
description: Snapshot started
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.StatusResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"400":
|
"400":
|
||||||
description: Invalid request
|
description: Invalid request
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
"500":
|
"500":
|
||||||
description: Server error
|
description: Server error
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Trigger hourly snapshot (manual)
|
summary: Trigger hourly snapshot (manual)
|
||||||
tags:
|
tags:
|
||||||
- snapshots
|
- snapshots
|
||||||
@@ -626,14 +662,11 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: Migration results
|
description: Migration results
|
||||||
schema:
|
schema:
|
||||||
additionalProperties: true
|
$ref: '#/definitions/models.SnapshotMigrationResponse'
|
||||||
type: object
|
|
||||||
"500":
|
"500":
|
||||||
description: Server error
|
description: Server error
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.SnapshotMigrationResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Migrate snapshot registry
|
summary: Migrate snapshot registry
|
||||||
tags:
|
tags:
|
||||||
- snapshots
|
- snapshots
|
||||||
@@ -647,14 +680,11 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: Regeneration summary
|
description: Regeneration summary
|
||||||
schema:
|
schema:
|
||||||
additionalProperties: true
|
$ref: '#/definitions/models.SnapshotRegenerateReportsResponse'
|
||||||
type: object
|
|
||||||
"500":
|
"500":
|
||||||
description: Server error
|
description: Server error
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.ErrorResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Regenerate hourly snapshot reports
|
summary: Regenerate hourly snapshot reports
|
||||||
tags:
|
tags:
|
||||||
- snapshots
|
- snapshots
|
||||||
@@ -668,9 +698,7 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.SnapshotRepairResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Repair daily summaries
|
summary: Repair daily summaries
|
||||||
tags:
|
tags:
|
||||||
- snapshots
|
- snapshots
|
||||||
@@ -684,9 +712,7 @@ paths:
|
|||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
additionalProperties:
|
$ref: '#/definitions/models.SnapshotRepairSuiteResponse'
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
summary: Run full snapshot repair suite
|
summary: Run full snapshot repair suite
|
||||||
tags:
|
tags:
|
||||||
- snapshots
|
- snapshots
|
||||||
|
|||||||
Reference in New Issue
Block a user