All checks were successful
continuous-integration/drone/push Build is passing
124 lines
2.7 KiB
Go
124 lines
2.7 KiB
Go
package tasks
|
|
|
|
import (
|
|
"database/sql"
|
|
"log/slog"
|
|
"time"
|
|
|
|
"vctp/db"
|
|
"vctp/internal/settings"
|
|
"vctp/internal/vcenter"
|
|
)
|
|
|
|
// CronTask stores runtime information to be used by tasks.
|
|
type CronTask struct {
|
|
Logger *slog.Logger
|
|
Database db.Database
|
|
Settings *settings.Settings
|
|
VcCreds *vcenter.VcenterLogin
|
|
FirstHourlySnapshotCheck bool
|
|
}
|
|
|
|
// InventorySnapshotRow represents a single VM snapshot row.
|
|
type InventorySnapshotRow struct {
|
|
InventoryId sql.NullInt64
|
|
Name string
|
|
Vcenter string
|
|
VmId sql.NullString
|
|
EventKey sql.NullString
|
|
CloudId sql.NullString
|
|
CreationTime sql.NullInt64
|
|
DeletionTime sql.NullInt64
|
|
ResourcePool sql.NullString
|
|
Datacenter sql.NullString
|
|
Cluster sql.NullString
|
|
Folder sql.NullString
|
|
ProvisionedDisk sql.NullFloat64
|
|
VcpuCount sql.NullInt64
|
|
RamGB sql.NullInt64
|
|
IsTemplate string
|
|
PoweredOn string
|
|
SrmPlaceholder string
|
|
VmUuid sql.NullString
|
|
SnapshotTime int64
|
|
}
|
|
|
|
// snapshotTotals aliases DB snapshot totals for convenience.
|
|
type snapshotTotals = db.SnapshotTotals
|
|
|
|
type dailyAggKey struct {
|
|
Vcenter string
|
|
VmId string
|
|
VmUuid string
|
|
Name string
|
|
}
|
|
|
|
type dailyAggVal struct {
|
|
key dailyAggKey
|
|
resourcePool string
|
|
datacenter string
|
|
cluster string
|
|
folder string
|
|
isTemplate string
|
|
poweredOn string
|
|
srmPlaceholder string
|
|
creation int64
|
|
firstSeen int64
|
|
lastSeen int64
|
|
lastDisk float64
|
|
lastVcpu int64
|
|
lastRam int64
|
|
sumVcpu int64
|
|
sumRam int64
|
|
sumDisk float64
|
|
samples int64
|
|
tinHits int64
|
|
bronzeHits int64
|
|
silverHits int64
|
|
goldHits int64
|
|
seen map[int64]struct{}
|
|
deletion int64
|
|
}
|
|
|
|
type monthlyAggKey struct {
|
|
Vcenter string
|
|
VmId string
|
|
VmUuid string
|
|
Name string
|
|
}
|
|
|
|
type monthlyAggVal struct {
|
|
key monthlyAggKey
|
|
inventoryId int64
|
|
eventKey string
|
|
cloudId string
|
|
resourcePool string
|
|
datacenter string
|
|
cluster string
|
|
folder string
|
|
isTemplate string
|
|
poweredOn string
|
|
srmPlaceholder string
|
|
creation int64
|
|
deletion int64
|
|
lastSnapshot time.Time
|
|
provisioned float64
|
|
vcpuCount int64
|
|
ramGB int64
|
|
samplesPresent int64
|
|
totalSamples float64
|
|
sumVcpu float64
|
|
sumRam float64
|
|
sumDisk float64
|
|
tinWeighted float64
|
|
bronzeWeighted float64
|
|
silverWeighted float64
|
|
goldWeighted float64
|
|
}
|
|
|
|
// CronTracker manages re-entry protection and status recording for cron jobs.
|
|
type CronTracker struct {
|
|
db db.Database
|
|
bindType int
|
|
}
|