Skip to content

DaltonInCloudx0/storage-migration-dryrun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Storage Migration Dry-Run Tool

A non-destructive, read-only dry-run utility for planning on-prem storage and datastore migrations.

This tool is designed to answer one question before anything moves:

“If we try this migration, what will break — and how long will it take?”

It simulates storage migration scenarios using inventory data, applies configurable safety and risk rules, and produces a clear GO / NO-GO decision with supporting evidence.


Why this exists

Storage migrations fail for boring reasons:

  • insufficient destination capacity
  • snapshot sprawl
  • unrealistic throughput assumptions
  • hidden blast radius
  • unclear outage windows

This tool focuses on preventing those failures by running a rehearsal that:

  • does not modify infrastructure
  • does not require downtime
  • produces artifacts suitable for change review, operations, and management

It is intentionally conservative and opinionated in favor of safety.


What it does

During a dry-run, the tool:

  • Identifies candidate VMs on source datastores
  • Calculates effective data to move, accounting for:
    • copy overhead
    • snapshots
    • thin provisioning penalties
  • Evaluates destination datastore capacity with safety headroom
  • Estimates migration duration using configurable throughput assumptions
  • Flags risk conditions (snapshots, size, tooling, policy violations)
  • Produces:
    • a structured GO / NO-GO decision
    • detailed findings
    • a placement plan
    • JSON and HTML evidence reports

No changes are made to infrastructure.


What it does not do (by design)

  • No live migrations
  • No storage writes
  • No destructive actions
  • No assumptions about cloud platforms

This is a planning and validation tool, not an execution engine.


Architecture overview

           +-------------------+
           |  Inventory Source |
           |  (mock / future)  |
           +---------+---------+
                     |
                     v
           +-------------------+
           |   Dry-Run Analyzer|
           |-------------------|
           | • capacity checks |
           | • risk rules      |
           | • time estimates  |
           +---------+---------+
                     |
                     v
           +-------------------+
           |   Evidence Output |
           |-------------------|
           | • JSON report     |
           | • HTML report     |
           | • GO / NO-GO      |
           +-------------------+

The provider layer is intentionally abstracted so inventory sources can be swapped without changing analysis logic.


Quick start

Requirements

  • Python 3.9+
  • No external services required

Setup

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Run a dry-run

python -m dryrun.cli

Or, if installed in editable mode:

pip install -e .
storage-dryrun

Reports are written to a timestamped directory under ./out/.


Configuration

config/plan.yaml

Defines what you want to evaluate.

migration:
  source_datastores:
    - DS_SITEA_01
  destination_datastores:
    - DS_SITEB_01
  auto_place: true

run:
  provider: mock
  inventory_path: ./mock_data/inventory.json

config/assumptions.yaml

Defines how conservative the dry-run should be.

Key areas:

  • throughput assumptions
  • overhead multipliers
  • snapshot penalties
  • free-space safety margins
  • policy rules for GO / NO-GO

These values are deliberately configurable to reflect different environments and risk tolerance.


Output

Each run produces:

  • dryrun_report.json
    Machine-readable results for automation, review, or archiving.

  • dryrun_report.html
    Human-readable evidence pack suitable for:

    • change requests
    • migration reviews
    • post-planning documentation

Example highlights:

  • overall decision (GO / NO-GO)
  • estimated total migration time
  • per-VM placement plan
  • categorized findings (GREEN / YELLOW / RED)

Mock provider (current implementation)

The current provider loads inventory from JSON to enable:

  • safe local testing
  • deterministic behavior
  • easy review of edge cases

This is intentional.

The provider interface is designed so a read-only vCenter provider can be added without changing the analyzer or reporting layers.


Known limitations

See docs/LIMITATIONS.md for a full list.

In short:

  • inventory is mock-based
  • throughput is assumed, not measured
  • guest-level checks are limited

These constraints are deliberate to keep planning safe and repeatable.


Intended use cases

  • Datastore evacuations
  • Data center storage moves
  • Migration window estimation
  • Change impact analysis
  • Pre-migration risk reviews

Philosophy

This tool is biased toward:

  • clarity over cleverness
  • safety over speed
  • boring correctness over optimism

It is designed to fail loudly before production does.


License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors