Source code for ironic.drivers.drac

#
# 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
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

"""
DRAC Driver for remote system management using Dell Remote Access Card.
"""

from oslo_config import cfg

from ironic.drivers.modules.drac import bios
from ironic.drivers.modules.drac import boot
from ironic.drivers.modules.drac import inspect as drac_inspect
from ironic.drivers.modules.drac import management
from ironic.drivers.modules.drac import power
from ironic.drivers.modules.drac import raid
from ironic.drivers.modules.drac import vendor_passthru
from ironic.drivers.modules.redfish import boot as redfish_boot
from ironic.drivers.modules.redfish import inspect as redfish_inspect
from ironic.drivers.modules.redfish import raid as redfish_raid
from ironic.drivers import redfish


CONF = cfg.CONF


[docs] class IDRACHardware(redfish.RedfishHardware): """integrated Dell Remote Access Controller hardware type""" # Required hardware interfaces @property def supported_boot_interfaces(self): """List of supported boot interfaces.""" inherited = super().supported_boot_interfaces # remove the generic redfish one in favor of the Dell specific idx = inherited.index(redfish_boot.RedfishVirtualMediaBoot) inherited[idx] = boot.DracRedfishVirtualMediaBoot return inherited @property def supported_management_interfaces(self): """List of supported management interfaces.""" return [management.DracRedfishManagement] @property def supported_power_interfaces(self): """List of supported power interfaces.""" return ([power.DracRedfishPower] + super().supported_power_interfaces) # Optional hardware interfaces @property def supported_bios_interfaces(self): """List of supported bios interfaces.""" return ([bios.DracRedfishBIOS] + super().supported_bios_interfaces) @property def supported_inspect_interfaces(self): """List of supported inspect interfaces.""" # Inspector support should have a higher priority than NoInspect # if it is enabled by an operator (implying that the service is # installed). inherited = super().supported_inspect_interfaces # remove the generic redfish one in favor of the Dell specific idx = inherited.index(redfish_inspect.RedfishInspect) inherited[idx] = drac_inspect.DracRedfishInspect return inherited @property def supported_raid_interfaces(self): """List of supported raid interfaces.""" inherited = super().supported_raid_interfaces # remove the generic redfish one in favor of the Dell specific idx = inherited.index(redfish_raid.RedfishRAID) inherited[idx] = raid.DracRedfishRAID return inherited @property def supported_vendor_interfaces(self): """List of supported vendor interfaces.""" return ([vendor_passthru.DracRedfishVendorPassthru] + super().supported_vendor_interfaces)