feat(mtv-migrate): add warm migration plan support#18
Conversation
Add warm migration capability to the mtv_migrate role using MTV's Changed Block Tracking (CBT) support. Adds spec.warm field to the Plan skeleton, cutover scheduling to the Migration template, and exposes warm/cutover as first-class parameters in migration_request. Resolves: MFG-214 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
albertoflorez
left a comment
There was a problem hiding this comment.
Great work on adding the Warm Migration and Cutover support!
However, I noticed that the meta/argument_specs.yml file hasn't been updated to include these new keys. Without this update, any execution using the mtv_migrate role will fail during the Validating arguments against arg spec task if these parameters are provided in the mtv_migrate_migration_request dictionary.
To fix this, we should add warm and cutover to the options section of the mtv_migrate_migration_request argument spec:
# roles/mtv_migrate/meta/argument_specs.yml
# ... under mtv_migrate_migration_request -> options:
warm:
type: "bool"
default: false
description: Whether to perform a warm migration (pre-copy).
cutover:
type: "str"
description: ISO8601 timestamp for the migration cutover (e.g., 2026-06-20T15:00:00Z).
This ensures the role remains compatible with strict validation environments like AAP and provides better documentation for the role's interface.
|
Thanks @albertoflorez — great catch! I completely missed the Added |
Summary
mtv_migraterole using MTV/Forklift's Changed Block Tracking (CBT)warmandcutoveras first-class parameters inmtv_migrate_migration_requestspec.warmon the Forklift Plan to enable incremental disk copying while VMs runspec.cutoveron the Migration to schedule the final sync (ISO 8601 timestamp)false(cold migration) — fully backwards compatibleResolves
MFG-214 — Create warm migration plan
Usage
Files Changed
roles/mtv_migrate/defaults/main.yml— addedwarmdefault + docsroles/mtv_migrate/tasks/main.yml— processwarmandcutoverparamsroles/mtv_migrate/templates/plan_skeleton.yml.j2— addedspec.warmroles/mtv_migrate/templates/migration.yml.j2— conditionalspec.cutoverTest plan
yamllintpasses (confirmed — warnings only, pre-existing)ansible-lint --offlinepasses production profile (confirmed — 0 failures)spec.warm: truein Plan CR🤖 Generated with Claude Code