Based on discussions during and after the Ironic team meeting on June
03, regarding support for substantially different driver work flows,
this is a re-working of the internal driver API.
tl;dr: The strict separation of "control" and "deploy" driver was an
artefact of the ipmi + pxe implementation used in nova-baremetal,
and does not map on to all drivers. Furthermore, the prior
implementation did not accurately represent the separation of
"core", "standard", and "vendor-specific" driver functionality.
These changes impact the v1 API structure, but since that is largely not
implemented yet, this change does not attempt to affect the public API
itself.
Highlights:
- No more deploy + control driver; nodes have one and only one driver.
This drops the deploy_driver and deploy_info parameters,
and renames control_driver -> driver, and control_info -> driver_info.
- Interfaces for core, standard, and vendor functionality now clearly
defined in the driver API.
- Improve Fake driver to demonstrate use of interfaces.
- Convert IPMI and SSH driver classes into interfaces, and move to
drivers/modules/ directory.
- Stub for the pxe interfaces.
- Stub implementations of pxe+ipmi and pxe+ssh drivers.
- driver_info field uses more standard names, but requires
driver-specific data to be in a nested object. Examples in
tests/db/utils.py as before.
A separate doc change will follow this to update the API v1 spec.
Also includes some cosmetic cleanup of test_ssh.py and test_ipmi.py.
Change-Id: I057ede8e07b1b57010e81ef58415debe0ba8b934