ironic/releasenotes/notes/in-band-steps-e4a1fe759029fea5.yaml
Dmitry Tantsur deec7f4a92 agent_base: support inserting in-band deploy steps
Currently all almost all of the deployment process is contained in a
single deploy step called deploy, on the deploy interface. This
restricts the customisation that can be applied via deploy steps, since
steps may only be added before or after this step.

This change allows deploy interfaces inheriting agent_base.AgentDeployMixin
to be used with in-band deploy steps. It is implemented by decomposing
the reboot_and_finish_deploy call into three deploy steps:
* tear_down_agent (priority 40)
* switch_to_tenant_network (priority 30)
* boot_instance (priority 20)
All steps with priorities between 99 and 41 can run in-band.

Backwards compatibility with drivers that do not support decomposed
steps is maintained via a 'has_decomposed_deploy_steps' method on the
agent heartbeat mixin.

The old reboot_and_finish_deploy call is also left for compatibility
but does nothing since the new steps will be automatically run.

Change-Id: Ie4fdd195efa941165e22bd4ce9484988a1760b2d
Story: #2006963
Task: #40151
2020-07-08 11:08:39 +02:00

24 lines
1.1 KiB
YAML

---
features:
- |
Adds support for running custom in-band deploy steps when provisioning.
Step priorities from 41 to 59 can be used for steps that run after
the image is written and the bootloader is installed.
deprecations:
- |
Running the whole deployment process as a monolithic ``deploy.deploy``
deploy step is now deprecated. In a future release this step will only be
used to prepare deployment and starting the agent, and special handling
will be removed. All third party deploy interfaces must be updated
to provide real deploy steps instead and set the
``has_decomposed_deploy_steps`` attribute to ``True`` on the deploy
interface level.
other:
- |
As part of the agent deploy interfaces refactoring, breaking changes will
be made to implementations of ``AgentDeploy`` and ``ISCSIDeploy``.
Third party deploy interfaces must be updated to inherit
``HeartbeatMixin``, ``AgentBaseMixin`` or ``AgentDeployMixin``
from ``ironic.drivers.modules.agent_base`` instead since their API is
considered more stable.