34 lines
1.2 KiB
Go
34 lines
1.2 KiB
Go
package localapi
|
|
|
|
import "context"
|
|
|
|
// R-1006: the half-written vzdump cleanup's two needs from the Server, and its start-up sweep. The cleaner itself is
|
|
// internal/vzpartial; the root helper is configs/felhom-vzdump-partial-clean.
|
|
|
|
// VzdumpInFlight is the one in-flight answer (staleLockController.BackupRunning, R-1008) for the cleanup. No stale-lock
|
|
// controller wired → true: fail safe, nothing is removed.
|
|
func (s *Server) VzdumpInFlight(ctx context.Context, vmid int) (bool, error) {
|
|
if s.staleLock == nil {
|
|
return true, nil
|
|
}
|
|
return s.staleLock.BackupRunning(ctx, vmid)
|
|
}
|
|
|
|
// SetPartialSweep sets the start-up sweep: called with every owned guest (the felhom pool, ownership proven).
|
|
func (s *Server) SetPartialSweep(fn func(ctx context.Context, vmid int)) { s.partialSweep = fn }
|
|
|
|
// SweepVzdumpPartials runs the sweep once for every owned guest. No-op when unwired.
|
|
func (s *Server) SweepVzdumpPartials(ctx context.Context) {
|
|
if s.partialSweep == nil || s.staleLock == nil {
|
|
return
|
|
}
|
|
guests, err := s.staleLock.Guests(ctx)
|
|
if err != nil {
|
|
s.logger.Warn("vzdump-partial: guest list unavailable — skipping the start-up sweep", "err", err)
|
|
return
|
|
}
|
|
for _, g := range guests {
|
|
s.partialSweep(ctx, g.VMID)
|
|
}
|
|
}
|