fix aggregation for disk size changes
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing

This commit is contained in:
2026-01-16 16:33:39 +11:00
parent 0820cbb65e
commit b4c52e296c

View File

@@ -1017,8 +1017,11 @@ WITH snapshots AS (
MIN(s."SnapshotTime") AS first_present, MIN(s."SnapshotTime") AS first_present,
MAX(s."SnapshotTime") AS last_present, MAX(s."SnapshotTime") AS last_present,
COUNT(*) AS samples_present, COUNT(*) AS samples_present,
s."Datacenter", s."Cluster", s."Folder", s."ProvisionedDisk", s."VcpuCount", s."Datacenter", s."Cluster", s."Folder",
s."RamGB", s."IsTemplate", s."PoweredOn", s."SrmPlaceholder", s."VmUuid", AVG(COALESCE(s."ProvisionedDisk",0)) AS avg_disk,
AVG(COALESCE(s."VcpuCount",0)) AS avg_vcpu_raw,
AVG(COALESCE(s."RamGB",0)) AS avg_ram_raw,
s."IsTemplate", s."PoweredOn", s."SrmPlaceholder", s."VmUuid",
SUM(CASE WHEN s."VcpuCount" IS NOT NULL THEN s."VcpuCount" ELSE 0 END) AS sum_vcpu, SUM(CASE WHEN s."VcpuCount" IS NOT NULL THEN s."VcpuCount" ELSE 0 END) AS sum_vcpu,
SUM(CASE WHEN s."RamGB" IS NOT NULL THEN s."RamGB" ELSE 0 END) AS sum_ram, SUM(CASE WHEN s."RamGB" IS NOT NULL THEN s."RamGB" ELSE 0 END) AS sum_ram,
SUM(CASE WHEN s."ProvisionedDisk" IS NOT NULL THEN s."ProvisionedDisk" ELSE 0 END) AS sum_disk, SUM(CASE WHEN s."ProvisionedDisk" IS NOT NULL THEN s."ProvisionedDisk" ELSE 0 END) AS sum_disk,
@@ -1030,8 +1033,8 @@ WITH snapshots AS (
LEFT JOIN inventory inv ON inv."VmId" = s."VmId" AND inv."Vcenter" = s."Vcenter" LEFT JOIN inventory inv ON inv."VmId" = s."VmId" AND inv."Vcenter" = s."Vcenter"
GROUP BY GROUP BY
s."InventoryId", s."Name", s."Vcenter", s."VmId", s."EventKey", s."CloudId", s."InventoryId", s."Name", s."Vcenter", s."VmId", s."EventKey", s."CloudId",
s."Datacenter", s."Cluster", s."Folder", s."ProvisionedDisk", s."VcpuCount", s."Datacenter", s."Cluster", s."Folder",
s."RamGB", s."IsTemplate", s."PoweredOn", s."SrmPlaceholder", s."VmUuid" s."IsTemplate", s."PoweredOn", s."SrmPlaceholder", s."VmUuid"
) )
INSERT INTO %s ( INSERT INTO %s (
"InventoryId", "Name", "Vcenter", "VmId", "EventKey", "CloudId", "CreationTime", "DeletionTime", "InventoryId", "Name", "Vcenter", "VmId", "EventKey", "CloudId", "CreationTime", "DeletionTime",
@@ -1062,8 +1065,32 @@ SELECT
ORDER BY s2."SnapshotTime" DESC ORDER BY s2."SnapshotTime" DESC
LIMIT 1 LIMIT 1
) AS "ResourcePool", ) AS "ResourcePool",
agg."Datacenter", agg."Cluster", agg."Folder", agg."ProvisionedDisk", agg."VcpuCount", agg."Datacenter", agg."Cluster", agg."Folder",
agg."RamGB", agg."IsTemplate", agg."PoweredOn", agg."SrmPlaceholder", agg."VmUuid", (
SELECT s2."ProvisionedDisk"
FROM snapshots s2
WHERE s2."VmId" = agg."VmId"
AND s2."Vcenter" = agg."Vcenter"
ORDER BY s2."SnapshotTime" DESC
LIMIT 1
) AS "ProvisionedDisk",
(
SELECT s2."VcpuCount"
FROM snapshots s2
WHERE s2."VmId" = agg."VmId"
AND s2."Vcenter" = agg."Vcenter"
ORDER BY s2."SnapshotTime" DESC
LIMIT 1
) AS "VcpuCount",
(
SELECT s2."RamGB"
FROM snapshots s2
WHERE s2."VmId" = agg."VmId"
AND s2."Vcenter" = agg."Vcenter"
ORDER BY s2."SnapshotTime" DESC
LIMIT 1
) AS "RamGB",
agg."IsTemplate", agg."PoweredOn", agg."SrmPlaceholder", agg."VmUuid",
agg.samples_present AS "SamplesPresent", agg.samples_present AS "SamplesPresent",
CASE WHEN totals.total_samples > 0 CASE WHEN totals.total_samples > 0
THEN 1.0 * agg.sum_vcpu / totals.total_samples THEN 1.0 * agg.sum_vcpu / totals.total_samples
@@ -1105,8 +1132,8 @@ FROM agg
CROSS JOIN totals CROSS JOIN totals
GROUP BY GROUP BY
agg."InventoryId", agg."Name", agg."Vcenter", agg."VmId", agg."EventKey", agg."CloudId", agg."InventoryId", agg."Name", agg."Vcenter", agg."VmId", agg."EventKey", agg."CloudId",
agg."Datacenter", agg."Cluster", agg."Folder", agg."ProvisionedDisk", agg."VcpuCount", agg."Datacenter", agg."Cluster", agg."Folder",
agg."RamGB", agg."IsTemplate", agg."PoweredOn", agg."SrmPlaceholder", agg."VmUuid", agg."IsTemplate", agg."PoweredOn", agg."SrmPlaceholder", agg."VmUuid",
agg.any_creation, agg.any_deletion, agg.first_present, agg.last_present, agg.any_creation, agg.any_deletion, agg.first_present, agg.last_present,
totals.total_samples; totals.total_samples;
`, unionQuery, tableName) `, unionQuery, tableName)