Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support iLO4 and iLO5 BMCs #244

Merged
merged 1 commit into from
Mar 22, 2021
Merged

Conversation

macaptain
Copy link
Member

@macaptain macaptain commented Mar 12, 2021

This change adds configuration for the iLO driver as per https://docs.openstack.org/ironic/latest/admin/drivers/ilo.html. Also see #243.

The hardware interfaces for ilo are added to ironic.conf.j2. The python3-proliantutils dependency has also been added.

I'm currently testing this image with iLO 4.

@metal3-io-bot metal3-io-bot added the size/S Denotes a PR that changes 10-29 lines, ignoring generated files. label Mar 12, 2021
@fmuyassarov
Copy link
Member

/cc @dtantsur
/cc @dhellmann

@macaptain
Copy link
Member Author

macaptain commented Mar 12, 2021

Getting an error in the conductor with this branch:

2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception Traceback (most recent call last):
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception   File "/usr/lib/python3.6/site-packages/ironic/common/driver_factory.py", line 142, in default_interface
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception     get_interface(hw_type, interface_type, impl_name)
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception   File "/usr/lib/python3.6/site-packages/ironic/common/driver_factory.py", line 111, in get_interface
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception     hardware_type=hw_type.__class__.__name__)
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception ironic.common.exception.IncompatibleInterface: boot interface implementation '<ironic.drivers.modules.ipxe.iPXEBoot object at 0x7fabf58c9208>' is not supported by hardware type IloHardware.
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception 
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception During handling of the above exception, another exception occurred:
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception 
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception Traceback (most recent call last):
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception   File "/usr/lib/python3.6/site-packages/ironic_lib/exception.py", line 134, in __init__
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception     message = self._msg_fmt % kwargs
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception KeyError: 'node_info'
2021-03-12 10:36:22.461 1 ERROR ironic_lib.exception 
2021-03-12 10:36:22.466 1 ERROR ironic.conductor.base_manager [req-38fb2994-1585-42a5-89e4-dedfebddcf04 - - - - -] Failed to register hardware types. For%(node_info)s hardware type '%(driver)s', no default value found for %(interface_type)s interface.: ironic.common.exception.NoValidDefaultForInterface: For%(node_info)s hardware type '%(driver)s', no default value found for %(interface_type)s interface.

I believe this is happening when the conductor_hardware_interfaces in MariaDB is being populated by ironic-conductor.

@macaptain macaptain changed the title Support iLO4 and iLO5 BMCs WIP: Support iLO4 and iLO5 BMCs Mar 12, 2021
@metal3-io-bot metal3-io-bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 12, 2021
@dtantsur
Copy link
Member

I've proposed a fix for the KeyError: https://review.opendev.org/c/openstack/ironic/+/780270. Meanwhile, ilo requires a special boot interface: ilo-ipxe.

@macaptain macaptain changed the title WIP: Support iLO4 and iLO5 BMCs Support iLO4 and iLO5 BMCs Mar 15, 2021
@metal3-io-bot metal3-io-bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 15, 2021
@macaptain
Copy link
Member Author

/test-integration

1 similar comment
@fmuyassarov
Copy link
Member

/test-integration

config/ironic.conf.j2 Show resolved Hide resolved
enabled_bios_interfaces = idrac-wsman,no-bios,redfish,idrac-redfish,irmc
enabled_boot_interfaces = pxe,ipxe,fake,redfish-virtual-media,idrac-redfish-virtual-media
enabled_bios_interfaces = idrac-wsman,no-bios,redfish,idrac-redfish,irmc,ilo
enabled_boot_interfaces = ipxe,ilo-ipxe,pxe,ilo-pxe,fake,redfish-virtual-media,idrac-redfish-virtual-media,ilo-virtual-media,ilo-uefi-https
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not add ilo-uefi-https, we have no code to support it in BMO.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed ilo-uefi-https.

This change adds configuration for the iLO driver as per
https://docs.openstack.org/ironic/latest/admin/drivers/ilo.html

The hardware interfaces for ilo are added to ironic.conf.j2 and the
python3-proliantutils dependency has also been added.
@metal3-io-bot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dtantsur, macaptain

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@metal3-io-bot metal3-io-bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Mar 15, 2021
@dtantsur
Copy link
Member

Ouch, sorry, this needs rebasing because of another change (a mere file rename).

@dtantsur
Copy link
Member

/test-integration

enabled_power_interfaces = ipmitool,idrac,irmc,fake,redfish,idrac-redfish,ibmc
enabled_raid_interfaces = no-raid,irmc,agent,fake,ibmc,idrac-wsman
enabled_hardware_types = ipmi,idrac,irmc,fake-hardware,redfish,ibmc,manual-management,ilo,ilo5
enabled_inspect_interfaces = inspector,idrac,irmc,fake,redfish,ilo
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

enabled_inspect_interfaces and enabled_power_interfaces do not support ilo5 ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By the look of it, there is no 'ilo5' inspect or power interface, and instead the ilo5 hardware type supports 'ilo' for these interfaces by inheritance.

https://github.com/openstack/ironic/blob/8604f84fd7bda4e30d3f07005c4901f3662303a7/ironic/drivers/ilo.py#L74

This is also mentioned in the Ironic documentation on this page: https://docs.openstack.org/ironic/latest/admin/drivers/ilo.html

The ilo5 hardware type supports all the ilo interfaces [...] except for boot and raid interfaces.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrent. iLO5 is a subclass of iLO.

@dtantsur dtantsur requested a review from maelk March 19, 2021 13:53
@hardys
Copy link
Member

hardys commented Mar 22, 2021

/lgtm

@metal3-io-bot metal3-io-bot added the lgtm Indicates that a PR is ready to be merged. label Mar 22, 2021
@metal3-io-bot metal3-io-bot merged commit c3b4bd9 into metal3-io:master Mar 22, 2021
@macaptain macaptain deleted the add-ilo-support branch March 22, 2021 16:48
elfosardo pushed a commit to elfosardo/ironic-image that referenced this pull request Dec 13, 2021
…-20211210

Merge metal3io master 20211210
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged. size/S Denotes a PR that changes 10-29 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants