Future of classic drivers: update the migration proposal
Future of classic drivers: update the migration proposal

As I started working on the migration implementation, it became
apparent that the current proposal is not the best. This patch
makes the following changes:

1. Do not calculate migration per node, but rather per driver. Doing
   it per node is not required for the current classic drivers.
   It complicates the database code and makes it potentially less
   efficient, because we need to fetch and update every node
   separately.

2. Return hardware type and interfaces separately from to_hardware_types.
   Also return interfaces without _interface suffix. This simplifies
   additional checks in the migration code.

3. Add support for options in migrations, and add an option to reset
   unsupported interfaces to no-<interface>. This is needed to make
   this migration more usable. For example, for ``pxe_ipmitool``
   to be migrated under the current proposal, a deployment must have
   ``agent`` RAID and ``shellinabox`` console enabled, even if it
   does not use and/or does not support them. The new options will
   allow such deployments to have unsupported interfaces reset.

Change-Id: I194be98bdd1f307ce6b9054a0037788f81cb0d23
Related-Bug: #1690185

openstack/ironic-specs