Files
computer-playbook/tests/unit/python/cli
kevinveenbirkenbachandClaude Opus 5.5 764b69267c fix(recover): restore an NFS generation onto the export base it was taken from
svc-bkp-nfs-2-local snapshots the export base (/srv/nfs), so a
generation's files/ root already holds infinito-state/. Without an
explicit target, `recover nfs` and `recover full` restored it onto
/srv/nfs/infinito-state: the tree came out as
infinito-state/infinito-state/<volume>, and `rsync --delete` wiped every
live volume directory and the backup root under the old target.

- paths.NFS_EXPORT_BASE = get_export_base(), the function behind
  lookup('nfs_export_base') that also feeds the backup unit's source,
  replaces NFS_EXPORT_STATE. NfsRecoverer defaults to it; an explicit
  `snapshot:/abs` target still wins, a remote target is still prefixed
  with its host. `recover full` inherits the default.
- recover_drill.sh seeds its marker at files/infinito-state/<volume>/
  and asserts it under the export base, so the drill can no longer pass
  on a nested layout.
- The help examples, schema.yml and the CLI README show the export base;
  the documented subtree example would have nested too and now names the
  matching snapshot subtree.

Reproduced on a temp tree with the role's real script.sh and recover.py
and the CLI's argv: the old default loses every live volume and the
backup root, the new one restores in place. The new tests fail 6 of 6
against the old default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 17:56:26 +01:00
..
…
…
…