Add vCenter cache rebuild functionality and related API endpoint
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-02-16 08:46:38 +11:00
parent 6fbd6bc9d2
commit bc84931c37
7 changed files with 425 additions and 24 deletions

View File

@@ -1161,6 +1161,35 @@ CREATE TABLE IF NOT EXISTS vcenter_host_cache (
})
}
// ClearVcenterReferenceCache removes cached folder/resource-pool/host references for a vCenter.
func ClearVcenterReferenceCache(ctx context.Context, dbConn *sqlx.DB, vcenter string) error {
vcenter = strings.TrimSpace(vcenter)
if vcenter == "" {
return nil
}
if err := EnsureVcenterReferenceCacheTables(ctx, dbConn); err != nil {
return err
}
tx, err := dbConn.BeginTxx(ctx, nil)
if err != nil {
return err
}
tables := []string{
"vcenter_folder_cache",
"vcenter_resource_pool_cache",
"vcenter_host_cache",
}
for _, tableName := range tables {
query := tx.Rebind(fmt.Sprintf(`DELETE FROM %s WHERE "Vcenter" = ?`, tableName))
if _, err := tx.ExecContext(ctx, query, vcenter); err != nil {
_ = tx.Rollback()
return err
}
}
return tx.Commit()
}
func LoadVcenterFolderCache(ctx context.Context, dbConn *sqlx.DB, vcenter string) (map[string]string, error) {
cache := make(map[string]string)
vcenter = strings.TrimSpace(vcenter)