Remove the ilo classic drivers
This removes pxe_ilo, iscsi_ilo and agent_ilo. Also removed is the whole documentation section dedicated to them. Change-Id: Ie6f8a65d68ce4eb9c8467c416df5f3a35f0abe98
This commit is contained in:
parent
cfea538ea3
commit
9c7729d6b7
@ -634,7 +634,7 @@ function is_deployed_by_oneview {
|
||||
}
|
||||
|
||||
function is_deployed_by_ilo {
|
||||
[[ -z "${IRONIC_DEPLOY_DRIVER##*ilo}" ]] && return 0
|
||||
[[ "${IRONIC_DEPLOY_DRIVER}" == ilo ]] && return 0
|
||||
return 1
|
||||
}
|
||||
|
||||
@ -1966,8 +1966,7 @@ function enroll_nodes {
|
||||
node_options+=" --driver-info ilo_address=$bmc_address \
|
||||
--driver-info ilo_password=$bmc_passwd \
|
||||
--driver-info ilo_username=$bmc_username"
|
||||
if [[ $IRONIC_DEPLOY_DRIVER != "pxe_ilo" && \
|
||||
$IRONIC_ENABLED_BOOT_INTERFACES == *"ilo-virtual-media"* ]]; then
|
||||
if [[ $IRONIC_ENABLED_BOOT_INTERFACES == *"ilo-virtual-media"* ]]; then
|
||||
node_options+=" --driver-info ilo_deploy_iso=$IRONIC_DEPLOY_ISO_ID"
|
||||
fi
|
||||
elif is_deployed_by_drac; then
|
||||
|
@ -375,551 +375,6 @@ Enable driver
|
||||
|
||||
$ service ironic-conductor restart
|
||||
|
||||
Classic Drivers (Deprecated)
|
||||
============================
|
||||
|
||||
These are the classic drivers (deprecated) for ProLiant hardware:
|
||||
|
||||
* ``pxe_ilo``
|
||||
* ``iscsi_ilo``
|
||||
* ``agent_ilo``
|
||||
|
||||
.. warning::
|
||||
The classic drivers are deprecated in the Queens release and will be removed
|
||||
in the Rocky release. The ``ilo`` hardware type should be used instead of
|
||||
the classic drivers.
|
||||
|
||||
To enable the same feature set as provided by all iLO classic drivers,
|
||||
apply the following configuration:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[DEFAULT]
|
||||
enabled_hardware_types = ilo
|
||||
enabled_boot_interfaces = ilo-virtual-media,ilo-pxe
|
||||
enabled_power_interfaces = ilo
|
||||
enabled_console_interfaces = ilo
|
||||
enabled_raid_interfaces = agent
|
||||
enabled_management_interfaces = ilo
|
||||
enabled_inspect_interfaces = ilo
|
||||
|
||||
The following commands can be used to enroll a node with the same
|
||||
feature set as one of the classic drivers, but using the ``ilo``
|
||||
hardware type:
|
||||
|
||||
* ``iscsi_ilo``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
openstack baremetal node create --os-baremetal-api-version=1.31 \
|
||||
--driver ilo \
|
||||
--deploy-interface iscsi \
|
||||
--boot-interface ilo-virtual-media \
|
||||
--driver-info ilo_address=<ilo-ip-address> \
|
||||
--driver-info ilo_username=<ilo-username> \
|
||||
--driver-info ilo_password=<ilo-password> \
|
||||
--driver-info ilo_deploy_iso=<glance-uuid-of-deploy-iso>
|
||||
|
||||
* ``pxe_ilo``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
openstack baremetal node create --os-baremetal-api-version=1.31 \
|
||||
--driver ilo \
|
||||
--deploy-interface iscsi \
|
||||
--boot-interface ilo-pxe \
|
||||
--driver-info ilo_address=<ilo-ip-address> \
|
||||
--driver-info ilo_username=<ilo-username> \
|
||||
--driver-info ilo_password=<ilo-password> \
|
||||
--driver-info deploy_kernel=<glance-uuid-of-pxe-deploy-kernel> \
|
||||
--driver-info deploy_ramdisk=<glance-uuid-of-deploy-ramdisk>
|
||||
|
||||
* ``agent_ilo``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
openstack baremetal node create --os-baremetal-api-version=1.31 \
|
||||
--driver ilo \
|
||||
--deploy-interface direct \
|
||||
--boot-interface ilo-virtual-media \
|
||||
--driver-info ilo_address=<ilo-ip-address> \
|
||||
--driver-info ilo_username=<ilo-username> \
|
||||
--driver-info ilo_password=<ilo-password> \
|
||||
--driver-info ilo_deploy_iso=<glance-uuid-of-deploy-iso>
|
||||
|
||||
iscsi_ilo driver
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
Overview
|
||||
~~~~~~~~
|
||||
``iscsi_ilo`` driver was introduced as an alternative to ``pxe_ipmitool``
|
||||
and ``pxe_ipminative`` drivers for HPE ProLiant servers. ``iscsi_ilo`` uses
|
||||
virtual media feature in iLO to boot up the bare metal node instead of using
|
||||
PXE or iPXE.
|
||||
|
||||
Target Users
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* Users who do not want to use PXE/TFTP protocol in their data centers.
|
||||
|
||||
* Users who have concerns with PXE protocol's security issues and want to have a
|
||||
security enhanced PXE-less deployment mechanism.
|
||||
|
||||
The PXE driver passes management information in clear-text to the
|
||||
bare metal node. However, if swift proxy server and glance have HTTPS
|
||||
endpoints (See :ref:`EnableHTTPSinSwift`, :ref:`EnableHTTPSinGlance`
|
||||
for more information), the ``iscsi_ilo`` driver provides enhanced security by
|
||||
exchanging management information with swift and glance endpoints over HTTPS.
|
||||
The management information, deploy ramdisk and boot images for the instance
|
||||
will be retrieved over encrypted management network via iLO virtual media.
|
||||
|
||||
Tested Platforms
|
||||
~~~~~~~~~~~~~~~~
|
||||
This driver should work on HPE ProLiant Gen7 servers with iLO 3, Gen8 and Gen9
|
||||
servers with iLO 4 and Gen10 servers with iLO 5. It has been tested with the
|
||||
following servers:
|
||||
|
||||
* ProLiant DL380 G7
|
||||
* ProLiant DL380e Gen8
|
||||
* ProLiant DL580 Gen8 UEFI
|
||||
* ProLiant DL180 Gen9 UEFI
|
||||
* ProLiant DL360 Gen9 UEFI
|
||||
* ProLiant DL380 Gen9 UEFI
|
||||
* ProLiant XL450 Gen9 UEFI
|
||||
* ProLiant DL360 Gen10
|
||||
|
||||
For more up-to-date information on server platform support info, refer
|
||||
`iLO driver wiki page <https://wiki.openstack.org/wiki/Ironic/Drivers/iLODrivers>`_.
|
||||
|
||||
Features
|
||||
~~~~~~~~
|
||||
* PXE-less deploy with virtual media.
|
||||
* Automatic detection of current boot mode.
|
||||
* Automatic setting of the required boot mode, if UEFI boot mode is requested
|
||||
by the nova flavor's extra spec.
|
||||
* Supports booting the instance from virtual media (netboot) as well as booting
|
||||
locally from disk. By default, the instance will always boot from virtual
|
||||
media for partition images.
|
||||
* UEFI Boot Support
|
||||
* UEFI Secure Boot Support
|
||||
* Passing management information via secure, encrypted management network
|
||||
(virtual media) if swift proxy server and glance have HTTPS endpoints. See
|
||||
:ref:`EnableHTTPSinSwift`, :ref:`EnableHTTPSinGlance` for more
|
||||
information. User image provisioning is done using iSCSI over data network,
|
||||
so this driver has the benefit of security enhancement with the same
|
||||
performance. It segregates management info from data channel.
|
||||
* Supports both out-of-band and in-band cleaning operations. For more details,
|
||||
see :ref:`InbandvsOutOfBandCleaning`.
|
||||
* Remote Console
|
||||
* HW Sensors
|
||||
* Works well for machines with resource constraints (lesser amount of memory).
|
||||
* Support for out-of-band hardware inspection.
|
||||
* Swiftless deploy for intermediate images
|
||||
* HTTP(S) Based Deploy.
|
||||
* iLO drivers with standalone ironic.
|
||||
|
||||
Requirements
|
||||
~~~~~~~~~~~~
|
||||
* **iLO 4** or **iLO 5 Advanced License** needs to be installed on iLO to
|
||||
enable Virtual Media Boot feature.
|
||||
* **Swift Object Storage Service** - iLO driver uses swift to store temporary
|
||||
FAT images as well as boot ISO images.
|
||||
* **Glance Image Service with swift configured as its backend** - When using
|
||||
``iscsi_ilo`` driver, the image containing the deploy ramdisk is retrieved
|
||||
from swift directly by the iLO.
|
||||
|
||||
|
||||
Deploy Process
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Please refer to `Netboot with glance and swift`_ and
|
||||
`Localboot with glance and swift for partition images`_ for the deploy process
|
||||
of partition image and `Localboot with glance and swift`_ for the deploy
|
||||
process of whole disk image.
|
||||
|
||||
Configuring and Enabling the driver
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Please refer to `Glance Configuration`_ and `Enable driver`_.
|
||||
|
||||
Registering ProLiant node in ironic
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Nodes configured for iLO driver should have the ``driver`` property set to
|
||||
``iscsi_ilo``. The following configuration values are also required in
|
||||
``driver_info``:
|
||||
|
||||
- ``ilo_address``: IP address or hostname of the iLO.
|
||||
- ``ilo_username``: Username for the iLO with administrator privileges.
|
||||
- ``ilo_password``: Password for the above iLO user.
|
||||
- ``ilo_deploy_iso``: The glance UUID of the deploy ramdisk ISO image.
|
||||
- ``ca_file``: (optional) CA certificate file to validate iLO.
|
||||
- ``client_port``: (optional) Port to be used for iLO operations if you are
|
||||
using a custom port on the iLO. Default port used is 443.
|
||||
- ``client_timeout``: (optional) Timeout for iLO operations. Default timeout
|
||||
is 60 seconds.
|
||||
- ``console_port``: (optional) Node's UDP port for console access. Any unused
|
||||
port on the ironic conductor node may be used.
|
||||
|
||||
.. note::
|
||||
To update SSL certificates into iLO, you can refer to `HPE Integrated
|
||||
Lights-Out Security Technology Brief <http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=c04530504>`_.
|
||||
You can use iLO hostname or IP address as a 'Common Name (CN)' while
|
||||
generating Certificate Signing Request (CSR). Use the same value as
|
||||
`ilo_address` while enrolling node to Bare Metal service to avoid SSL
|
||||
certificate validation errors related to hostname mismatch.
|
||||
|
||||
.. note::
|
||||
If configuration values for ``ca_file``, ``client_port`` and
|
||||
``client_timeout`` are not provided in the ``driver_info`` of the node,
|
||||
the corresponding config variables defined under ``[ilo]`` section in
|
||||
ironic.conf will be used.
|
||||
|
||||
For example, you could run a similar command like below to enroll the ProLiant
|
||||
node::
|
||||
|
||||
openstack baremetal node create --driver iscsi_ilo \
|
||||
--driver-info ilo_address=<ilo-ip-address> \
|
||||
--driver-info ilo_username=<ilo-username> \
|
||||
--driver-info ilo_password=<ilo-password> \
|
||||
--driver-info ilo_deploy_iso=<glance-uuid-of-deploy-iso>
|
||||
|
||||
Boot modes
|
||||
~~~~~~~~~~
|
||||
Please refer to `Boot mode support`_ for more information.
|
||||
|
||||
UEFI Secure Boot
|
||||
~~~~~~~~~~~~~~~~
|
||||
Please refer to `UEFI Secure Boot Support`_ for more information.
|
||||
|
||||
Node cleaning
|
||||
~~~~~~~~~~~~~
|
||||
Please refer to `Node Cleaning Support`_ for more information.
|
||||
|
||||
Hardware Inspection
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `Hardware Inspection Support`_ for more information.
|
||||
|
||||
Swiftless deploy for intermediate deploy and boot images
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `Swiftless deploy for intermediate images`_ for more
|
||||
information.
|
||||
|
||||
HTTP(S) Based Deploy
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `HTTP(S) Based Deploy Support`_ for more information.
|
||||
|
||||
iLO drivers with standalone ironic
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `Support for iLO drivers with Standalone Ironic`_ for
|
||||
more information.
|
||||
|
||||
RAID Configuration
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `RAID Support`_ for more information.
|
||||
|
||||
agent_ilo driver
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
Overview
|
||||
~~~~~~~~
|
||||
``agent_ilo`` driver was introduced as an alternative to ``agent_ipmitool``
|
||||
and ``agent_ipminative`` drivers for HPE ProLiant servers. ``agent_ilo`` driver
|
||||
uses virtual media feature in HPE ProLiant bare metal servers to boot up the
|
||||
Ironic Python Agent (IPA) on the bare metal node instead of using PXE. For
|
||||
more information on IPA, refer
|
||||
https://wiki.openstack.org/wiki/Ironic-python-agent.
|
||||
|
||||
Target Users
|
||||
~~~~~~~~~~~~
|
||||
* Users who do not want to use PXE/TFTP protocol on their data centres.
|
||||
* Users who have concerns on PXE based agent driver's security and
|
||||
want to have a security enhanced PXE-less deployment mechanism.
|
||||
|
||||
The PXE based agent drivers pass management information in clear-text to
|
||||
the bare metal node. However, if swift proxy server and glance have HTTPS
|
||||
endpoints (See :ref:`EnableHTTPSinSwift`, :ref:`EnableHTTPSinGlance` for more
|
||||
information), the ``agent_ilo`` driver provides enhanced security by
|
||||
exchanging authtoken and management information with swift and glance
|
||||
endpoints over HTTPS. The management information and deploy ramdisk will be
|
||||
retrieved over encrypted management network via iLO.
|
||||
|
||||
Tested Platforms
|
||||
~~~~~~~~~~~~~~~~
|
||||
This driver should work on HPE ProLiant Gen7 servers with iLO 3, Gen8 and Gen9
|
||||
servers with iLO 4 and Gen10 servers with iLO 5. It has been tested with the
|
||||
following servers:
|
||||
|
||||
* ProLiant DL380 G7
|
||||
* ProLiant DL380e Gen8
|
||||
* ProLiant DL580e Gen8
|
||||
* ProLiant DL360 Gen9 UEFI
|
||||
* ProLiant DL380 Gen9 UEFI
|
||||
* ProLiant DL180 Gen9 UEFI
|
||||
* ProLiant XL450 Gen9 UEFI
|
||||
* ProLiant DL360 Gen10
|
||||
|
||||
For more up-to-date information, check the
|
||||
`iLO driver wiki page <https://wiki.openstack.org/wiki/Ironic/Drivers/iLODrivers>`_.
|
||||
|
||||
Features
|
||||
~~~~~~~~
|
||||
* PXE-less deploy with virtual media using Ironic Python Agent(IPA).
|
||||
* Support for out-of-band cleaning operations.
|
||||
* Remote Console
|
||||
* HW Sensors
|
||||
* IPA runs on the bare metal node and pulls the image directly from swift.
|
||||
* Supports booting the instance from virtual media (netboot) as well as booting
|
||||
locally from disk. By default, the instance will always boot from virtual
|
||||
media for partition images.
|
||||
* Segregates management info from data channel.
|
||||
* UEFI Boot Support
|
||||
* UEFI Secure Boot Support
|
||||
* Support to use default in-band cleaning operations supported by
|
||||
Ironic Python Agent. For more details, see :ref:`InbandvsOutOfBandCleaning`.
|
||||
* Support for out-of-band hardware inspection.
|
||||
* Swiftless deploy for intermediate images.
|
||||
* HTTP(S) Based Deploy.
|
||||
* iLO drivers with standalone ironic.
|
||||
* Supports tenant network isolation for node instances provisioned for
|
||||
vlan type networks.
|
||||
|
||||
Requirements
|
||||
~~~~~~~~~~~~
|
||||
* **iLO 4** or **iLO 5 Advanced License** needs to be installed on iLO to
|
||||
enable Virtual Media Boot feature.
|
||||
* **Swift Object Storage Service** - iLO driver uses swift to store temporary
|
||||
FAT images as well as boot ISO images.
|
||||
* **Glance Image Service with swift configured as its backend** - When using
|
||||
``agent_ilo`` driver, the image containing the agent is retrieved from
|
||||
swift directly by the iLO.
|
||||
|
||||
Deploy Process
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Please refer to `Netboot with glance and swift`_ and
|
||||
`Localboot with glance and swift for partition images`_ for the deploy process
|
||||
of partition image and `Localboot with glance and swift`_ for the deploy
|
||||
process of whole disk image.
|
||||
|
||||
Configuring and Enabling the driver
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Please refer to `Glance Configuration`_ and `Enable driver`_.
|
||||
|
||||
Registering ProLiant node in ironic
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Nodes configured for iLO driver should have the ``driver`` property set to
|
||||
``agent_ilo``. The following configuration values are also required in
|
||||
``driver_info``:
|
||||
|
||||
- ``ilo_address``: IP address or hostname of the iLO.
|
||||
- ``ilo_username``: Username for the iLO with administrator privileges.
|
||||
- ``ilo_password``: Password for the above iLO user.
|
||||
- ``ilo_deploy_iso``: The glance UUID of the deploy ramdisk ISO image.
|
||||
- ``ca_file``: (optional) CA certificate file to validate iLO.
|
||||
- ``client_port``: (optional) Port to be used for iLO operations if you are
|
||||
using a custom port on the iLO. Default port used is 443.
|
||||
- ``client_timeout``: (optional) Timeout for iLO operations. Default timeout
|
||||
is 60 seconds.
|
||||
- ``console_port``: (optional) Node's UDP port for console access. Any unused
|
||||
port on the ironic conductor node may be used.
|
||||
|
||||
.. note::
|
||||
To update SSL certificates into iLO, you can refer to `HPE Integrated
|
||||
Lights-Out Security Technology Brief <http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=c04530504>`_.
|
||||
You can use iLO hostname or IP address as a 'Common Name (CN)' while
|
||||
generating Certificate Signing Request (CSR). Use the same value as
|
||||
`ilo_address` while enrolling node to Bare Metal service to avoid SSL
|
||||
certificate validation errors related to hostname mismatch.
|
||||
|
||||
.. note::
|
||||
If configuration values for ``ca_file``, ``client_port`` and
|
||||
``client_timeout`` are not provided in the ``driver_info`` of the node,
|
||||
the corresponding config variables defined under ``[ilo]`` section in
|
||||
ironic.conf will be used.
|
||||
|
||||
For example, you could run a similar command like below to enroll the ProLiant
|
||||
node::
|
||||
|
||||
openstack baremetal node create --driver agent_ilo \
|
||||
--driver-info ilo_address=<ilo-ip-address> \
|
||||
--driver-info ilo_username=<ilo-username> \
|
||||
--driver-info ilo_password=<ilo-password> \
|
||||
--driver-info ilo_deploy_iso=<glance-uuid-of-deploy-iso>
|
||||
|
||||
Boot modes
|
||||
~~~~~~~~~~
|
||||
Please refer to `Boot mode support`_ for more information.
|
||||
|
||||
UEFI Secure Boot
|
||||
~~~~~~~~~~~~~~~~
|
||||
Please refer to `UEFI Secure Boot Support`_ for more information.
|
||||
|
||||
Node Cleaning
|
||||
~~~~~~~~~~~~~
|
||||
Please refer to `Node Cleaning Support`_ for more information.
|
||||
|
||||
Hardware Inspection
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `Hardware Inspection Support`_ for more information.
|
||||
|
||||
Swiftless deploy for intermediate deploy and boot images
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `Swiftless deploy for intermediate images`_ for more
|
||||
information.
|
||||
|
||||
HTTP(S) Based Deploy
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `HTTP(S) Based Deploy Support`_ for more information.
|
||||
|
||||
iLO drivers with standalone ironic
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `Support for iLO drivers with Standalone Ironic`_ for
|
||||
more information.
|
||||
|
||||
RAID Configuration
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `RAID Support`_ for more information.
|
||||
|
||||
pxe_ilo driver
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
Overview
|
||||
~~~~~~~~
|
||||
``pxe_ilo`` driver uses PXE/iSCSI (just like ``pxe_ipmitool`` driver) to
|
||||
deploy the image and uses iLO to do power and management operations on the
|
||||
bare metal node(instead of using IPMI).
|
||||
|
||||
Target Users
|
||||
~~~~~~~~~~~~
|
||||
* Users who want to use PXE/iSCSI for deployment in their environment or who
|
||||
don't have Advanced License in their iLO.
|
||||
* Users who don't want to configure boot mode manually on the bare metal node.
|
||||
|
||||
Tested Platforms
|
||||
~~~~~~~~~~~~~~~~
|
||||
This driver should work on HPE ProLiant Gen7 servers with iLO 3, Gen8 and Gen9
|
||||
servers with iLO 4 and Gen10 servers with iLO 5. It has been tested with the
|
||||
following servers:
|
||||
|
||||
* ProLiant DL380 G7
|
||||
* ProLiant DL380e Gen8
|
||||
* ProLiant DL380e Gen8
|
||||
* ProLiant DL580 Gen8 (BIOS/UEFI)
|
||||
* ProLiant DL360 Gen9 UEFI
|
||||
* ProLiant DL380 Gen9 UEFI
|
||||
* ProLiant XL450 Gen9 UEFI
|
||||
* ProLiant DL360 Gen10
|
||||
|
||||
For more up-to-date information, check the
|
||||
`iLO driver wiki page <https://wiki.openstack.org/wiki/Ironic/Drivers/iLODrivers>`_.
|
||||
|
||||
Features
|
||||
~~~~~~~~
|
||||
* Automatic detection of current boot mode.
|
||||
* Automatic setting of the required boot mode, if UEFI boot mode is requested
|
||||
by the nova flavor's extra spec.
|
||||
* Supports both out-of-band and in-band cleaning operations. For more details,
|
||||
see :ref:`InbandvsOutOfBandCleaning`.
|
||||
* Support for out-of-band hardware inspection.
|
||||
* Supports UEFI Boot mode
|
||||
* Supports UEFI Secure Boot
|
||||
* HTTP(S) Based Deploy.
|
||||
|
||||
Requirements
|
||||
~~~~~~~~~~~~
|
||||
None.
|
||||
|
||||
Configuring and Enabling the driver
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
1. Build a deploy image, see :ref:`deploy-ramdisk`
|
||||
|
||||
2. Upload this image to glance::
|
||||
|
||||
glance image-create --name deploy-ramdisk.kernel --disk-format aki --container-format aki < deploy-ramdisk.kernel
|
||||
glance image-create --name deploy-ramdisk.initramfs --disk-format ari --container-format ari < deploy-ramdisk.initramfs
|
||||
|
||||
3. Add ``pxe_ilo`` to the list of ``enabled_drivers`` in
|
||||
``/etc/ironic/ironic.conf``. For example:::
|
||||
|
||||
enabled_drivers = pxe_ipmitool,pxe_ilo
|
||||
|
||||
4. Restart the ironic conductor service::
|
||||
|
||||
service ironic-conductor restart
|
||||
|
||||
Registering ProLiant node in ironic
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Nodes configured for iLO driver should have the ``driver`` property set to
|
||||
``pxe_ilo``. The following configuration values are also required in
|
||||
``driver_info``:
|
||||
|
||||
- ``ilo_address``: IP address or hostname of the iLO.
|
||||
- ``ilo_username``: Username for the iLO with administrator privileges.
|
||||
- ``ilo_password``: Password for the above iLO user.
|
||||
- ``deploy_kernel``: The glance UUID of the deployment kernel.
|
||||
- ``deploy_ramdisk``: The glance UUID of the deployment ramdisk.
|
||||
- ``ca_file``: (optional) CA certificate file to validate iLO.
|
||||
- ``client_port``: (optional) Port to be used for iLO operations if you are
|
||||
using a custom port on the iLO. Default port used is 443.
|
||||
- ``client_timeout``: (optional) Timeout for iLO operations. Default timeout
|
||||
is 60 seconds.
|
||||
- ``console_port``: (optional) Node's UDP port for console access. Any unused
|
||||
port on the ironic conductor node may be used.
|
||||
|
||||
.. note::
|
||||
To update SSL certificates into iLO, you can refer to `HPE Integrated
|
||||
Lights-Out Security Technology Brief <http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=c04530504>`_.
|
||||
You can use iLO hostname or IP address as a 'Common Name (CN)' while
|
||||
generating Certificate Signing Request (CSR). Use the same value as
|
||||
`ilo_address` while enrolling node to Bare Metal service to avoid SSL
|
||||
certificate validation errors related to hostname mismatch.
|
||||
|
||||
.. note::
|
||||
If configuration values for ``ca_file``, ``client_port`` and
|
||||
``client_timeout`` are not provided in the ``driver_info`` of the node,
|
||||
the corresponding config variables defined under ``[ilo]`` section in
|
||||
ironic.conf will be used.
|
||||
|
||||
For example, you could run a similar command like below to enroll the ProLiant
|
||||
node::
|
||||
|
||||
openstack baremetal node create --driver pxe_ilo \
|
||||
--driver-info ilo_address=<ilo-ip-address> \
|
||||
--driver-info ilo_username=<ilo-username> \
|
||||
--driver-info ilo_password=<ilo-password> \
|
||||
--driver-info deploy_kernel=<glance-uuid-of-pxe-deploy-kernel> \
|
||||
--driver-info deploy_ramdisk=<glance-uuid-of-deploy-ramdisk>
|
||||
|
||||
Boot modes
|
||||
~~~~~~~~~~
|
||||
Please refer to `Boot mode support`_ for more information.
|
||||
|
||||
UEFI Secure Boot
|
||||
~~~~~~~~~~~~~~~~
|
||||
Please refer to `UEFI Secure Boot Support`_ for more information.
|
||||
|
||||
Node Cleaning
|
||||
~~~~~~~~~~~~~
|
||||
Please refer to `Node Cleaning Support`_ for more information.
|
||||
|
||||
Hardware Inspection
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `Hardware Inspection Support`_ for more information.
|
||||
|
||||
HTTP(S) Based Deploy
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `HTTP(S) Based Deploy Support`_ for more information.
|
||||
|
||||
iLO drivers with standalone ironic
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `Support for iLO drivers with Standalone Ironic`_ for more information.
|
||||
|
||||
RAID Configuration
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
Please refer to `RAID Support`_ for more information.
|
||||
|
||||
Functionalities across drivers
|
||||
==============================
|
||||
|
||||
@ -1042,10 +497,10 @@ cloud-image.vmlinuz and cloud-image.qcow2 in the current working directory::
|
||||
In UEFI secure boot, digitally signed bootloader should be able to validate
|
||||
digital signatures of kernel during boot process. This requires that the
|
||||
bootloader contains the digital signatures of the kernel.
|
||||
For ``iscsi_ilo`` driver, it is recommended that ``boot_iso`` property for
|
||||
user image contains the glance UUID of the boot ISO.
|
||||
If ``boot_iso`` property is not updated in glance for the user image, it
|
||||
would create the ``boot_iso`` using bootloader from the deploy iso. This
|
||||
For the ``ilo-virtual-media`` boot interface, it is recommended that
|
||||
``boot_iso`` property for user image contains the glance UUID of the boot
|
||||
ISO. If ``boot_iso`` property is not updated in glance for the user image,
|
||||
it would create the ``boot_iso`` using bootloader from the deploy iso. This
|
||||
``boot_iso`` will be able to boot the user image in UEFI secure boot
|
||||
environment only if the bootloader is signed and can validate digital
|
||||
signatures of user image kernel.
|
||||
@ -1097,7 +552,7 @@ Supported **Automated** Cleaning Operations
|
||||
diskimage-builder from Ocata release. By default, this step is disabled.
|
||||
See `Disk Erase Support`_ for more details.
|
||||
|
||||
* For in-band cleaning operations supported by ``agent_ilo`` driver, see
|
||||
* For supported in-band cleaning operations, see
|
||||
:ref:`InbandvsOutOfBandCleaning`.
|
||||
|
||||
* All the automated cleaning steps have an explicit configuration option for
|
||||
@ -1132,8 +587,8 @@ Supported **Manual** Cleaning Operations
|
||||
Activates the iLO Advanced license. This is an out-of-band manual cleaning
|
||||
step associated with the ``management`` interface. See
|
||||
`Activating iLO Advanced license as manual clean step`_ for user guidance
|
||||
on usage. Please note that this operation cannot be performed using virtual
|
||||
media based drivers like ``iscsi_ilo`` and ``agent_ilo`` as they need this
|
||||
on usage. Please note that this operation cannot be performed using the
|
||||
``ilo-virtual-media`` boot interface as it needs this
|
||||
type of advanced license already active to use virtual media to boot into
|
||||
to start cleaning operation. Virtual media is an advanced feature. If an
|
||||
advanced license is already active and the user wants to overwrite the
|
||||
@ -1294,8 +749,7 @@ See :ref:`capabilities-discovery` for more details and examples.
|
||||
Swiftless deploy for intermediate images
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The hardware type ``ilo`` with ``ilo-virtual-media`` as boot interface and
|
||||
virtual media based classical drivers (``iscsi_ilo`` and ``agent_ilo``)
|
||||
The hardware type ``ilo`` with ``ilo-virtual-media`` as boot interface
|
||||
can deploy and boot the server with and without ``swift`` being used for
|
||||
hosting the intermediate temporary floppy image (holding metadata for
|
||||
deploy kernel and ramdisk) and the boot ISO. A local HTTP(S) web server on
|
||||
@ -1351,13 +805,6 @@ and `Web server configuration on conductor`_ needs to be configured for hosting
|
||||
intermediate images on conductor as described in
|
||||
`Swiftless deploy for intermediate images`_.
|
||||
|
||||
Deploy Process
|
||||
~~~~~~~~~~~~~~
|
||||
``iscsi_ilo`` and ``agent_ilo`` supports both netboot and localboot. Please refer
|
||||
to `Netboot in standalone ironic`_ and `Localboot in standalone ironic`_
|
||||
for details of deploy process for netboot and localboot respectively.
|
||||
For ``pxe_ilo``, the deploy process is same as native ``pxe_ipmitool`` driver.
|
||||
|
||||
Deploy Process
|
||||
==============
|
||||
|
||||
|
@ -6,7 +6,7 @@ Introduction
|
||||
|
||||
The Bare Metal service delegates actual hardware management to **drivers**.
|
||||
Starting with the Ocata release, two types of drivers are supported:
|
||||
*classic drivers* (for example, ``pxe_ipmitool``, ``agent_ilo``, etc.) and
|
||||
*classic drivers* (for example, ``pxe_ipmitool``, etc.) and
|
||||
the newer *hardware types* (for example, generic ``redfish`` and ``ipmi``
|
||||
or vendor-specific ``ilo`` and ``irmc``).
|
||||
|
||||
@ -311,7 +311,7 @@ option, for example:
|
||||
.. code-block:: ini
|
||||
|
||||
[DEFAULT]
|
||||
enabled_drivers = pxe_ipmitool,pxe_ilo,pxe_drac
|
||||
enabled_drivers = pxe_ipmitool,pxe_drac
|
||||
|
||||
The names in this comma-separated list are entry point names of the drivers.
|
||||
They have to be available at conductor start-up, and all dependencies must
|
||||
|
@ -15,13 +15,7 @@
|
||||
iLO Driver for managing HP Proliant Gen8 and above servers.
|
||||
"""
|
||||
|
||||
from oslo_utils import importutils
|
||||
|
||||
from ironic.common import exception
|
||||
from ironic.common.i18n import _
|
||||
from ironic.drivers import base
|
||||
from ironic.drivers import generic
|
||||
from ironic.drivers.modules import agent
|
||||
from ironic.drivers.modules.ilo import boot
|
||||
from ironic.drivers.modules.ilo import console
|
||||
from ironic.drivers.modules.ilo import inspect
|
||||
@ -29,7 +23,6 @@ from ironic.drivers.modules.ilo import management
|
||||
from ironic.drivers.modules.ilo import power
|
||||
from ironic.drivers.modules.ilo import vendor
|
||||
from ironic.drivers.modules import inspector
|
||||
from ironic.drivers.modules import iscsi_deploy
|
||||
from ironic.drivers.modules import noop
|
||||
|
||||
|
||||
@ -70,75 +63,3 @@ class IloHardware(generic.GenericHardware):
|
||||
def supported_vendor_interfaces(self):
|
||||
"""List of supported power interfaces."""
|
||||
return [vendor.VendorPassthru, noop.NoVendor]
|
||||
|
||||
|
||||
class IloVirtualMediaIscsiDriver(base.BaseDriver):
|
||||
"""IloDriver using IloClient interface.
|
||||
|
||||
This driver implements the `core` functionality using
|
||||
:class:ironic.drivers.modules.ilo.power.IloPower for power management.
|
||||
and
|
||||
:class:ironic.drivers.modules.ilo.deploy.IloVirtualMediaIscsiDeploy for
|
||||
deploy.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
if not importutils.try_import('proliantutils'):
|
||||
raise exception.DriverLoadError(
|
||||
driver=self.__class__.__name__,
|
||||
reason=_("Unable to import proliantutils library"))
|
||||
|
||||
self.power = power.IloPower()
|
||||
self.boot = boot.IloVirtualMediaBoot()
|
||||
self.deploy = iscsi_deploy.ISCSIDeploy()
|
||||
self.console = console.IloConsoleInterface()
|
||||
self.management = management.IloManagement()
|
||||
self.vendor = vendor.VendorPassthru()
|
||||
self.inspect = inspect.IloInspect()
|
||||
self.raid = agent.AgentRAID()
|
||||
|
||||
@classmethod
|
||||
def to_hardware_type(cls):
|
||||
return 'ilo', {'boot': 'ilo-virtual-media',
|
||||
'console': 'ilo',
|
||||
'deploy': 'iscsi',
|
||||
'inspect': 'ilo',
|
||||
'management': 'ilo',
|
||||
'power': 'ilo',
|
||||
'raid': 'agent',
|
||||
'vendor': 'ilo'}
|
||||
|
||||
|
||||
class IloVirtualMediaAgentDriver(base.BaseDriver):
|
||||
"""IloDriver using IloClient interface.
|
||||
|
||||
This driver implements the `core` functionality using
|
||||
:class:ironic.drivers.modules.ilo.power.IloPower for power management
|
||||
and
|
||||
:class:ironic.drivers.modules.ilo.deploy.IloVirtualMediaAgentDriver for
|
||||
deploy.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
if not importutils.try_import('proliantutils'):
|
||||
raise exception.DriverLoadError(
|
||||
driver=self.__class__.__name__,
|
||||
reason=_("Unable to import proliantutils library"))
|
||||
|
||||
self.power = power.IloPower()
|
||||
self.boot = boot.IloVirtualMediaBoot()
|
||||
self.deploy = agent.AgentDeploy()
|
||||
self.console = console.IloConsoleInterface()
|
||||
self.management = management.IloManagement()
|
||||
self.inspect = inspect.IloInspect()
|
||||
self.raid = agent.AgentRAID()
|
||||
|
||||
@classmethod
|
||||
def to_hardware_type(cls):
|
||||
return 'ilo', {'boot': 'ilo-virtual-media',
|
||||
'console': 'ilo',
|
||||
'deploy': 'direct',
|
||||
'inspect': 'ilo',
|
||||
'management': 'ilo',
|
||||
'power': 'ilo',
|
||||
'raid': 'agent'}
|
||||
|
@ -521,8 +521,8 @@ class IloVirtualMediaBoot(base.BootInterface):
|
||||
msg = 'Virtual media can not boot volume in BIOS boot mode.'
|
||||
raise exception.InstanceDeployFailure(msg)
|
||||
else:
|
||||
# For iscsi_ilo driver, we boot from disk every time if the image
|
||||
# deployed is a whole disk image.
|
||||
# Boot from disk every time if the image deployed is
|
||||
# a whole disk image.
|
||||
node = task.node
|
||||
iwdi = node.driver_internal_info.get('is_whole_disk_image')
|
||||
if deploy_utils.get_boot_option(node) == "local" or iwdi:
|
||||
|
@ -440,9 +440,8 @@ class ISCSIDeploy(AgentDeployMixin, base.DeployInterface):
|
||||
'volume.', node.uuid)
|
||||
return
|
||||
|
||||
# TODO(rameshg87): iscsi_ilo driver uses this method. Remove
|
||||
# and copy-paste it's contents here once iscsi_ilo deploy driver
|
||||
# broken down into separate boot and deploy implementations.
|
||||
# TODO(rameshg87): iscsi_ilo driver used to call this function. Remove
|
||||
# and copy-paste it's contents here.
|
||||
validate(task)
|
||||
|
||||
@METRICS.timer('ISCSIDeploy.deploy')
|
||||
|
@ -24,15 +24,8 @@ from ironic.common import exception
|
||||
from ironic.common.i18n import _
|
||||
from ironic.drivers import base
|
||||
from ironic.drivers import ipmi
|
||||
from ironic.drivers.modules import agent
|
||||
from ironic.drivers.modules.cimc import management as cimc_mgmt
|
||||
from ironic.drivers.modules.cimc import power as cimc_power
|
||||
from ironic.drivers.modules.ilo import boot as ilo_boot
|
||||
from ironic.drivers.modules.ilo import console as ilo_console
|
||||
from ironic.drivers.modules.ilo import inspect as ilo_inspect
|
||||
from ironic.drivers.modules.ilo import management as ilo_management
|
||||
from ironic.drivers.modules.ilo import power as ilo_power
|
||||
from ironic.drivers.modules.ilo import vendor as ilo_vendor
|
||||
from ironic.drivers.modules import inspector
|
||||
from ironic.drivers.modules import ipmitool
|
||||
from ironic.drivers.modules.irmc import boot as irmc_boot
|
||||
@ -54,43 +47,6 @@ PXEAndIPMIToolDriver = ipmi.PXEAndIPMIToolDriver
|
||||
PXEAndIPMIToolAndSocatDriver = ipmi.PXEAndIPMIToolAndSocatDriver
|
||||
|
||||
|
||||
class PXEAndIloDriver(base.BaseDriver):
|
||||
"""PXE + Ilo Driver using IloClient interface.
|
||||
|
||||
This driver implements the `core` functionality using
|
||||
:class:`ironic.drivers.modules.ilo.power.IloPower` for
|
||||
power management
|
||||
:class:`ironic.drivers.modules.iscsi_deploy.ISCSIDeploy` for
|
||||
image deployment.
|
||||
:class:`ironic.drivers.modules.ilo.boot.IloPXEBoot` for boot
|
||||
related actions.
|
||||
"""
|
||||
def __init__(self):
|
||||
if not importutils.try_import('proliantutils'):
|
||||
raise exception.DriverLoadError(
|
||||
driver=self.__class__.__name__,
|
||||
reason=_("Unable to import proliantutils library"))
|
||||
self.power = ilo_power.IloPower()
|
||||
self.boot = ilo_boot.IloPXEBoot()
|
||||
self.deploy = iscsi_deploy.ISCSIDeploy()
|
||||
self.vendor = ilo_vendor.VendorPassthru()
|
||||
self.console = ilo_console.IloConsoleInterface()
|
||||
self.management = ilo_management.IloManagement()
|
||||
self.inspect = ilo_inspect.IloInspect()
|
||||
self.raid = agent.AgentRAID()
|
||||
|
||||
@classmethod
|
||||
def to_hardware_type(cls):
|
||||
return 'ilo', {'boot': 'ilo-pxe',
|
||||
'console': 'ilo',
|
||||
'deploy': 'iscsi',
|
||||
'inspect': 'ilo',
|
||||
'management': 'ilo',
|
||||
'power': 'ilo',
|
||||
'raid': 'agent',
|
||||
'vendor': 'ilo'}
|
||||
|
||||
|
||||
class PXEAndSNMPDriver(base.BaseDriver):
|
||||
"""PXE + SNMP driver.
|
||||
|
||||
|
@ -39,26 +39,19 @@ from ironic.drivers.modules.ilo import management as ilo_management
|
||||
from ironic.drivers.modules import pxe
|
||||
from ironic.drivers.modules.storage import noop as noop_storage
|
||||
from ironic.drivers import utils as driver_utils
|
||||
from ironic.tests.unit.db import base as db_base
|
||||
from ironic.tests.unit.db import utils as db_utils
|
||||
from ironic.tests.unit.objects import utils as obj_utils
|
||||
from ironic.tests.unit.drivers.modules.ilo import test_common
|
||||
|
||||
|
||||
if six.PY3:
|
||||
import io
|
||||
file = io.BytesIO
|
||||
|
||||
INFO_DICT = db_utils.get_test_ilo_info()
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
class IloBootCommonMethodsTestCase(db_base.DbTestCase):
|
||||
class IloBootCommonMethodsTestCase(test_common.BaseIloTest):
|
||||
|
||||
def setUp(self):
|
||||
super(IloBootCommonMethodsTestCase, self).setUp()
|
||||
self.config(enabled_drivers=['iscsi_ilo'])
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='iscsi_ilo', driver_info=INFO_DICT)
|
||||
boot_interface = 'ilo-virtual-media'
|
||||
|
||||
def test_parse_driver_info(self):
|
||||
self.node.driver_info['ilo_deploy_iso'] = 'deploy-iso'
|
||||
@ -72,13 +65,9 @@ class IloBootCommonMethodsTestCase(db_base.DbTestCase):
|
||||
ilo_boot.parse_driver_info, self.node)
|
||||
|
||||
|
||||
class IloBootPrivateMethodsTestCase(db_base.DbTestCase):
|
||||
class IloBootPrivateMethodsTestCase(test_common.BaseIloTest):
|
||||
|
||||
def setUp(self):
|
||||
super(IloBootPrivateMethodsTestCase, self).setUp()
|
||||
self.config(enabled_drivers=['iscsi_ilo'])
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='iscsi_ilo', driver_info=INFO_DICT)
|
||||
boot_interface = 'ilo-virtual-media'
|
||||
|
||||
def test__get_boot_iso_object_name(self):
|
||||
boot_iso_actual = ilo_boot._get_boot_iso_object_name(self.node)
|
||||
@ -668,23 +657,9 @@ class IloBootPrivateMethodsTestCase(db_base.DbTestCase):
|
||||
self.assertNotIn('deploy_boot_mode', task.node.instance_info)
|
||||
|
||||
|
||||
class IloVirtualMediaBootTestCase(db_base.DbTestCase):
|
||||
class IloVirtualMediaBootTestCase(test_common.BaseIloTest):
|
||||
|
||||
def setUp(self):
|
||||
super(IloVirtualMediaBootTestCase, self).setUp()
|
||||
self.config(enabled_hardware_types=['ilo'],
|
||||
enabled_boot_interfaces=['ilo-virtual-media'],
|
||||
enabled_console_interfaces=['ilo'],
|
||||
enabled_deploy_interfaces=['iscsi'],
|
||||
enabled_inspect_interfaces=['ilo'],
|
||||
enabled_management_interfaces=['ilo'],
|
||||
enabled_power_interfaces=['ilo'],
|
||||
enabled_raid_interfaces=['no-raid'],
|
||||
enabled_rescue_interfaces=['agent'],
|
||||
enabled_vendor_interfaces=['no-vendor'])
|
||||
self.config(enabled_hardware_types=['ilo'])
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='ilo', driver_info=INFO_DICT)
|
||||
boot_interface = 'ilo-virtual-media'
|
||||
|
||||
@mock.patch.object(noop_storage.NoopStorage, 'should_write_image',
|
||||
autospec=True)
|
||||
@ -1126,13 +1101,9 @@ class IloVirtualMediaBootTestCase(db_base.DbTestCase):
|
||||
task.driver.boot.validate_rescue, task)
|
||||
|
||||
|
||||
class IloPXEBootTestCase(db_base.DbTestCase):
|
||||
class IloPXEBootTestCase(test_common.BaseIloTest):
|
||||
|
||||
def setUp(self):
|
||||
super(IloPXEBootTestCase, self).setUp()
|
||||
self.config(enabled_drivers=['pxe_ilo'])
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='pxe_ilo', driver_info=INFO_DICT)
|
||||
boot_interface = 'ilo-pxe'
|
||||
|
||||
@mock.patch.object(ilo_boot, 'prepare_node_for_deploy', spec_set=True,
|
||||
autospec=True)
|
||||
|
@ -55,6 +55,8 @@ CONF = cfg.CONF
|
||||
|
||||
class BaseIloTest(db_base.DbTestCase):
|
||||
|
||||
boot_interface = None
|
||||
|
||||
def setUp(self):
|
||||
super(BaseIloTest, self).setUp()
|
||||
self.config(enabled_hardware_types=['ilo', 'fake-hardware'],
|
||||
@ -62,11 +64,14 @@ class BaseIloTest(db_base.DbTestCase):
|
||||
'fake'],
|
||||
enabled_power_interfaces=['ilo', 'fake'],
|
||||
enabled_management_interfaces=['ilo', 'fake'],
|
||||
enabled_inspect_interfaces=['ilo', 'fake', 'no-inspect'])
|
||||
enabled_inspect_interfaces=['ilo', 'fake', 'no-inspect'],
|
||||
enabled_console_interfaces=['ilo', 'fake', 'no-console'],
|
||||
enabled_vendor_interfaces=['ilo', 'fake', 'no-vendor'])
|
||||
self.info = INFO_DICT.copy()
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, uuid=uuidutils.generate_uuid(),
|
||||
driver='ilo', driver_info=self.info)
|
||||
driver='ilo', boot_interface=self.boot_interface,
|
||||
driver_info=self.info)
|
||||
|
||||
|
||||
class IloValidateParametersTestCase(BaseIloTest):
|
||||
|
@ -22,25 +22,17 @@ from ironic.common import exception
|
||||
from ironic.conductor import task_manager
|
||||
from ironic.drivers.modules.ilo import common as ilo_common
|
||||
from ironic.drivers.modules import ipmitool
|
||||
from ironic.tests.unit.db import base as db_base
|
||||
from ironic.tests.unit.db import utils as db_utils
|
||||
from ironic.tests.unit.objects import utils as obj_utils
|
||||
from ironic.tests.unit.drivers.modules.ilo import test_common
|
||||
|
||||
|
||||
if six.PY3:
|
||||
import io
|
||||
file = io.BytesIO
|
||||
|
||||
INFO_DICT = db_utils.get_test_ilo_info()
|
||||
|
||||
class IloConsoleInterfaceTestCase(test_common.BaseIloTest):
|
||||
|
||||
class IloConsoleInterfaceTestCase(db_base.DbTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(IloConsoleInterfaceTestCase, self).setUp()
|
||||
self.config(enabled_drivers=['iscsi_ilo'])
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='iscsi_ilo', driver_info=INFO_DICT)
|
||||
boot_interface = 'ilo-virtual-media'
|
||||
|
||||
@mock.patch.object(ipmitool.IPMIShellinaboxConsole, 'validate',
|
||||
spec_set=True, autospec=True)
|
||||
|
@ -24,22 +24,12 @@ from ironic.conductor import utils as manager_utils
|
||||
from ironic.drivers.modules import deploy_utils
|
||||
from ironic.drivers.modules.ilo import common as ilo_common
|
||||
from ironic.drivers.modules.ilo import vendor as ilo_vendor
|
||||
from ironic.tests.unit.db import base as db_base
|
||||
from ironic.tests.unit.db import utils as db_utils
|
||||
from ironic.tests.unit.objects import utils as obj_utils
|
||||
from ironic.tests.unit.drivers.modules.ilo import test_common
|
||||
|
||||
|
||||
INFO_DICT = db_utils.get_test_ilo_info()
|
||||
class VendorPassthruTestCase(test_common.BaseIloTest):
|
||||
|
||||
|
||||
class VendorPassthruTestCase(db_base.DbTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(VendorPassthruTestCase, self).setUp()
|
||||
self.config(enabled_drivers=['iscsi_ilo'])
|
||||
self.node = obj_utils.create_test_node(self.context,
|
||||
driver='iscsi_ilo',
|
||||
driver_info=INFO_DICT)
|
||||
boot_interface = 'ilo-virtual-media'
|
||||
|
||||
@mock.patch.object(manager_utils, 'node_power_action', spec_set=True,
|
||||
autospec=True)
|
||||
|
@ -1256,14 +1256,11 @@ class OtherFunctionTestCase(db_base.DbTestCase):
|
||||
utils.get_ironic_api_url)
|
||||
|
||||
|
||||
class VirtualMediaDeployUtilsTestCase(db_base.DbTestCase):
|
||||
class GetSingleNicTestCase(db_base.DbTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(VirtualMediaDeployUtilsTestCase, self).setUp()
|
||||
self.config(enabled_drivers=['iscsi_ilo'])
|
||||
info_dict = db_utils.get_test_ilo_info()
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='iscsi_ilo', driver_info=info_dict)
|
||||
super(GetSingleNicTestCase, self).setUp()
|
||||
self.node = obj_utils.create_test_node(self.context)
|
||||
|
||||
def test_get_single_nic_with_vif_port_id(self):
|
||||
obj_utils.create_test_port(
|
||||
|
@ -16,19 +16,9 @@
|
||||
Test class for iLO Drivers
|
||||
"""
|
||||
|
||||
import mock
|
||||
import testtools
|
||||
|
||||
from ironic.common import exception
|
||||
from ironic.conductor import task_manager
|
||||
from ironic.drivers import ilo
|
||||
from ironic.drivers.modules import agent
|
||||
from ironic.drivers.modules.ilo import boot
|
||||
from ironic.drivers.modules.ilo import console
|
||||
from ironic.drivers.modules.ilo import inspect
|
||||
from ironic.drivers.modules.ilo import management
|
||||
from ironic.drivers.modules.ilo import power
|
||||
from ironic.drivers.modules.ilo import vendor
|
||||
from ironic.drivers.modules import inspector
|
||||
from ironic.drivers.modules import iscsi_deploy
|
||||
from ironic.drivers.modules import noop
|
||||
@ -153,52 +143,3 @@ class IloHardwareTestCase(db_base.DbTestCase):
|
||||
agent.AgentRescue)
|
||||
self.assertIsInstance(task.driver.vendor,
|
||||
ilo.vendor.VendorPassthru)
|
||||
|
||||
|
||||
@mock.patch.object(ilo.importutils, 'try_import', spec_set=True,
|
||||
autospec=True)
|
||||
class IloVirtualMediaIscsiDriversTestCase(testtools.TestCase):
|
||||
|
||||
def test_ilo_iscsi_driver(self, mock_try_import):
|
||||
mock_try_import.return_value = True
|
||||
|
||||
driver = ilo.IloVirtualMediaIscsiDriver()
|
||||
|
||||
self.assertIsInstance(driver.power, power.IloPower)
|
||||
self.assertIsInstance(driver.boot, boot.IloVirtualMediaBoot)
|
||||
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
|
||||
self.assertIsInstance(driver.console, console.IloConsoleInterface)
|
||||
self.assertIsInstance(driver.management, management.IloManagement)
|
||||
self.assertIsInstance(driver.vendor, vendor.VendorPassthru)
|
||||
self.assertIsInstance(driver.inspect, inspect.IloInspect)
|
||||
self.assertIsInstance(driver.raid, agent.AgentRAID)
|
||||
|
||||
def test_ilo_iscsi_driver_exc(self, mock_try_import):
|
||||
mock_try_import.return_value = None
|
||||
|
||||
self.assertRaises(exception.DriverLoadError,
|
||||
ilo.IloVirtualMediaIscsiDriver)
|
||||
|
||||
|
||||
@mock.patch.object(ilo.importutils, 'try_import', spec_set=True,
|
||||
autospec=True)
|
||||
class IloVirtualMediaAgentDriversTestCase(testtools.TestCase):
|
||||
|
||||
def test_ilo_agent_driver(self, mock_try_import):
|
||||
mock_try_import.return_value = True
|
||||
|
||||
driver = ilo.IloVirtualMediaAgentDriver()
|
||||
|
||||
self.assertIsInstance(driver.power, power.IloPower)
|
||||
self.assertIsInstance(driver.boot, boot.IloVirtualMediaBoot)
|
||||
self.assertIsInstance(driver.deploy, agent.AgentDeploy)
|
||||
self.assertIsInstance(driver.console, console.IloConsoleInterface)
|
||||
self.assertIsInstance(driver.management, management.IloManagement)
|
||||
self.assertIsInstance(driver.inspect, inspect.IloInspect)
|
||||
self.assertIsInstance(driver.raid, agent.AgentRAID)
|
||||
|
||||
def test_ilo_iscsi_driver_exc(self, mock_try_import):
|
||||
mock_try_import.return_value = None
|
||||
|
||||
self.assertRaises(exception.DriverLoadError,
|
||||
ilo.IloVirtualMediaAgentDriver)
|
||||
|
@ -20,14 +20,8 @@ import mock
|
||||
import testtools
|
||||
|
||||
from ironic.common import exception
|
||||
from ironic.drivers.modules import agent
|
||||
from ironic.drivers.modules.cimc import management as cimc_management
|
||||
from ironic.drivers.modules.cimc import power as cimc_power
|
||||
from ironic.drivers.modules.ilo import console as ilo_console
|
||||
from ironic.drivers.modules.ilo import inspect as ilo_inspect
|
||||
from ironic.drivers.modules.ilo import management as ilo_management
|
||||
from ironic.drivers.modules.ilo import power as ilo_power
|
||||
from ironic.drivers.modules.ilo import vendor as ilo_vendor
|
||||
from ironic.drivers.modules import ipmitool
|
||||
from ironic.drivers.modules.irmc import boot as irmc_boot
|
||||
from ironic.drivers.modules.irmc import management as irmc_management
|
||||
@ -42,32 +36,6 @@ from ironic.drivers import pxe
|
||||
|
||||
class PXEDriversTestCase(testtools.TestCase):
|
||||
|
||||
@mock.patch.object(pxe.importutils, 'try_import', spec_set=True,
|
||||
autospec=True)
|
||||
def test_pxe_ilo_driver(self, try_import_mock):
|
||||
try_import_mock.return_value = True
|
||||
|
||||
driver = pxe.PXEAndIloDriver()
|
||||
|
||||
self.assertIsInstance(driver.power, ilo_power.IloPower)
|
||||
self.assertIsInstance(driver.boot, pxe_module.PXEBoot)
|
||||
self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy)
|
||||
self.assertIsInstance(driver.vendor, ilo_vendor.VendorPassthru)
|
||||
self.assertIsInstance(driver.console,
|
||||
ilo_console.IloConsoleInterface)
|
||||
self.assertIsInstance(driver.management,
|
||||
ilo_management.IloManagement)
|
||||
self.assertIsInstance(driver.inspect, ilo_inspect.IloInspect)
|
||||
self.assertIsInstance(driver.raid, agent.AgentRAID)
|
||||
|
||||
@mock.patch.object(pxe.importutils, 'try_import', spec_set=True,
|
||||
autospec=True)
|
||||
def test_pxe_ilo_driver_import_error(self, try_import_mock):
|
||||
try_import_mock.return_value = False
|
||||
|
||||
self.assertRaises(exception.DriverLoadError,
|
||||
pxe.PXEAndIloDriver)
|
||||
|
||||
@mock.patch.object(pxe.importutils, 'try_import', spec_set=True,
|
||||
autospec=True)
|
||||
def test_pxe_snmp_driver(self, try_import_mock):
|
||||
|
5
releasenotes/notes/no-classic-ilo-7822af6821d2f1cc.yaml
Normal file
5
releasenotes/notes/no-classic-ilo-7822af6821d2f1cc.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
The deprecated iLO classic drivers ``pxe_ilo``, ``iscsi_ilo`` and
|
||||
``agent_ilo`` have been removed. Please use the ``ilo`` hardware type.
|
@ -53,18 +53,15 @@ ironic.dhcp =
|
||||
none = ironic.dhcp.none:NoneDHCPApi
|
||||
|
||||
ironic.drivers =
|
||||
agent_ilo = ironic.drivers.ilo:IloVirtualMediaAgentDriver
|
||||
agent_ipmitool = ironic.drivers.ipmi:AgentAndIPMIToolDriver
|
||||
agent_ipmitool_socat = ironic.drivers.ipmi:AgentAndIPMIToolAndSocatDriver
|
||||
agent_irmc = ironic.drivers.irmc:IRMCVirtualMediaAgentDriver
|
||||
agent_pxe_oneview = ironic.drivers.oneview:AgentPXEOneViewDriver
|
||||
agent_ucs = ironic.drivers.agent:AgentAndUcsDriver
|
||||
iscsi_ilo = ironic.drivers.ilo:IloVirtualMediaIscsiDriver
|
||||
iscsi_irmc = ironic.drivers.irmc:IRMCVirtualMediaIscsiDriver
|
||||
iscsi_pxe_oneview = ironic.drivers.oneview:ISCSIPXEOneViewDriver
|
||||
pxe_ipmitool = ironic.drivers.ipmi:PXEAndIPMIToolDriver
|
||||
pxe_ipmitool_socat = ironic.drivers.ipmi:PXEAndIPMIToolAndSocatDriver
|
||||
pxe_ilo = ironic.drivers.pxe:PXEAndIloDriver
|
||||
pxe_drac = ironic.drivers.drac:PXEDracDriver
|
||||
pxe_drac_inspector = ironic.drivers.drac:PXEDracInspectorDriver
|
||||
pxe_snmp = ironic.drivers.pxe:PXEAndSNMPDriver
|
||||
|
Loading…
x
Reference in New Issue
Block a user