Add vCenter cache rebuild functionality and related API endpoint
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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user