# Migration Validation Framework ## Problem Infrastructure migrations often fail in small, expensive ways: a mount option changes, a service is disabled, or disk usage moves past an operational threshold. Teams need structured evidence that the migrated host still matches the expected operating profile. ## CV Relevance This project maps to storage/platform migration validation work: collecting pre-migration and post-migration state, comparing results, and producing evidence that can be attached to change or migration tickets. ## What This Project Demonstrates - A Python CLI for collecting and comparing system snapshots. - Modular collectors for mounts, services, and disk usage. - Risk assessment and validation checks for before/after drift. - JSON and HTML evidence suitable for migration review. - Offline tests and examples that run without remote hosts. ## Architecture ``` Operator -> CLI -> Collectors -> JSON Snapshot -> Comparator -> Diff/Report ``` Core components: - `cli.py` provides collect, compare, snapshot, list, and report commands. - `collectors/` gathers mounts, services, and disk usage. - `validators/compare.py` identifies drift and validation failures. - `reports/` contains report generation helpers with escaped HTML output. - `examples/` contains realistic before/after evidence. ## Quickstart ```bash cd professional-infra/migration-validation-framework make test make demo ``` The demo compares the included example snapshots: ```bash python3 cli.py compare examples/before.json examples/after.json --output /tmp/migration-diff.json ``` The example intentionally returns `FAIL` because it demonstrates a high-risk migration finding. Legacy snapshot IDs are still supported: ```bash python3 cli.py snapshot --env prod --label pre --systems web01,db01 python3 cli.py compare prod-pre-20260429_020000 prod-post-20260429_030000 --output change-0429 ``` ## Validation ```bash make test ``` This compiles the Python modules and runs unit tests for example comparison, parser behavior, and HTML escaping. ## Example Output ```text Comparison completed: diff.json (FAIL) Overall risk: high Total changes: 4 Failed checks: critical_services_running Recommendation: restore sshd before production cutover ``` Sample inputs and output are available in [examples/before.json](examples/before.json), [examples/after.json](examples/after.json), and [examples/diff.json](examples/diff.json). ## Roadmap - Add database-specific migration checks. - Add performance baseline comparisons. - Add a REST API wrapper for CI/CD integration. - Add compliance-oriented validation profiles. ## Interview Talking Points - Why pre/post migration evidence reduces risk during storage and platform migrations. - How to separate collection from comparison so evidence can be replayed. - How drift detection supports change approval and rollback decisions.