Merge "Add first idrac HW type Redfish interface support"
This commit is contained in:
commit
de67cad921
|
@ -38,12 +38,13 @@ class IDRACHardware(generic.GenericHardware):
|
||||||
@property
|
@property
|
||||||
def supported_management_interfaces(self):
|
def supported_management_interfaces(self):
|
||||||
"""List of supported management interfaces."""
|
"""List of supported management interfaces."""
|
||||||
return [management.DracManagement]
|
return [management.DracWSManManagement, management.DracManagement,
|
||||||
|
management.DracRedfishManagement]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_power_interfaces(self):
|
def supported_power_interfaces(self):
|
||||||
"""List of supported power interfaces."""
|
"""List of supported power interfaces."""
|
||||||
return [power.DracPower]
|
return [power.DracWSManPower, power.DracPower, power.DracRedfishPower]
|
||||||
|
|
||||||
# Optional hardware interfaces
|
# Optional hardware interfaces
|
||||||
|
|
||||||
|
@ -53,14 +54,16 @@ class IDRACHardware(generic.GenericHardware):
|
||||||
# Inspector support should have a higher priority than NoInspect
|
# Inspector support should have a higher priority than NoInspect
|
||||||
# if it is enabled by an operator (implying that the service is
|
# if it is enabled by an operator (implying that the service is
|
||||||
# installed).
|
# installed).
|
||||||
return [drac_inspect.DracInspect, inspector.Inspector, noop.NoInspect]
|
return [drac_inspect.DracWSManInspect, drac_inspect.DracInspect,
|
||||||
|
inspector.Inspector, noop.NoInspect]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_raid_interfaces(self):
|
def supported_raid_interfaces(self):
|
||||||
"""List of supported raid interfaces."""
|
"""List of supported raid interfaces."""
|
||||||
return [raid.DracRAID, noop.NoRAID]
|
return [raid.DracWSManRAID, raid.DracRAID, noop.NoRAID]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_vendor_interfaces(self):
|
def supported_vendor_interfaces(self):
|
||||||
"""List of supported vendor interfaces."""
|
"""List of supported vendor interfaces."""
|
||||||
return [vendor_passthru.DracVendorPassthru, noop.NoVendor]
|
return [vendor_passthru.DracWSManVendorPassthru,
|
||||||
|
vendor_passthru.DracVendorPassthru, noop.NoVendor]
|
||||||
|
|
|
@ -35,7 +35,7 @@ LOG = logging.getLogger(__name__)
|
||||||
METRICS = metrics_utils.get_metrics_logger(__name__)
|
METRICS = metrics_utils.get_metrics_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class DracInspect(base.InspectInterface):
|
class DracWSManInspect(base.InspectInterface):
|
||||||
|
|
||||||
def get_properties(self):
|
def get_properties(self):
|
||||||
"""Return the properties of the interface.
|
"""Return the properties of the interface.
|
||||||
|
@ -221,3 +221,20 @@ class DracInspect(base.InspectInterface):
|
||||||
pxe_dev_nics.append(nic.id)
|
pxe_dev_nics.append(nic.id)
|
||||||
|
|
||||||
return pxe_dev_nics
|
return pxe_dev_nics
|
||||||
|
|
||||||
|
|
||||||
|
class DracInspect(DracWSManInspect):
|
||||||
|
"""Class alias of class DracWSManInspect.
|
||||||
|
|
||||||
|
This class provides ongoing support of the deprecated 'idrac'
|
||||||
|
inspect interface implementation entrypoint.
|
||||||
|
|
||||||
|
All bug fixes and new features should be implemented in its base
|
||||||
|
class, DracWSManInspect. That makes them available to both the
|
||||||
|
deprecated 'idrac' and new 'idrac-wsman' entrypoints. Such changes
|
||||||
|
should not be made to this class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
LOG.warning("Inspect interface 'idrac' is deprecated and may be "
|
||||||
|
"removed in a future release. Use 'idrac-wsman' instead.")
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# Copyright 2014 Red Hat, Inc.
|
# Copyright 2014 Red Hat, Inc.
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
# Copyright (c) 2017-2018 Dell Inc. or its subsidiaries.
|
# Copyright (c) 2017-2019 Dell Inc. or its subsidiaries.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
# not use this file except in compliance with the License. You may obtain
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
@ -34,6 +34,7 @@ from ironic.conf import CONF
|
||||||
from ironic.drivers import base
|
from ironic.drivers import base
|
||||||
from ironic.drivers.modules.drac import common as drac_common
|
from ironic.drivers.modules.drac import common as drac_common
|
||||||
from ironic.drivers.modules.drac import job as drac_job
|
from ironic.drivers.modules.drac import job as drac_job
|
||||||
|
from ironic.drivers.modules.redfish import management as redfish_management
|
||||||
|
|
||||||
|
|
||||||
drac_exceptions = importutils.try_import('dracclient.exceptions')
|
drac_exceptions = importutils.try_import('dracclient.exceptions')
|
||||||
|
@ -294,7 +295,18 @@ def set_boot_device(node, device, persistent=False):
|
||||||
raise exception.DracOperationError(error=exc)
|
raise exception.DracOperationError(error=exc)
|
||||||
|
|
||||||
|
|
||||||
class DracManagement(base.ManagementInterface):
|
class DracRedfishManagement(redfish_management.RedfishManagement):
|
||||||
|
"""iDRAC Redfish interface for management-related actions.
|
||||||
|
|
||||||
|
Presently, this class entirely defers to its base class, a generic,
|
||||||
|
vendor-independent Redfish interface. Future resolution of Dell EMC-
|
||||||
|
specific incompatibilities and introduction of vendor value added
|
||||||
|
should be implemented by this class.
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class DracWSManManagement(base.ManagementInterface):
|
||||||
|
|
||||||
def get_properties(self):
|
def get_properties(self):
|
||||||
"""Return the properties of the interface."""
|
"""Return the properties of the interface."""
|
||||||
|
@ -446,3 +458,20 @@ class DracManagement(base.ManagementInterface):
|
||||||
'%(node_uuid)s. Reason: %(error)s.',
|
'%(node_uuid)s. Reason: %(error)s.',
|
||||||
{'node_uuid': node.uuid, 'error': exc})
|
{'node_uuid': node.uuid, 'error': exc})
|
||||||
raise exception.DracOperationError(error=exc)
|
raise exception.DracOperationError(error=exc)
|
||||||
|
|
||||||
|
|
||||||
|
class DracManagement(DracWSManManagement):
|
||||||
|
"""Class alias of class DracWSManManagement.
|
||||||
|
|
||||||
|
This class provides ongoing support of the deprecated 'idrac'
|
||||||
|
management interface implementation entrypoint.
|
||||||
|
|
||||||
|
All bug fixes and new features should be implemented in its base
|
||||||
|
class, DracWSManManagement. That makes them available to both the
|
||||||
|
deprecated 'idrac' and new 'idrac-wsman' entrypoints. Such changes
|
||||||
|
should not be made to this class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
LOG.warning("Management interface 'idrac' is deprecated and may be "
|
||||||
|
"removed in a future release. Use 'idrac-wsman' instead.")
|
||||||
|
|
|
@ -25,6 +25,7 @@ from ironic.conductor import task_manager
|
||||||
from ironic.drivers import base
|
from ironic.drivers import base
|
||||||
from ironic.drivers.modules.drac import common as drac_common
|
from ironic.drivers.modules.drac import common as drac_common
|
||||||
from ironic.drivers.modules.drac import management as drac_management
|
from ironic.drivers.modules.drac import management as drac_management
|
||||||
|
from ironic.drivers.modules.redfish import power as redfish_power
|
||||||
|
|
||||||
drac_constants = importutils.try_import('dracclient.constants')
|
drac_constants = importutils.try_import('dracclient.constants')
|
||||||
drac_exceptions = importutils.try_import('dracclient.exceptions')
|
drac_exceptions = importutils.try_import('dracclient.exceptions')
|
||||||
|
@ -114,7 +115,18 @@ def _set_power_state(node, power_state):
|
||||||
raise exception.DracOperationError(error=exc)
|
raise exception.DracOperationError(error=exc)
|
||||||
|
|
||||||
|
|
||||||
class DracPower(base.PowerInterface):
|
class DracRedfishPower(redfish_power.RedfishPower):
|
||||||
|
"""iDRAC Redfish interface for power-related actions.
|
||||||
|
|
||||||
|
Presently, this class entirely defers to its base class, a generic,
|
||||||
|
vendor-independent Redfish interface. Future resolution of Dell EMC-
|
||||||
|
specific incompatibilities and introduction of vendor value added
|
||||||
|
should be implemented by this class.
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class DracWSManPower(base.PowerInterface):
|
||||||
"""Interface for power-related actions."""
|
"""Interface for power-related actions."""
|
||||||
|
|
||||||
def get_properties(self):
|
def get_properties(self):
|
||||||
|
@ -194,3 +206,20 @@ class DracPower(base.PowerInterface):
|
||||||
target_power_state = states.POWER_ON
|
target_power_state = states.POWER_ON
|
||||||
|
|
||||||
_set_power_state(task.node, target_power_state)
|
_set_power_state(task.node, target_power_state)
|
||||||
|
|
||||||
|
|
||||||
|
class DracPower(DracWSManPower):
|
||||||
|
"""Class alias of class DracWSManPower.
|
||||||
|
|
||||||
|
This class provides ongoing support of the deprecated 'idrac' power
|
||||||
|
interface implementation entrypoint.
|
||||||
|
|
||||||
|
All bug fixes and new features should be implemented in its base
|
||||||
|
class, DracWSManPower. That makes them available to both the
|
||||||
|
deprecated 'idrac' and new 'idrac-wsman' entrypoints. Such changes
|
||||||
|
should not be made to this class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
LOG.warning("Power interface 'idrac' is deprecated and may be removed "
|
||||||
|
"in a future release. Use 'idrac-wsman' instead.")
|
||||||
|
|
|
@ -801,7 +801,7 @@ def _commit_to_controllers(node, controllers, substep="completed"):
|
||||||
return states.CLEANWAIT
|
return states.CLEANWAIT
|
||||||
|
|
||||||
|
|
||||||
class DracRAID(base.RAIDInterface):
|
class DracWSManRAID(base.RAIDInterface):
|
||||||
|
|
||||||
def get_properties(self):
|
def get_properties(self):
|
||||||
"""Return the properties of the interface."""
|
"""Return the properties of the interface."""
|
||||||
|
@ -1093,3 +1093,20 @@ class DracRAID(base.RAIDInterface):
|
||||||
task.node.driver_internal_info = driver_internal_info
|
task.node.driver_internal_info = driver_internal_info
|
||||||
task.node.save()
|
task.node.save()
|
||||||
manager_utils.notify_conductor_resume_clean(task)
|
manager_utils.notify_conductor_resume_clean(task)
|
||||||
|
|
||||||
|
|
||||||
|
class DracRAID(DracWSManRAID):
|
||||||
|
"""Class alias of class DracWSManRAID.
|
||||||
|
|
||||||
|
This class provides ongoing support of the deprecated 'idrac' RAID
|
||||||
|
interface implementation entrypoint.
|
||||||
|
|
||||||
|
All bug fixes and new features should be implemented in its base
|
||||||
|
class, DracWSManRAID. That makes them available to both the
|
||||||
|
deprecated 'idrac' and new 'idrac-wsman' entrypoints. Such changes
|
||||||
|
should not be made to this class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
LOG.warning("RAID interface 'idrac' is deprecated and may be removed "
|
||||||
|
"in a future release. Use 'idrac-wsman' instead.")
|
||||||
|
|
|
@ -16,6 +16,7 @@ DRAC vendor-passthru interface
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from ironic_lib import metrics_utils
|
from ironic_lib import metrics_utils
|
||||||
|
from oslo_log import log as logging
|
||||||
|
|
||||||
from ironic.common.i18n import _
|
from ironic.common.i18n import _
|
||||||
from ironic.conductor import task_manager
|
from ironic.conductor import task_manager
|
||||||
|
@ -24,10 +25,12 @@ from ironic.drivers.modules.drac import bios as drac_bios
|
||||||
from ironic.drivers.modules.drac import common as drac_common
|
from ironic.drivers.modules.drac import common as drac_common
|
||||||
from ironic.drivers.modules.drac import job as drac_job
|
from ironic.drivers.modules.drac import job as drac_job
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
METRICS = metrics_utils.get_metrics_logger(__name__)
|
METRICS = metrics_utils.get_metrics_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class DracVendorPassthru(base.VendorInterface):
|
class DracWSManVendorPassthru(base.VendorInterface):
|
||||||
"""Interface for DRAC specific methods."""
|
"""Interface for DRAC specific methods."""
|
||||||
|
|
||||||
def get_properties(self):
|
def get_properties(self):
|
||||||
|
@ -168,3 +171,21 @@ class DracVendorPassthru(base.VendorInterface):
|
||||||
jobs = drac_job.list_unfinished_jobs(task.node)
|
jobs = drac_job.list_unfinished_jobs(task.node)
|
||||||
# FIXME(mgould) Do this without calling private methods.
|
# FIXME(mgould) Do this without calling private methods.
|
||||||
return {'unfinished_jobs': [job._asdict() for job in jobs]}
|
return {'unfinished_jobs': [job._asdict() for job in jobs]}
|
||||||
|
|
||||||
|
|
||||||
|
class DracVendorPassthru(DracWSManVendorPassthru):
|
||||||
|
"""Class alias of class DracWSManVendorPassthru.
|
||||||
|
|
||||||
|
This class provides ongoing support of the deprecated 'idrac' vendor
|
||||||
|
passthru interface implementation entrypoint.
|
||||||
|
|
||||||
|
All bug fixes and new features should be implemented in its base
|
||||||
|
class, DracWSManVendorPassthru. That makes them available to both
|
||||||
|
the deprecated 'idrac' and new 'idrac-wsman' entrypoints. Such
|
||||||
|
changes should not be made to this class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
LOG.warning("Vendor passthru interface 'idrac' is deprecated and may "
|
||||||
|
"be removed in a future release. Use 'idrac-wsman' "
|
||||||
|
"instead.")
|
||||||
|
|
|
@ -29,11 +29,13 @@ class BaseDracTest(db_base.DbTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(BaseDracTest, self).setUp()
|
super(BaseDracTest, self).setUp()
|
||||||
self.config(enabled_hardware_types=['idrac', 'fake-hardware'],
|
self.config(enabled_hardware_types=['idrac', 'fake-hardware'],
|
||||||
enabled_power_interfaces=['idrac', 'fake'],
|
enabled_power_interfaces=['idrac-wsman', 'fake'],
|
||||||
enabled_management_interfaces=['idrac', 'fake'],
|
enabled_management_interfaces=['idrac-wsman', 'fake'],
|
||||||
enabled_inspect_interfaces=['idrac', 'fake', 'no-inspect'],
|
enabled_inspect_interfaces=[
|
||||||
enabled_vendor_interfaces=['idrac', 'fake', 'no-vendor'],
|
'idrac-wsman', 'fake', 'no-inspect'],
|
||||||
enabled_raid_interfaces=['idrac', 'fake', 'no-raid'])
|
enabled_vendor_interfaces=[
|
||||||
|
'idrac-wsman', 'fake', 'no-vendor'],
|
||||||
|
enabled_raid_interfaces=['idrac-wsman', 'fake', 'no-raid'])
|
||||||
|
|
||||||
|
|
||||||
class DictToObj(object):
|
class DictToObj(object):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2017 Dell Inc. or its subsidiaries.
|
# Copyright (c) 2017-2019 Dell Inc. or its subsidiaries.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
|
@ -30,13 +30,17 @@ class IDRACHardwareTestCase(db_base.DbTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(IDRACHardwareTestCase, self).setUp()
|
super(IDRACHardwareTestCase, self).setUp()
|
||||||
self.config(enabled_hardware_types=['idrac'],
|
self.config(enabled_hardware_types=['idrac'],
|
||||||
enabled_management_interfaces=['idrac'],
|
enabled_management_interfaces=[
|
||||||
enabled_power_interfaces=['idrac'],
|
'idrac', 'idrac-wsman', 'idrac-redfish'],
|
||||||
|
enabled_power_interfaces=[
|
||||||
|
'idrac', 'idrac-wsman', 'idrac-redfish'],
|
||||||
enabled_inspect_interfaces=[
|
enabled_inspect_interfaces=[
|
||||||
'idrac', 'inspector', 'no-inspect'],
|
'idrac', 'idrac-wsman', 'inspector', 'no-inspect'],
|
||||||
enabled_network_interfaces=['flat', 'neutron', 'noop'],
|
enabled_network_interfaces=['flat', 'neutron', 'noop'],
|
||||||
enabled_raid_interfaces=['idrac', 'no-raid'],
|
enabled_raid_interfaces=[
|
||||||
enabled_vendor_interfaces=['idrac', 'no-vendor'])
|
'idrac', 'idrac-wsman', 'no-raid'],
|
||||||
|
enabled_vendor_interfaces=[
|
||||||
|
'idrac', 'idrac-wsman', 'no-vendor'])
|
||||||
|
|
||||||
def _validate_interfaces(self, driver, **kwargs):
|
def _validate_interfaces(self, driver, **kwargs):
|
||||||
self.assertIsInstance(
|
self.assertIsInstance(
|
||||||
|
@ -47,10 +51,10 @@ class IDRACHardwareTestCase(db_base.DbTestCase):
|
||||||
kwargs.get('deploy', iscsi_deploy.ISCSIDeploy))
|
kwargs.get('deploy', iscsi_deploy.ISCSIDeploy))
|
||||||
self.assertIsInstance(
|
self.assertIsInstance(
|
||||||
driver.management,
|
driver.management,
|
||||||
kwargs.get('management', drac.management.DracManagement))
|
kwargs.get('management', drac.management.DracWSManManagement))
|
||||||
self.assertIsInstance(
|
self.assertIsInstance(
|
||||||
driver.power,
|
driver.power,
|
||||||
kwargs.get('power', drac.power.DracPower))
|
kwargs.get('power', drac.power.DracWSManPower))
|
||||||
|
|
||||||
self.assertIsInstance(
|
self.assertIsInstance(
|
||||||
driver.console,
|
driver.console,
|
||||||
|
@ -58,7 +62,7 @@ class IDRACHardwareTestCase(db_base.DbTestCase):
|
||||||
|
|
||||||
self.assertIsInstance(
|
self.assertIsInstance(
|
||||||
driver.inspect,
|
driver.inspect,
|
||||||
kwargs.get('inspect', drac.inspect.DracInspect))
|
kwargs.get('inspect', drac.inspect.DracWSManInspect))
|
||||||
|
|
||||||
self.assertIsInstance(
|
self.assertIsInstance(
|
||||||
driver.network,
|
driver.network,
|
||||||
|
@ -66,7 +70,7 @@ class IDRACHardwareTestCase(db_base.DbTestCase):
|
||||||
|
|
||||||
self.assertIsInstance(
|
self.assertIsInstance(
|
||||||
driver.raid,
|
driver.raid,
|
||||||
kwargs.get('raid', drac.raid.DracRAID))
|
kwargs.get('raid', drac.raid.DracWSManRAID))
|
||||||
|
|
||||||
self.assertIsInstance(
|
self.assertIsInstance(
|
||||||
driver.storage,
|
driver.storage,
|
||||||
|
@ -74,7 +78,7 @@ class IDRACHardwareTestCase(db_base.DbTestCase):
|
||||||
|
|
||||||
self.assertIsInstance(
|
self.assertIsInstance(
|
||||||
driver.vendor,
|
driver.vendor,
|
||||||
kwargs.get('vendor', drac.vendor_passthru.DracVendorPassthru))
|
kwargs.get('vendor', drac.vendor_passthru.DracWSManVendorPassthru))
|
||||||
|
|
||||||
def test_default_interfaces(self):
|
def test_default_interfaces(self):
|
||||||
node = obj_utils.create_test_node(self.context, driver='idrac')
|
node = obj_utils.create_test_node(self.context, driver='idrac')
|
||||||
|
@ -110,3 +114,29 @@ class IDRACHardwareTestCase(db_base.DbTestCase):
|
||||||
with task_manager.acquire(self.context, node.id) as task:
|
with task_manager.acquire(self.context, node.id) as task:
|
||||||
self._validate_interfaces(task.driver,
|
self._validate_interfaces(task.driver,
|
||||||
vendor=noop.NoVendor)
|
vendor=noop.NoVendor)
|
||||||
|
|
||||||
|
def test_override_with_idrac(self):
|
||||||
|
node = obj_utils.create_test_node(self.context, driver='idrac',
|
||||||
|
management_interface='idrac',
|
||||||
|
power_interface='idrac',
|
||||||
|
inspect_interface='idrac',
|
||||||
|
raid_interface='idrac',
|
||||||
|
vendor_interface='idrac')
|
||||||
|
with task_manager.acquire(self.context, node.id) as task:
|
||||||
|
self._validate_interfaces(
|
||||||
|
task.driver,
|
||||||
|
management=drac.management.DracManagement,
|
||||||
|
power=drac.power.DracPower,
|
||||||
|
inspect=drac.inspect.DracInspect,
|
||||||
|
raid=drac.raid.DracRAID,
|
||||||
|
vendor=drac.vendor_passthru.DracVendorPassthru)
|
||||||
|
|
||||||
|
def test_override_with_redfish_management_and_power(self):
|
||||||
|
node = obj_utils.create_test_node(self.context, driver='idrac',
|
||||||
|
management_interface='idrac-redfish',
|
||||||
|
power_interface='idrac-redfish')
|
||||||
|
with task_manager.acquire(self.context, node.id) as task:
|
||||||
|
self._validate_interfaces(
|
||||||
|
task.driver,
|
||||||
|
management=drac.management.DracRedfishManagement,
|
||||||
|
power=drac.power.DracRedfishPower)
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Adds initial ``idrac`` hardware type support of interface
|
||||||
|
implementations that utilize the Redfish out-of-band (OOB)
|
||||||
|
management protocol and are compatible with the integrated Dell
|
||||||
|
Remote Access Controller (iDRAC) baseboard management controller
|
||||||
|
(BMC), presently those of the management and power hardware
|
||||||
|
interfaces. They are named ``idrac-redfish``.
|
||||||
|
|
||||||
|
Introduces a new name for the ``idrac`` interface implementations,
|
||||||
|
``idrac-wsman``, and deprecates ``idrac``. They both use the Web
|
||||||
|
Services Management (WS-Man) OOB management protocol.
|
||||||
|
|
||||||
|
The ``idrac`` hardware type declares support for those new interface
|
||||||
|
implementations, in addition to all interface implementations it has
|
||||||
|
been supporting. The priority order of supported interfaces remains
|
||||||
|
the same. Interface implementations which rely on WS-Man continue to
|
||||||
|
have the highest priority, and the new ``idrac-wsman`` is listed
|
||||||
|
before the deprecated ``idrac``. It now supports the following
|
||||||
|
interface implementations, which are listed in priority order from
|
||||||
|
highest to lowest:
|
||||||
|
|
||||||
|
* bios: ``no-bios``
|
||||||
|
* boot: ``ipxe``, ``pxe``
|
||||||
|
* console: ``no-console``
|
||||||
|
* deploy: ``iscsi``, ``direct``, ``ansible``, ``ramdisk``
|
||||||
|
* inspect: ``idrac-wsman``, ``idrac``, ``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``
|
||||||
|
|
||||||
|
For more information, see `story 2004592
|
||||||
|
<https://storyboard.openstack.org/#!/story/2004592>`_.
|
||||||
|
deprecations:
|
||||||
|
- |
|
||||||
|
The ``idrac`` interface implementation name is deprecated in favor
|
||||||
|
of a new name, ``idrac-wsman``, and may be removed in a future
|
||||||
|
release. A deprecation warning will be logged for every loaded
|
||||||
|
``idrac`` interface implementation. Use ``idrac-wsman`` instead.
|
|
@ -89,6 +89,7 @@ ironic.hardware.interfaces.deploy =
|
||||||
ironic.hardware.interfaces.inspect =
|
ironic.hardware.interfaces.inspect =
|
||||||
fake = ironic.drivers.modules.fake:FakeInspect
|
fake = ironic.drivers.modules.fake:FakeInspect
|
||||||
idrac = ironic.drivers.modules.drac.inspect:DracInspect
|
idrac = ironic.drivers.modules.drac.inspect:DracInspect
|
||||||
|
idrac-wsman = ironic.drivers.modules.drac.inspect:DracWSManInspect
|
||||||
ilo = ironic.drivers.modules.ilo.inspect:IloInspect
|
ilo = ironic.drivers.modules.ilo.inspect:IloInspect
|
||||||
inspector = ironic.drivers.modules.inspector:Inspector
|
inspector = ironic.drivers.modules.inspector:Inspector
|
||||||
irmc = ironic.drivers.modules.irmc.inspect:IRMCInspect
|
irmc = ironic.drivers.modules.irmc.inspect:IRMCInspect
|
||||||
|
@ -99,6 +100,8 @@ ironic.hardware.interfaces.management =
|
||||||
fake = ironic.drivers.modules.fake:FakeManagement
|
fake = ironic.drivers.modules.fake:FakeManagement
|
||||||
ibmc = ironic.drivers.modules.ibmc.management:IBMCManagement
|
ibmc = ironic.drivers.modules.ibmc.management:IBMCManagement
|
||||||
idrac = ironic.drivers.modules.drac.management:DracManagement
|
idrac = ironic.drivers.modules.drac.management:DracManagement
|
||||||
|
idrac-redfish = ironic.drivers.modules.drac.management:DracRedfishManagement
|
||||||
|
idrac-wsman = ironic.drivers.modules.drac.management:DracWSManManagement
|
||||||
ilo = ironic.drivers.modules.ilo.management:IloManagement
|
ilo = ironic.drivers.modules.ilo.management:IloManagement
|
||||||
ilo5 = ironic.drivers.modules.ilo.management:Ilo5Management
|
ilo5 = ironic.drivers.modules.ilo.management:Ilo5Management
|
||||||
intel-ipmitool = ironic.drivers.modules.intel_ipmi.management:IntelIPMIManagement
|
intel-ipmitool = ironic.drivers.modules.intel_ipmi.management:IntelIPMIManagement
|
||||||
|
@ -117,6 +120,8 @@ ironic.hardware.interfaces.power =
|
||||||
fake = ironic.drivers.modules.fake:FakePower
|
fake = ironic.drivers.modules.fake:FakePower
|
||||||
ibmc = ironic.drivers.modules.ibmc.power:IBMCPower
|
ibmc = ironic.drivers.modules.ibmc.power:IBMCPower
|
||||||
idrac = ironic.drivers.modules.drac.power:DracPower
|
idrac = ironic.drivers.modules.drac.power:DracPower
|
||||||
|
idrac-redfish = ironic.drivers.modules.drac.power:DracRedfishPower
|
||||||
|
idrac-wsman = ironic.drivers.modules.drac.power:DracWSManPower
|
||||||
ilo = ironic.drivers.modules.ilo.power:IloPower
|
ilo = ironic.drivers.modules.ilo.power:IloPower
|
||||||
ipmitool = ironic.drivers.modules.ipmitool:IPMIPower
|
ipmitool = ironic.drivers.modules.ipmitool:IPMIPower
|
||||||
irmc = ironic.drivers.modules.irmc.power:IRMCPower
|
irmc = ironic.drivers.modules.irmc.power:IRMCPower
|
||||||
|
@ -128,6 +133,7 @@ ironic.hardware.interfaces.raid =
|
||||||
agent = ironic.drivers.modules.agent:AgentRAID
|
agent = ironic.drivers.modules.agent:AgentRAID
|
||||||
fake = ironic.drivers.modules.fake:FakeRAID
|
fake = ironic.drivers.modules.fake:FakeRAID
|
||||||
idrac = ironic.drivers.modules.drac.raid:DracRAID
|
idrac = ironic.drivers.modules.drac.raid:DracRAID
|
||||||
|
idrac-wsman = ironic.drivers.modules.drac.raid:DracWSManRAID
|
||||||
ilo5 = ironic.drivers.modules.ilo.raid:Ilo5RAID
|
ilo5 = ironic.drivers.modules.ilo.raid:Ilo5RAID
|
||||||
irmc = ironic.drivers.modules.irmc.raid:IRMCRAID
|
irmc = ironic.drivers.modules.irmc.raid:IRMCRAID
|
||||||
no-raid = ironic.drivers.modules.noop:NoRAID
|
no-raid = ironic.drivers.modules.noop:NoRAID
|
||||||
|
@ -147,6 +153,7 @@ ironic.hardware.interfaces.vendor =
|
||||||
fake = ironic.drivers.modules.fake:FakeVendorB
|
fake = ironic.drivers.modules.fake:FakeVendorB
|
||||||
ibmc = ironic.drivers.modules.ibmc.vendor:IBMCVendor
|
ibmc = ironic.drivers.modules.ibmc.vendor:IBMCVendor
|
||||||
idrac = ironic.drivers.modules.drac.vendor_passthru:DracVendorPassthru
|
idrac = ironic.drivers.modules.drac.vendor_passthru:DracVendorPassthru
|
||||||
|
idrac-wsman = ironic.drivers.modules.drac.vendor_passthru:DracWSManVendorPassthru
|
||||||
ilo = ironic.drivers.modules.ilo.vendor:VendorPassthru
|
ilo = ironic.drivers.modules.ilo.vendor:VendorPassthru
|
||||||
ipmitool = ironic.drivers.modules.ipmitool:VendorPassthru
|
ipmitool = ironic.drivers.modules.ipmitool:VendorPassthru
|
||||||
no-vendor = ironic.drivers.modules.noop:NoVendor
|
no-vendor = ironic.drivers.modules.noop:NoVendor
|
||||||
|
|
Loading…
Reference in New Issue