Add support for ilo Virtual Media
This commit adds support for eject virtual media for HPE Proliant Servers. Story: #2004995 Task: #29467 Change-Id: I1706206ac74211c6abb71712ceb55b29b4824f16
This commit is contained in:
parent
185b2503cb
commit
9bd1d6b0dd
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
fixes:
|
||||
- |
|
||||
Some vendors like HPE iLO has this kind of implementation that for eject
|
||||
virtual media need to pass empty dictionary otherwise throws Unsupported
|
||||
media type error.
|
|
@ -13,6 +13,8 @@
|
|||
# This is referred from Redfish standard schema.
|
||||
# https://redfish.dmtf.org/schemas/VirtualMedia.v1_2_0.json
|
||||
|
||||
from six.moves import http_client
|
||||
|
||||
from sushy import exceptions
|
||||
from sushy.resources import base
|
||||
from sushy.resources import common
|
||||
|
@ -98,9 +100,14 @@ class VirtualMedia(base.ResourceBase):
|
|||
After ejecting media inserted will be False and image_name will be
|
||||
empty.
|
||||
"""
|
||||
|
||||
target_uri = self._get_eject_media_element().target_uri
|
||||
self._conn.post(target_uri)
|
||||
try:
|
||||
target_uri = self._get_eject_media_element().target_uri
|
||||
self._conn.post(target_uri)
|
||||
except exceptions.HTTPError as response:
|
||||
# Some vendors like HPE iLO has this kind of implementation.
|
||||
# It needs to pass an empty dict.
|
||||
if response.status_code == http_client.UNSUPPORTED_MEDIA_TYPE:
|
||||
self._conn.post(target_uri, data={})
|
||||
self.invalidate()
|
||||
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
import json
|
||||
|
||||
import mock
|
||||
from six.moves import http_client
|
||||
|
||||
import sushy
|
||||
from sushy import exceptions
|
||||
|
@ -83,3 +84,16 @@ class VirtualMediaTestCase(base.TestCase):
|
|||
("/redfish/v1/Managers/BMC/VirtualMedia/Floppy1/Actions"
|
||||
"/VirtualMedia.EjectMedia"))
|
||||
self.assertTrue(self.sys_virtual_media._is_stale)
|
||||
|
||||
def test_eject_media_pass_empty_dict(self):
|
||||
target_uri = ("/redfish/v1/Managers/BMC/VirtualMedia/Floppy1/Actions"
|
||||
"/VirtualMedia.EjectMedia")
|
||||
self.conn.post.side_effect = [exceptions.HTTPError(
|
||||
method='POST', url=target_uri, response=mock.Mock(
|
||||
status_code=http_client.UNSUPPORTED_MEDIA_TYPE)), '200']
|
||||
self.sys_virtual_media.eject_media()
|
||||
post_calls = [
|
||||
mock.call(target_uri),
|
||||
mock.call(target_uri, data={})]
|
||||
self.sys_virtual_media._conn.post.assert_has_calls(post_calls)
|
||||
self.assertTrue(self.sys_virtual_media._is_stale)
|
||||
|
|
Loading…
Reference in New Issue