Merge "Implement generic redfish vmedia attach detach"
This commit is contained in:
@@ -296,6 +296,21 @@ def _eject_vmedia(task, managers, boot_device=None):
|
|||||||
return found
|
return found
|
||||||
|
|
||||||
|
|
||||||
|
def insert_vmedia(task, image_url, device_type):
|
||||||
|
"""Insert virtual CDs and DVDs
|
||||||
|
|
||||||
|
:param task: A task from TaskManager.
|
||||||
|
:param image_url:
|
||||||
|
:param device_type: sushy boot device e.g. `VIRTUAL_MEDIA_CD`,
|
||||||
|
`VIRTUAL_MEDIA_DVD` or `VIRTUAL_MEDIA_FLOPPY` or `None` to
|
||||||
|
eject everything (default).
|
||||||
|
:raises: InvalidParameterValue, if no suitable virtual CD or DVD is
|
||||||
|
found on the node.
|
||||||
|
"""
|
||||||
|
system = redfish_utils.get_system(task.node)
|
||||||
|
_insert_vmedia(task, system.managers, image_url, device_type)
|
||||||
|
|
||||||
|
|
||||||
def eject_vmedia(task, boot_device=None):
|
def eject_vmedia(task, boot_device=None):
|
||||||
"""Eject virtual CDs and DVDs
|
"""Eject virtual CDs and DVDs
|
||||||
|
|
||||||
|
@@ -37,6 +37,7 @@ from ironic.conf import CONF
|
|||||||
from ironic.drivers import base
|
from ironic.drivers import base
|
||||||
from ironic.drivers.modules import boot_mode_utils
|
from ironic.drivers.modules import boot_mode_utils
|
||||||
from ironic.drivers.modules import deploy_utils
|
from ironic.drivers.modules import deploy_utils
|
||||||
|
from ironic.drivers.modules.redfish import boot as redfish_boot
|
||||||
from ironic.drivers.modules.redfish import firmware_utils
|
from ironic.drivers.modules.redfish import firmware_utils
|
||||||
from ironic.drivers.modules.redfish import utils as redfish_utils
|
from ironic.drivers.modules.redfish import utils as redfish_utils
|
||||||
|
|
||||||
@@ -1334,3 +1335,27 @@ class RedfishManagement(base.ManagementInterface):
|
|||||||
% {'node': task.node.uuid, 'exc': exc})
|
% {'node': task.node.uuid, 'exc': exc})
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.RedfishError(error=msg)
|
raise exception.RedfishError(error=msg)
|
||||||
|
|
||||||
|
@task_manager.require_exclusive_lock
|
||||||
|
def attach_virtual_media(self, task, device_type, image_url):
|
||||||
|
"""Attach a virtual media device to the node.
|
||||||
|
|
||||||
|
:param task: A task from TaskManager.
|
||||||
|
:param device_type: A device type from
|
||||||
|
:data:`ironic.common.boot_devices.VMEDIA_DEVICES`.
|
||||||
|
:param image_url: URL of the image to attach, HTTP or HTTPS.
|
||||||
|
|
||||||
|
"""
|
||||||
|
redfish_boot.insert_vmedia(task, image_url, device_type)
|
||||||
|
|
||||||
|
@task_manager.require_exclusive_lock
|
||||||
|
def detach_virtual_media(self, task, device_type=None):
|
||||||
|
"""Detach some or all virtual media devices from the node.
|
||||||
|
|
||||||
|
:param task: A task from TaskManager.
|
||||||
|
:param device_type: A device type from
|
||||||
|
:data:`ironic.common.boot_devices.VMEDIA_DEVICES`.
|
||||||
|
If not provided, all devices are detached.
|
||||||
|
|
||||||
|
"""
|
||||||
|
redfish_boot.eject_vmedia(task, device_type)
|
||||||
|
@@ -95,6 +95,7 @@ class RedfishVendorPassthru(base.VendorInterface):
|
|||||||
"""Eject a virtual media device.
|
"""Eject a virtual media device.
|
||||||
|
|
||||||
Deprecated in favour of the generic API.
|
Deprecated in favour of the generic API.
|
||||||
|
This should be removed during the 2024.2 cycle.
|
||||||
|
|
||||||
:param task: A TaskManager object.
|
:param task: A TaskManager object.
|
||||||
:param kwargs: The arguments sent with vendor passthru. The optional
|
:param kwargs: The arguments sent with vendor passthru. The optional
|
||||||
|
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Adds implementation of attach/detach generic virtual media device
|
||||||
|
to the Redfish driver.
|
||||||
|
deprecations:
|
||||||
|
- |
|
||||||
|
The redfish vendor eject vmedia action is now deprecated and it will be
|
||||||
|
removed during the next cycle in favor of the generic API.
|
Reference in New Issue
Block a user