Move prep_resize to Conductor

https://blueprints.launchpad.net/nova/+spec/move-prep-resize-to-conductor

So as to prepare the scheduler to be a separate project, we need to remove all proxy calls from the scheduler to compute nodes. prep_resize() is still in Scheduler V3 API, so we need to modify how cold migrations are retried.

Problem description

When a cold migration is requested, there is a direct call from conductor to compute.prep_resize() which is OK. The problem is when the cold migration is failing, where compute node is asking Scheduler to reschedule a new migration by calling scheduler.prep_resize(), which itself calls compute.prep_resize() after issuing a select_destinations().

Proposed change

The idea is to replace the call back by conductor.migrate_server instead of scheduler.prep_resize in the compute prep_resize method.

Alternatives

All prep_resize logic should be left to the conductor, but that’s a bigger step than just moving the scheduler logic to conductor. With regards to small iterations, that blueprint is quicker to implement and less risky, so that another blueprint for placing cold and hot migrations to conductor [1] could use it as dependency.

Data model impact

None

REST API impact

None

Security impact

None

Notifications impact

None

Other end user impact

None

Performance Impact

None

Other deployer impact

None

Developer impact

None

Implementation

Assignee(s)

Primary assignee:

sylvain-bauza

Other contributors:

None

Work Items

  • Replace call to scheduler.prep_resize by call to conductor.migrate_server in compute.prep_resize

  • Remove prep_resize in Scheduler RPC API and note it to be removed in manager

Dependencies

None

Testing

Covered by existing tempest tests and CIs.

Documentation Impact

None