feat: drive migration & Tier 2 restic deprecation (v0.18.0)
Phase 1: Deprecate restic as Tier 2 method (rsync only), auto-migrate on startup Phase 2: Enhanced per-app migration with backup awareness, DB dump copy, auto-cleanup Phase 3: Full drive migration with decommissioned state, rollback support, wizard UI Phase 4: Hub report includes decommissioned drive state Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -133,6 +133,11 @@ func (w *StorageWatchdog) Check(ctx context.Context) error {
|
||||
}
|
||||
state.lastProbeTime = time.Now()
|
||||
|
||||
// Skip decommissioned drives entirely — no apps reference them
|
||||
if sp.Decommissioned {
|
||||
continue
|
||||
}
|
||||
|
||||
if sp.Disconnected {
|
||||
w.handleReconnectCheck(ctx, sp)
|
||||
} else {
|
||||
@@ -434,6 +439,9 @@ func (w *StorageWatchdog) SafeDisconnect(ctx context.Context, path string) (stop
|
||||
if sp.Disconnected {
|
||||
return nil, fmt.Errorf("drive already disconnected")
|
||||
}
|
||||
if sp.Decommissioned {
|
||||
return nil, fmt.Errorf("drive is decommissioned — no apps to stop")
|
||||
}
|
||||
|
||||
label := sp.Label
|
||||
if label == "" {
|
||||
|
||||
Reference in New Issue
Block a user