Merge "Add support to accept custom connector object"

This commit is contained in:
Zuul 2018-01-18 10:55:48 +00:00 committed by Gerrit Code Review
commit 5a2896699d
3 changed files with 21 additions and 3 deletions

View File

@ -0,0 +1,5 @@
---
features:
- |
Adds the ability to specify user-defined connector object on creation
of a root Sushy instance.

View File

@ -15,7 +15,7 @@
import logging
from sushy import auth as sushy_auth
from sushy import connector
from sushy import connector as sushy_connector
from sushy.resources import base
from sushy.resources.manager import manager
from sushy.resources.sessionservice import session
@ -48,7 +48,7 @@ class Sushy(base.ResourceBase):
def __init__(self, base_url, username=None, password=None,
root_prefix='/redfish/v1/', verify=True,
auth=None):
auth=None, connector=None):
"""A class representing a RootService
:param base_url: The base URL to the Redfish controller. It
@ -66,6 +66,7 @@ class Sushy(base.ResourceBase):
a path the driver will use the specified certificate or one of
the certificates in the directory. Defaults to True.
:param auth: An authentication mechanism to utilize.
:param connector: A user-defined connector object. Defaults to None.
"""
self._root_prefix = root_prefix
if (auth is not None and (password is not None or
@ -78,7 +79,7 @@ class Sushy(base.ResourceBase):
password=password)
super(Sushy, self).__init__(
connector.Connector(base_url, verify),
connector or sushy_connector.Connector(base_url, verify),
path=self._root_prefix)
self._auth = auth
self._auth.set_context(self, self._conn)

View File

@ -64,6 +64,18 @@ class MainTestCase(base.TestCase):
ValueError, main.Sushy, 'http://foo.bar:1234',
'foo', 'bar', auth=mock.MagicMock())
@mock.patch.object(connector, 'Connector', autospec=True)
def test_custom_connector(self, mock_Sushy_Connector):
connector_mock = mock.MagicMock()
with open('sushy/tests/unit/json_samples/root.json', 'r') as f:
connector_mock.get.return_value.json.return_value = (
json.loads(f.read()))
main.Sushy('http://foo.bar:1234', 'foo', 'bar',
connector=connector_mock)
self.assertTrue(connector_mock.post.called)
self.assertTrue(connector_mock.get.called)
self.assertFalse(mock_Sushy_Connector.called)
@mock.patch.object(system, 'SystemCollection', autospec=True)
def test_get_system_collection(self, mock_system_collection):
self.root.get_system_collection()