diff --git a/doc/source/admin/deploy-steps.rst b/doc/source/admin/deploy-steps.rst index 22bd87b98d..1e4b68c8ff 100644 --- a/doc/source/admin/deploy-steps.rst +++ b/doc/source/admin/deploy-steps.rst @@ -33,6 +33,11 @@ is a higher priority. If the same priority is used by deploy steps on different interfaces, the following resolution order is used: Power, Management, Deploy, BIOS, and RAID interfaces. +Writing a Deploy Step +--------------------- + +Please refer to :doc:`/contributor/deploy-steps`. + FAQ === diff --git a/doc/source/contributor/deploy-steps.rst b/doc/source/contributor/deploy-steps.rst new file mode 100644 index 0000000000..a12b2867f3 --- /dev/null +++ b/doc/source/contributor/deploy-steps.rst @@ -0,0 +1,62 @@ +Developing a new Deploy Step +============================ + +To support customized deployment step, implement a new method in an interface +class and use the decorator ``deploy_step`` defined in +``ironic/drivers/base.py``. For example, we will implement a ``do_nothing`` +deploy step in the ``AgentDeploy`` class. + +.. code-block:: python + + class AgentDeploy(AgentDeployMixin, base.DeployInterface): + ... + + @base.deploy_step(priority=200, argsinfo={ + 'test_arg': { + 'description': ( + "This is a test argument." + ), + 'required': True + } + }) + def do_nothing(self, task, **kwargs): + return None + +After deployment of the baremetal node, check the updated deploy steps:: + + openstack baremetal node show $node_ident -f json -c driver_internal_info + +The above command outputs the ``driver_internal_info`` as following:: + + { + "driver_internal_info": { + ... + "deploy_steps": [ + { + "priority": 200, + "interface": "deploy", + "step": "do_nothing", + "argsinfo": + { + "test_arg": + { + "required": True, + "description": "This is a test argument." + } + } + }, + { + "priority": 100, + "interface": "deploy", + "step": "deploy", + "argsinfo": null + } + ], + "deploy_step_index": 1 + } + } + +.. note:: + + Similarly, clean steps can be implemented using the ``clean_step`` + decorator. diff --git a/doc/source/contributor/index.rst b/doc/source/contributor/index.rst index 0fecba5453..4bc90a2d95 100644 --- a/doc/source/contributor/index.rst +++ b/doc/source/contributor/index.rst @@ -65,6 +65,7 @@ the developer community about any implementation using this functionality. Writing "vendor_passthru" methods Creating new BIOS interfaces Third party continuous integration testing + Writing Deploy or Clean Steps Testing Network Integration ---------------------------