<commit_before>============
iDRAC driver
============

Overview
========

The integrated Dell Remote Access Controller (iDRAC_) is an out-of-band
management platform on Dell EMC servers, and is supported directly by
the ``idrac`` hardware type. This driver uses the Dell Web Services for
Management (WSMAN) protocol and the standard Distributed Management Task
Force (DMTF) Redfish protocol to perform all of its functions.

iDRAC_ hardware is also supported by the generic ``ipmi`` and ``redfish``
hardware types, though with smaller feature sets.

Key features of the Dell iDRAC driver include:

* Out-of-band node inspection
* Boot device management and firmware management
* Power management
* RAID controller management and RAID volume configuration
* BIOS settings configuration

Ironic Features
---------------

The ``idrac`` hardware type supports the following Ironic interfaces:

* `BIOS Interface`_: BIOS management
* `Inspect Interface`_: Hardware inspection
* `Management Interface`_: Boot device and firmware management
* Power Interface: Power management
* `RAID Interface`_: RAID controller and disk management
* `Vendor Interface`_: BIOS management

Prerequisites
-------------

The ``idrac`` hardware type requires the ``python-dracclient`` library
to be installed on the ironic conductor node(s) if an Ironic node is
configured to use an ``idrac-wsman`` interface implementation, for example::

    sudo pip install 'python-dracclient>=3.1.0'

Additionally, the ``idrac`` hardware type requires the ``sushy`` library
to be installed on the ironic conductor node(s) if an Ironic node is
configured to use an ``idrac-redfish`` interface implementation, for example::

   sudo pip install 'python-dracclient>=3.1.0' 'sushy>=2.0.0'

Enabling
--------

The iDRAC driver supports WSMAN for the bios, inspect, management, power,
raid, and vendor interfaces. In addition, it supports Redfish for
the bios, inspect, management, and power interfaces. The iDRAC driver
allows you to mix and match WSMAN and Redfish interfaces.

The ``idrac-wsman`` implementation must be enabled to use WSMAN for
an interface. The ``idrac-redfish`` implementation must be enabled
to use Redfish for an interface.

.. NOTE::
   Redfish is supported for only the bios, inspect, management, and power
   interfaces at the present time.

To enable the ``idrac`` hardware type with the minimum interfaces,
all using WSMAN, add the following to your ``/etc/ironic/ironic.conf``:

.. code-block:: ini

    [DEFAULT]
    enabled_hardware_types=idrac
    enabled_management_interfaces=idrac-wsman
    enabled_power_interfaces=idrac-wsman

To enable all optional features (BIOS, inspection, RAID, and vendor passthru)
using Redfish where it is supported and WSMAN where not, use the
following configuration:

.. code-block:: ini

    [DEFAULT]
    enabled_hardware_types=idrac
    enabled_bios_interfaces=idrac-redfish
    enabled_inspect_interfaces=idrac-redfish
    enabled_management_interfaces=idrac-redfish
    enabled_power_interfaces=idrac-redfish
    enabled_raid_interfaces=idrac-wsman
    enabled_vendor_interfaces=idrac-wsman

Below is the list of supported interface implementations in priority
order:

================     ============================================================
Interface            Supported Implementations
================     ============================================================
``bios``             ``idrac-wsman``, ``idrac-redfish``, ``no-bios``
``boot``             ``ipxe``, ``pxe``, ``idrac-redfish-virtual-media``
``console``          ``no-console``
``deploy``           ``iscsi``, ``direct``, ``ansible``, ``ramdisk``
``inspect``          ``idrac-wsman``, ``idrac``, ``idrac-redfish``,
                     ``inspector``, ``no-inspect``
``management``       ``idrac-wsman``, ``idrac``, ``idrac-redfish``
``network``          ``flat``, ``neutron``, ``noop``
``power``            ``idrac-wsman``, ``idrac``, ``idrac-redfish``
``raid``             ``idrac-wsman``, ``idrac``, ``no-raid``
``rescue``           ``no-rescue``, ``agent``
``storage``          ``noop``, ``cinder``, ``external``
``vendor``           ``idrac-wsman``, ``idrac``, ``idrac-redfish``, ``no-vendor``
================     ============================================================

.. NOTE::
   ``idrac`` is the legacy name of the WSMAN interface. It has been
   deprecated in favor of ``idrac-wsman`` and may be removed in a
   future release.

Protocol-specific Properties
----------------------------

The WSMAN and Redfish protocols require different properties to be specified
in the Ironic node's ``driver_info`` field to communicate with the bare
metal system's iDRAC.

The WSMAN protocol requires the following properties:<commit_msg>Revert "Update iDRAC doc with missing interfaces"<commit_after>============
iDRAC driver
============

Overview
========

