diff --git a/senlinclient/common/sdk.py b/senlinclient/common/sdk.py index e8539267..48507442 100644 --- a/senlinclient/common/sdk.py +++ b/senlinclient/common/sdk.py @@ -124,6 +124,15 @@ class Resource(base.Resource): def create_connection(prof=None, user_agent=None, **kwargs): + if not prof: + prof = profile.Profile() + interface = kwargs.pop('interface', None) + region_name = kwargs.pop('region_name', None) + if interface: + prof.set_interface('clustering', interface) + if region_name: + prof.set_region('clustering', region_name) + try: conn = connection.Connection(profile=prof, user_agent=user_agent, **kwargs) diff --git a/senlinclient/tests/unit/test_sdk.py b/senlinclient/tests/unit/test_sdk.py index 3654a197..dbbb0ce2 100644 --- a/senlinclient/tests/unit/test_sdk.py +++ b/senlinclient/tests/unit/test_sdk.py @@ -14,6 +14,9 @@ import mock import os import testtools +from openstack import connection as sdk_connection +from openstack import profile as sdk_profile + from senlinclient.common import sdk @@ -54,3 +57,47 @@ class TestSdk(testtools.TestCase): mock_prof.ALL = 'mock_prof.ALL' sdk.ProfileAction.set_option('interface', 'test=val1') mock_prof.set_interface.assert_called_once_with('test', 'val1') + + @mock.patch.object(sdk_connection, 'Connection') + def test_create_connection_with_profile(self, mock_connection): + mock_prof = mock.Mock() + mock_conn = mock.Mock() + mock_connection.return_value = mock_conn + kwargs = { + 'user_id': '123', + 'password': 'abc', + 'auth_url': 'test_url' + } + res = sdk.create_connection(mock_prof, **kwargs) + mock_connection.assert_called_once_with(profile=mock_prof, + user_agent=None, + user_id='123', + password='abc', + auth_url='test_url') + self.assertEqual(mock_conn, res) + + @mock.patch.object(sdk_connection, 'Connection') + @mock.patch.object(sdk_profile, 'Profile') + def test_create_connection_without_profile(self, mock_profile, + mock_connection): + mock_prof = mock.Mock() + mock_conn = mock.Mock() + mock_profile.return_value = mock_prof + mock_connection.return_value = mock_conn + kwargs = { + 'interface': 'public', + 'region_name': 'RegionOne', + 'user_id': '123', + 'password': 'abc', + 'auth_url': 'test_url' + } + res = sdk.create_connection(**kwargs) + + mock_prof.set_interface.assert_called_once_with('clustering', 'public') + mock_prof.set_region.assert_called_once_with('clustering', 'RegionOne') + mock_connection.assert_called_once_with(profile=mock_prof, + user_agent=None, + user_id='123', + password='abc', + auth_url='test_url') + self.assertEqual(mock_conn, res)