improve logging for pro-rata
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:
@@ -492,12 +492,16 @@ CREATE TABLE IF NOT EXISTS vm_lifecycle_cache (
|
||||
}
|
||||
|
||||
// UpsertVmLifecycleCache updates first/last seen info for a VM.
|
||||
func UpsertVmLifecycleCache(ctx context.Context, dbConn *sqlx.DB, vcenter string, vmID, vmUUID, name, cluster string, seen time.Time) error {
|
||||
func UpsertVmLifecycleCache(ctx context.Context, dbConn *sqlx.DB, vcenter string, vmID, vmUUID, name, cluster string, seen time.Time, creation sql.NullInt64) error {
|
||||
if err := EnsureVmLifecycleCache(ctx, dbConn); err != nil {
|
||||
return err
|
||||
}
|
||||
driver := strings.ToLower(dbConn.DriverName())
|
||||
bindType := sqlx.BindType(driver)
|
||||
firstSeen := seen.Unix()
|
||||
if creation.Valid && creation.Int64 > 0 && creation.Int64 < firstSeen {
|
||||
firstSeen = creation.Int64
|
||||
}
|
||||
query := `
|
||||
INSERT INTO vm_lifecycle_cache ("Vcenter","VmId","VmUuid","Name","Cluster","FirstSeen","LastSeen")
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
@@ -505,11 +509,16 @@ ON CONFLICT ("Vcenter","VmId","VmUuid") DO UPDATE SET
|
||||
"Name"=EXCLUDED."Name",
|
||||
"Cluster"=EXCLUDED."Cluster",
|
||||
"LastSeen"=EXCLUDED."LastSeen",
|
||||
"FirstSeen"=COALESCE(vm_lifecycle_cache."FirstSeen", EXCLUDED."FirstSeen"),
|
||||
"FirstSeen"=CASE
|
||||
WHEN vm_lifecycle_cache."FirstSeen" IS NULL OR vm_lifecycle_cache."FirstSeen" = 0 THEN EXCLUDED."FirstSeen"
|
||||
WHEN EXCLUDED."FirstSeen" IS NOT NULL AND EXCLUDED."FirstSeen" > 0 AND EXCLUDED."FirstSeen" < vm_lifecycle_cache."FirstSeen"
|
||||
THEN EXCLUDED."FirstSeen"
|
||||
ELSE vm_lifecycle_cache."FirstSeen"
|
||||
END,
|
||||
"DeletedAt"=NULL
|
||||
`
|
||||
query = sqlx.Rebind(bindType, query)
|
||||
args := []interface{}{vcenter, vmID, vmUUID, name, cluster, seen.Unix(), seen.Unix()}
|
||||
args := []interface{}{vcenter, vmID, vmUUID, name, cluster, firstSeen, seen.Unix()}
|
||||
_, err := dbConn.ExecContext(ctx, query, args...)
|
||||
if err != nil {
|
||||
slog.Warn("lifecycle upsert exec failed", "vcenter", vcenter, "vm_id", vmID, "vm_uuid", vmUUID, "driver", driver, "args_len", len(args), "args", fmt.Sprint(args), "query", strings.TrimSpace(query), "error", err)
|
||||
|
||||
Reference in New Issue
Block a user