ensure we logout, fix aggregations
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:
@@ -280,6 +280,11 @@ func (c *CronTask) aggregateDailySummaryGo(ctx context.Context, dayStart, dayEnd
|
||||
return err
|
||||
}
|
||||
|
||||
// Persist rollup cache for monthly aggregation.
|
||||
if err := c.persistDailyRollup(ctx, dayStart.Unix(), aggMap, totalSamples); err != nil {
|
||||
c.Logger.Warn("failed to persist daily rollup cache", "error", err, "date", dayStart.Format("2006-01-02"))
|
||||
}
|
||||
|
||||
// Refine lifecycle with existing SQL helper to pick up first-after deletions.
|
||||
if err := db.RefineCreationDeletionFromUnion(ctx, dbConn, summaryTable, unionQuery); err != nil {
|
||||
c.Logger.Warn("failed to refine creation/deletion times", "error", err, "table", summaryTable)
|
||||
@@ -727,3 +732,44 @@ func btoi(b bool) int64 {
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// persistDailyRollup stores per-day aggregates into vm_daily_rollup to speed monthly aggregation.
|
||||
func (c *CronTask) persistDailyRollup(ctx context.Context, dayUnix int64, agg map[dailyAggKey]*dailyAggVal, totalSamples int) error {
|
||||
dbConn := c.Database.DB()
|
||||
for _, v := range agg {
|
||||
if strings.EqualFold(strings.TrimSpace(v.isTemplate), "true") || v.isTemplate == "1" {
|
||||
continue
|
||||
}
|
||||
row := db.VmDailyRollupRow{
|
||||
Vcenter: v.key.Vcenter,
|
||||
VmId: v.key.VmId,
|
||||
VmUuid: v.key.VmUuid,
|
||||
Name: v.key.Name,
|
||||
CreationTime: v.creation,
|
||||
DeletionTime: v.deletion,
|
||||
SamplesPresent: v.samples,
|
||||
TotalSamples: int64(totalSamples),
|
||||
SumVcpu: float64(v.sumVcpu),
|
||||
SumRam: float64(v.sumRam),
|
||||
SumDisk: v.sumDisk,
|
||||
TinHits: v.tinHits,
|
||||
BronzeHits: v.bronzeHits,
|
||||
SilverHits: v.silverHits,
|
||||
GoldHits: v.goldHits,
|
||||
LastResourcePool: v.resourcePool,
|
||||
LastDatacenter: v.datacenter,
|
||||
LastCluster: v.cluster,
|
||||
LastFolder: v.folder,
|
||||
LastProvisionedDisk: v.lastDisk,
|
||||
LastVcpuCount: v.lastVcpu,
|
||||
LastRamGB: v.lastRam,
|
||||
IsTemplate: v.isTemplate,
|
||||
PoweredOn: v.poweredOn,
|
||||
SrmPlaceholder: v.srmPlaceholder,
|
||||
}
|
||||
if err := db.UpsertVmDailyRollup(ctx, dbConn, dayUnix, row); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user