Update use of SDK for 0.11

OpenStackSDK is moving away from Profile due to the merge with
os-client-config. Update the constructor to use the new form.

Change-Id: I1fff1b2094444bd013f9e436edae7921ffd6d71a
This commit is contained in:
Monty Taylor 2018-02-04 10:28:56 -06:00
parent 31842b6f3d
commit ecd2ff24f8
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
3 changed files with 49 additions and 61 deletions

View File

@ -19,13 +19,13 @@ import six
from openstack import connection
from openstack import exceptions as sdk_exc
from openstack import profile
from oslo_serialization import jsonutils
from requests import exceptions as req_exc
from bilean.common import exception as bilean_exc
from bilean import version
USER_AGENT = 'bilean'
APP_NAME = 'bilean'
exc = sdk_exc
LOG = logging.getLogger(__name__)
@ -35,9 +35,7 @@ def parse_exception(ex):
code = 500
if isinstance(ex, sdk_exc.HttpException):
# some exceptions don't contain status_code
if ex.http_status is not None:
code = ex.http_status
code = ex.status_code
message = ex.message
data = {}
try:
@ -96,18 +94,15 @@ def create_connection(params=None):
params = {}
if params.get('token'):
auth_plugin = 'token'
auth_type = 'token'
else:
auth_plugin = 'password'
auth_type = 'password'
prof = profile.Profile()
prof.set_version('identity', 'v3')
if 'region_name' in params:
prof.set_region(prof.ALL, params['region_name'])
params.pop('region_name')
try:
conn = connection.Connection(profile=prof, user_agent=USER_AGENT,
auth_plugin=auth_plugin, **params)
conn = connection.Connection(
app_name=APP_NAME,
app_version=version.version_info.version_string(),
identity_api_version='3', auth_type=auth_type, **params)
except Exception as ex:
raise parse_exception(ex)

View File

@ -15,6 +15,7 @@ from oslo_config import cfg
from oslo_log import log as logging
import oslo_messaging
from oslo_service import service
import six
from bilean.common.i18n import _LE
from bilean.common import messaging as bilean_messaging
@ -53,7 +54,7 @@ class NotificationService(service.Service):
try:
topic_exchanges = plugin.get_notification_topics_exchanges()
for plugin_topic in topic_exchanges:
if isinstance(plugin_topic, basestring):
if isinstance(plugin_topic, six.string_types):
raise Exception(
_LE("Plugin %s should return a list of topic "
"exchange pairs") % plugin.__class__.__name__)

View File