The integrated Dell Remote Access Controller (iDRAC_) is an out-of-band
management platform on Dell EMC servers, and is supported directly by
the ``idrac`` hardware type. This driver uses the Dell Web Services for
Management (WSMAN) protocol and the standard Distributed Management Task
Force (DMTF) Redfish protocol to perform all of its functions.

iDRAC_ hardware is also supported by the generic ``ipmi`` and ``redfish``
hardware types, though with smaller feature sets.

Key features of the Dell iDRAC driver include:

* Out-of-band node inspection
* Boot device management and firmware management
* Power management
* RAID controller management and RAID volume configuration
* BIOS settings configuration

Ironic Features
---------------

The ``idrac`` hardware type supports the following Ironic interfaces:

* `BIOS Interface`_: BIOS management
* `Inspect Interface`_: Hardware inspection
* `Management Interface`_: Boot device and firmware management
* Power Interface: Power management
* `RAID Interface`_: RAID controller and disk management
* `Vendor Interface`_: BIOS management

Prerequisites
-------------

The ``idrac`` hardware type requires the ``python-dracclient`` library
to be installed on the ironic conductor node(s) if an Ironic node is
configured to use an ``idrac-wsman`` interface implementation, for example::

    sudo pip install 'python-dracclient>=3.1.0'

Additionally, the ``idrac`` hardware type requires the ``sushy`` library
to be installed on the ironic conductor node(s) if an Ironic node is
configured to use an ``idrac-redfish`` interface implementation, for example::

   sudo pip install 'python-dracclient>=3.1.0' 'sushy>=2.0.0'

Enabling
--------

The iDRAC driver supports WSMAN for the bios, inspect, management, power,
raid, and vendor interfaces. In addition, it supports Redfish for
the bios, inspect, management, and power interfaces. The iDRAC driver
allows you to mix and match WSMAN and Redfish interfaces.

The ``idrac-wsman`` implementation must be enabled to use WSMAN for
an interface. The ``idrac-redfish`` implementation must be enabled
to use Redfish for an interface.

.. NOTE::
   Redfish is supported for only the bios, inspect, management, and power
   interfaces at the present time.

To enable the ``idrac`` hardware type with the minimum interfaces,
all using WSMAN, add the following to your ``/etc/ironic/ironic.conf``:

.. code-block:: ini

    [DEFAULT]
    enabled_hardware_types=idrac
    enabled_management_interfaces=idrac-wsman
    enabled_power_interfaces=idrac-wsman

To enable all optional features (BIOS, inspection, RAID, and vendor passthru)
using Redfish where it is supported and WSMAN where not, use the
following configuration:

.. code-block:: ini

    [DEFAULT]
    enabled_hardware_types=idrac
    enabled_bios_interfaces=idrac-redfish
    enabled_inspect_interfaces=idrac-redfish
    enabled_management_interfaces=idrac-redfish
    enabled_power_interfaces=idrac-redfish
    enabled_raid_interfaces=idrac-wsman
    enabled_vendor_interfaces=idrac-wsman

Below is the list of supported interface implementations in priority
order:

================     ===================================================
Interface            Supported Implementations
================     ===================================================
``bios``             ``idrac-wsman``, ``idrac-redfish``, ``no-bios``
``boot``             ``ipxe``, ``pxe``
``console``          ``no-console``
``deploy``           ``iscsi``, ``direct``, ``ansible``, ``ramdisk``
``inspect``          ``idrac-wsman``, ``idrac``, ``idrac-redfish``,
                     ``inspector``, ``no-inspect``
``management``       ``idrac-wsman``, ``idrac``, ``idrac-redfish``
``network``          ``flat``, ``neutron``, ``noop``
``power``            ``idrac-wsman``, ``idrac``, ``idrac-redfish``
``raid``             ``idrac-wsman``, ``idrac``, ``no-raid``
``rescue``           ``no-rescue``, ``agent``
``storage``          ``noop``, ``cinder``, ``external``
``vendor``           ``idrac-wsman``, ``idrac``, ``no-vendor``
================     ===================================================

.. NOTE::
   ``idrac`` is the legacy name of the WSMAN interface. It has been
   deprecated in favor of ``idrac-wsman`` and may be removed in a
   future release.

Protocol-specific Properties
----------------------------

The WSMAN and Redfish protocols require different properties to be specified
in the Ironic node's ``driver_info`` field to communicate with the bare
metal system's iDRAC.

The WSMAN protocol requires the following properties:
{'fraction_non_alphanumeric': 0.1645328536662787, 'fraction_numerical': 0.0019045603639826474, 'mean_word_length': 4.213458356315499, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '345519', 'n_tokens_mistral': 2681, 'n_tokens_neox': 2532, 'n_words': 965}