Cleanup some workarounds for old OCC versions

We don't need to pass constructor objects to os-client-config -
os-client-config is quite happy to do this for us.

We do need to bump the os-client-config version, because the magnum
container workaround didn't go in until then.

Change-Id: I6a7958eaf6745e6714a0c03b7e829c29c4059b07
This commit is contained in:
Monty Taylor 2017-03-20 07:06:52 -05:00
parent db45323809
commit f29624aced
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
3 changed files with 17 additions and 39 deletions

View File

@ -5,7 +5,7 @@ decorator
jmespath
jsonpatch
ipaddress
os-client-config>=1.22.0
os-client-config>=1.25.0
requestsexceptions>=1.1.1
six

View File

@ -31,16 +31,10 @@ import requestsexceptions
from six.moves import urllib
import cinderclient.exceptions as cinder_exceptions
import heatclient.client
import magnumclient.exceptions as magnum_exceptions
from heatclient import exc as heat_exceptions
import keystoneauth1.exceptions
import keystoneclient.client
import magnumclient.client
import neutronclient.neutron.client
import novaclient.client
import novaclient.exceptions as nova_exceptions
import designateclient.client
from shade.exc import * # noqa
from shade import _adapter
@ -339,7 +333,7 @@ class OpenStackCloud(_normalize.Normalizer):
return self._cache
def _get_client(
self, service_key, client_class, interface_key=None,
self, service_key, client_class=None, interface_key=None,
pass_version_arg=True, **kwargs):
try:
client = self.cloud_config.get_legacy_client(
@ -544,8 +538,7 @@ class OpenStackCloud(_normalize.Normalizer):
@property
def nova_client(self):
if self._nova_client is None:
self._nova_client = self._get_client(
'compute', novaclient.client.Client, version='2.0')
self._nova_client = self._get_client('compute', version='2.0')
return self._nova_client
@property
@ -561,8 +554,7 @@ class OpenStackCloud(_normalize.Normalizer):
@property
def keystone_client(self):
if self._keystone_client is None:
self._keystone_client = self._get_client(
'identity', keystoneclient.client.Client)
self._keystone_client = self._get_client('identity')
return self._keystone_client
@property
@ -1092,22 +1084,20 @@ class OpenStackCloud(_normalize.Normalizer):
' need a raw glanceclient.Client object, please use'
' make_legacy_client in os-client-config instead')
try:
import glanceclient
import glanceclient # flake8: noqa
except ImportError:
self.log.error(
'glanceclient is no longer a dependency of shade. You need to'
' install python-glanceclient directly.')
raise
if self._glance_client is None:
self._glance_client = self._get_client(
'image', glanceclient.Client)
self._glance_client = self._get_client('image')
return self._glance_client
@property
def heat_client(self):
if self._heat_client is None:
self._heat_client = self._get_client(
'orchestration', heatclient.client.Client)
self._heat_client = self._get_client('orchestration')
return self._heat_client
def get_template_contents(
@ -1128,13 +1118,12 @@ class OpenStackCloud(_normalize.Normalizer):
' need a raw swiftclient.Connection object, please use'
' make_legacy_client in os-client-config instead')
try:
import swiftclient.client
import swiftclient.client # flake8: noqa
except ImportError:
self.log.error(
'swiftclient is no longer a dependency of shade. You need to'
' install python-swiftclient directly.')
return self._get_client(
'object-store', swiftclient.client.Connection)
return self._get_client('object-store')
def _get_swift_kwargs(self):
auth_version = self.cloud_config.get_api_version('identity')
@ -1186,10 +1175,9 @@ class OpenStackCloud(_normalize.Normalizer):
# Import cinderclient late because importing it at the top level
# breaks logging for users of shade
import cinderclient.client
import cinderclient.client # flake8: noqa
if self._cinder_client is None:
self._cinder_client = self._get_client(
'volume', cinderclient.client.Client)
self._cinder_client = self._get_client('volume')
return self._cinder_client
@property
@ -1198,35 +1186,26 @@ class OpenStackCloud(_normalize.Normalizer):
'Using shade to get a trove_client object is deprecated. If you'
' need a raw troveclient.client.Client object, please use'
' make_legacy_client in os-client-config instead')
import troveclient.client
if self._trove_client is None:
self._trove_client = self._get_client(
'database', troveclient.client.Client)
self._trove_client = self._get_client('database')
return self._trove_client
@property
def magnum_client(self):
if self._magnum_client is None:
# Workaround for os-client-config <=1.24.0 which thought of
# this as container rather than container-infra (so did we all)
version = self.cloud_config.get_api_version('container-infra')
if not version:
version = self.cloud_config.get_api_version('container')
self._magnum_client = self._get_client(
service_key='container-infra',
client_class=magnumclient.client.Client,
version=version)
self._magnum_client = self._get_client('container-infra')
return self._magnum_client
@property
def neutron_client(self):
if self._neutron_client is None:
self._neutron_client = self._get_client(
'network', neutronclient.neutron.client.Client)
self._neutron_client = self._get_client('network')
return self._neutron_client
@property
def designate_client(self):
# Note: Explicit constructor is needed until occ 1.27.0
import designateclient.client # flake8: noqa
if self._designate_client is None:
self._designate_client = self._get_client(
'dns', designateclient.client.Client)

View File

@ -13,7 +13,6 @@
import mock
import munch
from heatclient import client as heat_client
from neutronclient.common import exceptions as n_exc
import testtools
@ -82,7 +81,7 @@ class TestShade(base.TestCase):
self.cloud.heat_client
get_legacy_client_mock.assert_called_once_with(
service_key='orchestration',
client_class=heat_client.Client,
client_class=None,
interface_key=None,
pass_version_arg=True,
)