@ -12,7 +12,6 @@
import mock
from openstack import connection
from openstack import profile
from oslo_serialization import jsonutils
from requests import exceptions as req_exc
import six
@ -20,11 +19,13 @@ import six
from bilean.common import exception as bilean_exc
from bilean.drivers.openstack import sdk
from bilean.tests.common import base
from bilean import version
class OpenStackSDKTest(base.BileanTestCase):
def setUp(self):
self.app_version = version.version_info.version_string()
super(OpenStackSDKTest, self).setUp()
def test_parse_exception_http_exception_with_details(self):
@ -34,7 +35,8 @@ class OpenStackSDKTest(base.BileanTestCase):
'message': 'Resource BAR is not found.'
}
})
raw = sdk.exc.ResourceNotFound('A message', details, http_status=404)
raw = sdk.exc.ResourceNotFound(
'A message', details=details, http_status=404)
ex = self.assertRaises(bilean_exc.InternalError,
sdk.parse_exception, raw)
@ -47,7 +49,8 @@ class OpenStackSDKTest(base.BileanTestCase):
'message': 'Quota exceeded for instances.'
}
})
raw = sdk.exc.ResourceNotFound('A message', details, 403)
raw = sdk.exc.ResourceNotFound('A message', details=details,
http_status=403)
ex = self.assertRaises(bilean_exc.InternalError,
sdk.parse_exception, raw)
@ -57,7 +60,8 @@ class OpenStackSDKTest(base.BileanTestCase):
def test_parse_exception_http_exception_no_details(self):
details = "An error message"
raw = sdk.exc.ResourceNotFound('A message.', details, http_status=404)
raw = sdk.exc.ResourceNotFound(
'A message.', details=details, http_status=404)
ex = self.assertRaises(bilean_exc.InternalError,
sdk.parse_exception, raw)
@ -129,30 +133,24 @@ class OpenStackSDKTest(base.BileanTestCase):
self.assertEqual(500, ex.code)
self.assertEqual('BOOM', ex.message)
@mock.patch.object(profile, 'Profile')
@mock.patch.object(connection, 'Connection')
def test_create_connection_token(self, mock_conn, mock_profile):
x_profile = mock.Mock()
mock_profile.return_value = x_profile
def test_create_connection_token(self, mock_conn):
x_conn = mock.Mock()
mock_conn.return_value = x_conn
res = sdk.create_connection({'token': 'TOKEN', 'foo': 'bar'})
self.assertEqual(x_conn, res)
mock_profile.assert_called_once_with()
x_profile.set_version.assert_called_once_with('identity', 'v3')
mock_conn.assert_called_once_with(profile=x_profile,
user_agent=sdk.USER_AGENT,
auth_plugin='token',
token='TOKEN',
foo='bar')
mock_conn.assert_called_once_with(
app_name=sdk.APP_NAME,
app_version=self.app_version,
identity_api_version='3',
auth_type='token',
token='TOKEN',
foo='bar')
@mock.patch.object(profile, 'Profile')
@mock.patch.object(connection, 'Connection')
def test_create_connection_password(self, mock_conn, mock_profile):
x_profile = mock.Mock()
mock_profile.return_value = x_profile
def test_create_connection_password(self, mock_conn):
x_conn = mock.Mock()
mock_conn.return_value = x_conn
@ -160,40 +158,33 @@ class OpenStackSDKTest(base.BileanTestCase):
'foo': 'bar'})
self.assertEqual(x_conn, res)
mock_profile.assert_called_once_with()
x_profile.set_version.assert_called_once_with('identity', 'v3')
mock_conn.assert_called_once_with(profile=x_profile,
user_agent=sdk.USER_AGENT,
auth_plugin='password',
user_id='123',
password='abc',
foo='bar')
mock_conn.assert_called_once_with(
app_name=sdk.APP_NAME,
app_version=self.app_version,
identity_api_version='3',
auth_type='password',
user_id='123',
password='abc',
foo='bar')
@mock.patch.object(profile, 'Profile')
@mock.patch.object(connection, 'Connection')
def test_create_connection_with_region(self, mock_conn, mock_profile):
x_profile = mock.Mock()
mock_profile.return_value = x_profile
def test_create_connection_with_region(self, mock_conn):
x_conn = mock.Mock()
mock_conn.return_value = x_conn
res = sdk.create_connection({'region_name': 'REGION_ONE'})
self.assertEqual(x_conn, res)
mock_profile.assert_called_once_with()
x_profile.set_region.assert_called_once_with(x_profile.ALL,
'REGION_ONE')
mock_conn.assert_called_once_with(profile=x_profile,
user_agent=sdk.USER_AGENT,
auth_plugin='password')
mock_conn.assert_called_once_with(
app_name=sdk.APP_NAME,
app_version=self.app_version,
identity_api_version='3',
auth_type='password',
region_name='REGION_ONE')
@mock.patch.object(profile, 'Profile')
@mock.patch.object(connection, 'Connection')
@mock.patch.object(sdk, 'parse_exception')
def test_create_connection_with_exception(self, mock_parse, mock_conn,
mock_profile):
x_profile = mock.Mock()
mock_profile.return_value = x_profile
def test_create_connection_with_exception(self, mock_parse, mock_conn):
ex_raw = Exception('Whatever')
mock_conn.side_effect = ex_raw
mock_parse.side_effect = bilean_exc.InternalError(code=123,
@ -202,10 +193,11 @@ class OpenStackSDKTest(base.BileanTestCase):
ex = self.assertRaises(bilean_exc.InternalError,
sdk.create_connection)
mock_profile.assert_called_once_with()
mock_conn.assert_called_once_with(profile=x_profile,
user_agent=sdk.USER_AGENT,
auth_plugin='password')
mock_conn.assert_called_once_with(
app_name=sdk.APP_NAME,
app_version=self.app_version,
identity_api_version='3',
auth_type='password')
mock_parse.assert_called_once_with(ex_raw)
self.assertEqual(123, ex.code)
self.assertEqual('BOOM', ex.message)