Check the destination host when migrating (partial)

Registered by Sylvain Bauza

Migrations (incl. evacuate, live and cold migrate) allow the possibility to either specify a destination host or not. The former option totally bypasses the scheduler by calling the destination Compute RPC API directly.
Unfortunately, there are some cases when migrating a VM, it breaks the scheduler rules so it makes some further boot requests potentially broken due to some constraints not enforced when migrating (like allocation ratios)
As the current API method called select_destinations() only returns one destination per instance requested, there is no way to know if the destination host was a valid target.

The blueprint will accordingly expose a new Scheduler RPC API method called check_my_destination() which will accept filter_properties and request_spec as regular arguments, plus the name of the compute node and will return True or False.
The API for all migrations will be modified to add an extra request body argument called 'check' (accepting True or False) and the corresponding CLI methods will expose that with --check

Blueprint information

John Garbutt
Sylvain Bauza
Sylvain Bauza
Series goal:
Accepted for mitaka
Milestone target:
milestone icon mitaka-3
Started by
John Garbutt
Completed by
John Garbutt

Related branches



Depends on:,topic:bp/persist-request-spec,n,z
Gerrit topic:,topic:bp/check-destination-on-migrations,n,z

Prerequisite test cleanup:,n,z

Addressed by:

Addressed by:
    Clean up live migration retry loop

Addressed by:
    Unify on _schedule_instances

Addressed by:
    Add requested_destination to RequestSpec

Addressed by:
    Factor _rebuild_pick_host out of rebuild_instance

This is now the key patch:

Addressed by:
   Get a ReqSpec in evacuate and pass it to scheduler

Addressed by:
    WIP: Provide ReqSpec to live-migrate conductor task

Addressed by:
    WIP: Unshelve using the RequestSpec object

Addressed by:
    WIP: Cold migrate using the RequestSpec object

Addressed by:
    Verify requested_destination in the scheduler

Addressed by:
    Add a RequestSpec generation migration script

Addressed by:
    Resize API operation passing down original RequestSpec

Addressed by:
    Add requested_destination field to RequestSpec

Addressed by:
    WIP: API changes for verifying the scheduler when migrating

Gerrit topic:,topic:bp/check-destination-on-migrations-newton,n,z


Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.