diff --git a/driver-requirements.txt b/driver-requirements.txt index d5285a3dff..ffcb3e2ab2 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -10,9 +10,6 @@ python-scciclient>=0.8.0 python-dracclient>=5.1.0,<8.0.0 python-xclarityclient>=0.1.6 -# The Redfish hardware type uses the Sushy library -sushy>=3.10.0 - # Ansible-deploy interface ansible>=2.7 diff --git a/ironic/conf/default.py b/ironic/conf/default.py index f5dcd4e625..dc48e59f77 100644 --- a/ironic/conf/default.py +++ b/ironic/conf/default.py @@ -85,7 +85,7 @@ api_opts = [ driver_opts = [ cfg.ListOpt('enabled_hardware_types', - default=['ipmi'], + default=['ipmi', 'redfish'], help=_('Specify the list of hardware types to load during ' 'service initialization. Missing hardware types, or ' 'hardware types which fail to initialize, will prevent ' @@ -96,12 +96,12 @@ driver_opts = [ 'system may be found by enumerating the ' '"ironic.hardware.types" entrypoint.')), cfg.ListOpt('enabled_bios_interfaces', - default=['no-bios'], + default=['no-bios', 'redfish'], help=_ENABLED_IFACE_HELP.format('bios')), cfg.StrOpt('default_bios_interface', help=_DEFAULT_IFACE_HELP.format('bios')), cfg.ListOpt('enabled_boot_interfaces', - default=['pxe'], + default=['pxe', 'redfish-virtual-media'], help=_ENABLED_IFACE_HELP.format('boot')), cfg.StrOpt('default_boot_interface', help=_DEFAULT_IFACE_HELP.format('boot')), @@ -116,12 +116,12 @@ driver_opts = [ cfg.StrOpt('default_deploy_interface', help=_DEFAULT_IFACE_HELP.format('deploy')), cfg.ListOpt('enabled_inspect_interfaces', - default=['no-inspect'], + default=['no-inspect', 'redfish'], help=_ENABLED_IFACE_HELP.format('inspect')), cfg.StrOpt('default_inspect_interface', help=_DEFAULT_IFACE_HELP.format('inspect')), cfg.ListOpt('enabled_management_interfaces', - default=['ipmitool'], + default=['ipmitool', 'redfish'], help=_ENABLED_IFACE_HELP.format('management')), cfg.StrOpt('default_management_interface', help=_DEFAULT_IFACE_HELP.format('management')), @@ -131,12 +131,12 @@ driver_opts = [ cfg.StrOpt('default_network_interface', help=_DEFAULT_IFACE_HELP.format('network')), cfg.ListOpt('enabled_power_interfaces', - default=['ipmitool'], + default=['ipmitool', 'redfish'], help=_ENABLED_IFACE_HELP.format('power')), cfg.StrOpt('default_power_interface', help=_DEFAULT_IFACE_HELP.format('power')), cfg.ListOpt('enabled_raid_interfaces', - default=['agent', 'no-raid'], + default=['agent', 'no-raid', 'redfish'], help=_ENABLED_IFACE_HELP.format('raid')), cfg.StrOpt('default_raid_interface', help=_DEFAULT_IFACE_HELP.format('raid')), @@ -152,7 +152,7 @@ driver_opts = [ default='noop', help=_DEFAULT_IFACE_HELP.format('storage')), cfg.ListOpt('enabled_vendor_interfaces', - default=['ipmitool', 'no-vendor'], + default=['ipmitool', 'redfish', 'no-vendor'], help=_ENABLED_IFACE_HELP.format('vendor')), cfg.StrOpt('default_vendor_interface', help=_DEFAULT_IFACE_HELP.format('vendor')), diff --git a/ironic/tests/unit/drivers/third_party_driver_mock_specs.py b/ironic/tests/unit/drivers/third_party_driver_mock_specs.py index 10f76d3a29..b58504fbec 100644 --- a/ironic/tests/unit/drivers/third_party_driver_mock_specs.py +++ b/ironic/tests/unit/drivers/third_party_driver_mock_specs.py @@ -120,73 +120,6 @@ REDFISH_SPEC = ( 'redfish', ) -SUSHY_SPEC = ( - 'auth', - 'exceptions', - 'Sushy', - 'BOOT_SOURCE_TARGET_PXE', - 'BOOT_SOURCE_TARGET_HDD', - 'BOOT_SOURCE_TARGET_CD', - 'BOOT_SOURCE_TARGET_BIOS_SETUP', - 'CHASSIS_INDICATOR_LED_LIT', - 'CHASSIS_INDICATOR_LED_BLINKING', - 'CHASSIS_INDICATOR_LED_OFF', - 'CHASSIS_INDICATOR_LED_UNKNOWN', - 'DRIVE_INDICATOR_LED_LIT', - 'DRIVE_INDICATOR_LED_BLINKING', - 'DRIVE_INDICATOR_LED_OFF', - 'DRIVE_INDICATOR_LED_UNKNOWN', - 'INDICATOR_LED_LIT', - 'INDICATOR_LED_BLINKING', - 'INDICATOR_LED_OFF', - 'INDICATOR_LED_UNKNOWN', - 'SYSTEM_POWER_STATE_ON', - 'SYSTEM_POWER_STATE_POWERING_ON', - 'SYSTEM_POWER_STATE_OFF', - 'SYSTEM_POWER_STATE_POWERING_OFF', - 'RESET_ON', - 'RESET_FORCE_OFF', - 'RESET_GRACEFUL_SHUTDOWN', - 'RESET_GRACEFUL_RESTART', - 'RESET_FORCE_RESTART', - 'RESET_NMI', - 'BOOT_SOURCE_ENABLED_CONTINUOUS', - 'BOOT_SOURCE_ENABLED_ONCE', - 'BOOT_SOURCE_MODE_BIOS', - 'BOOT_SOURCE_MODE_UEFI', - 'PROCESSOR_ARCH_x86', - 'PROCESSOR_ARCH_IA_64', - 'PROCESSOR_ARCH_ARM', - 'PROCESSOR_ARCH_MIPS', - 'PROCESSOR_ARCH_OEM', - 'PROTOCOL_TYPE_iSCSI', - 'PROTOCOL_TYPE_SAS', - 'PROTOCOL_TYPE_SATA', - 'STATE_ENABLED', - 'STATE_DISABLED', - 'STATE_ABSENT', - 'VIRTUAL_MEDIA_CD', - 'VIRTUAL_MEDIA_FLOPPY', - 'VIRTUAL_MEDIA_USBSTICK', - 'APPLY_TIME_IMMEDIATE', - 'APPLY_TIME_ON_RESET', - 'TASK_STATE_COMPLETED', - 'HEALTH_OK', - 'HEALTH_WARNING', - 'SECURE_BOOT_RESET_KEYS_TO_DEFAULT', - 'SECURE_BOOT_RESET_KEYS_DELETE_ALL', - 'VOLUME_TYPE_RAW_DEVICE', - 'SEVERITY_OK', - 'SEVERITY_WARNING', - 'SEVERITY_CRITICAL', -) - -SUSHY_AUTH_SPEC = ( - 'BasicAuth', - 'SessionAuth', - 'SessionOrBasicAuth', -) - XCLARITY_SPEC = ( 'client', 'states', diff --git a/ironic/tests/unit/drivers/third_party_driver_mocks.py b/ironic/tests/unit/drivers/third_party_driver_mocks.py index a7c7915d7c..2e7d5bc652 100644 --- a/ironic/tests/unit/drivers/third_party_driver_mocks.py +++ b/ironic/tests/unit/drivers/third_party_driver_mocks.py @@ -196,81 +196,6 @@ class MockKwargsException(Exception): self.kwargs = kwargs -sushy = importutils.try_import('sushy') -if not sushy: - sushy = mock.MagicMock( - spec_set=mock_specs.SUSHY_SPEC, - BOOT_SOURCE_TARGET_PXE='Pxe', - BOOT_SOURCE_TARGET_HDD='Hdd', - BOOT_SOURCE_TARGET_CD='Cd', - BOOT_SOURCE_TARGET_BIOS_SETUP='BiosSetup', - INDICATOR_LED_LIT='indicator led lit', - INDICATOR_LED_BLINKING='indicator led blinking', - INDICATOR_LED_OFF='indicator led off', - INDICATOR_LED_UNKNOWN='indicator led unknown', - SYSTEM_POWER_STATE_ON='on', - SYSTEM_POWER_STATE_POWERING_ON='powering on', - SYSTEM_POWER_STATE_OFF='off', - SYSTEM_POWER_STATE_POWERING_OFF='powering off', - RESET_ON='on', - RESET_FORCE_OFF='force off', - RESET_GRACEFUL_SHUTDOWN='graceful shutdown', - RESET_GRACEFUL_RESTART='graceful restart', - RESET_FORCE_RESTART='force restart', - RESET_NMI='nmi', - BOOT_SOURCE_ENABLED_CONTINUOUS='continuous', - BOOT_SOURCE_ENABLED_ONCE='once', - BOOT_SOURCE_MODE_BIOS='bios', - BOOT_SOURCE_MODE_UEFI='uefi', - PROCESSOR_ARCH_x86='x86 or x86-64', - PROCESSOR_ARCH_IA_64='Intel Itanium', - PROCESSOR_ARCH_ARM='ARM', - PROCESSOR_ARCH_MIPS='MIPS', - PROCESSOR_ARCH_OEM='OEM-defined', - PROTOCOL_TYPE_iSCSI='Internet SCSI', - PROTOCOL_TYPE_SAS='Serial Attached SCSI', - PROTOCOL_TYPE_SATA='Serial AT Attachment', - STATE_ENABLED='enabled', - STATE_DISABLED='disabled', - STATE_ABSENT='absent', - VIRTUAL_MEDIA_CD='cd', - VIRTUAL_MEDIA_FLOPPY='floppy', - VIRTUAL_MEDIA_USBSTICK='usb', - APPLY_TIME_IMMEDIATE='immediate', - APPLY_TIME_ON_RESET='on reset', - TASK_STATE_COMPLETED='completed', - HEALTH_OK='ok', - HEALTH_WARNING='warning', - SECURE_BOOT_RESET_KEYS_TO_DEFAULT="ResetAllKeysToDefault", - SECURE_BOOT_RESET_KEYS_DELETE_ALL="DeleteAllKeys", - VOLUME_TYPE_RAW_DEVICE='rawdevice', - SEVERITY_OK='ok', - SEVERITY_WARNING='warning', - SEVERITY_CRITICAL='critical' - ) - - sys.modules['sushy'] = sushy - sys.modules['sushy.exceptions'] = sushy.exceptions - sushy.exceptions.SushyError = ( - type('SushyError', (MockKwargsException,), {})) - sushy.exceptions.ConnectionError = ( - type('ConnectionError', (sushy.exceptions.SushyError,), {})) - sushy.exceptions.ResourceNotFoundError = ( - type('ResourceNotFoundError', (sushy.exceptions.SushyError,), {})) - sushy.exceptions.MissingAttributeError = ( - type('MissingAttributeError', (sushy.exceptions.SushyError,), {})) - sushy.exceptions.OEMExtensionNotFoundError = ( - type('OEMExtensionNotFoundError', (sushy.exceptions.SushyError,), {})) - sushy.exceptions.ServerSideError = ( - type('ServerSideError', (sushy.exceptions.SushyError,), {})) - sushy.exceptions.BadRequestError = ( - type('BadRequestError', (sushy.exceptions.SushyError,), {})) - sushy.auth = mock.MagicMock(spec_set=mock_specs.SUSHY_AUTH_SPEC) - sys.modules['sushy.auth'] = sushy.auth - - if 'ironic.drivers.modules.redfish' in sys.modules: - importlib.reload(sys.modules['ironic.drivers.modules.redfish']) - xclarity_client = importutils.try_import('xclarity_client') if not xclarity_client: xclarity_client = mock.MagicMock(spec_set=mock_specs.XCLARITY_SPEC) diff --git a/lower-constraints.txt b/lower-constraints.txt index 7d79ecf356..b51252aa28 100644 --- a/lower-constraints.txt +++ b/lower-constraints.txt @@ -48,7 +48,8 @@ requests==2.18.0 rfc3986==1.2.0 SQLAlchemy==1.2.19 stestr==2.0.0 -stevedore==1.20.0 +stevedore==1.29.0 +sushy==3.10.0 tenacity==6.2.0 testtools==2.2.0 tooz==2.7.0 diff --git a/releasenotes/notes/redfish-default-c7b2268606172bba.yaml b/releasenotes/notes/redfish-default-c7b2268606172bba.yaml new file mode 100644 index 0000000000..e5236c4160 --- /dev/null +++ b/releasenotes/notes/redfish-default-c7b2268606172bba.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + The ``redfish`` hardware type is now enabled by default along with all + its supported hardware interfaces. diff --git a/requirements.txt b/requirements.txt index 9c4e1dc473..ea11b920d0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ keystoneauth1>=4.2.0 # Apache-2.0 ironic-lib>=4.6.1 # Apache-2.0 python-swiftclient>=3.2.0 # Apache-2.0 pytz>=2013.6 # MIT -stevedore>=1.20.0 # Apache-2.0 +stevedore>=1.29.0 # Apache-2.0 oslo.concurrency>=4.2.0 # Apache-2.0 oslo.config>=6.8.0 # Apache-2.0 oslo.context>=2.22.0 # Apache-2.0 @@ -43,3 +43,4 @@ psutil>=3.2.2 # BSD futurist>=1.2.0 # Apache-2.0 tooz>=2.7.0 # Apache-2.0 openstacksdk>=0.48.0 # Apache-2.0 +sushy>=3.10.0