Skip to content

Commit fc1bd82

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Remove python-cinderclient"
2 parents adcde2b + b4c9fa3 commit fc1bd82

7 files changed

Lines changed: 12 additions & 230 deletions

File tree

openstackclient/tests/unit/image/v1/fakes.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@
1919
from openstack.image import v1 as image_v1
2020
from openstack.image.v1 import image
2121

22-
from openstackclient.tests.unit import fakes
2322
from openstackclient.tests.unit import utils
24-
from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
2523

2624

2725
class FakeClientMixin:
@@ -39,12 +37,8 @@ class TestImagev1(FakeClientMixin, utils.TestCommand):
3937
def setUp(self):
4038
super().setUp()
4139

42-
self.app.client_manager.volume = volume_fakes.FakeVolumeClient(
43-
endpoint=fakes.AUTH_URL,
44-
token=fakes.AUTH_TOKEN,
45-
)
46-
self.volume_client = self.app.client_manager.volume
47-
40+
# TODO(stephenfin): Rename to 'volume_client' now that all commands are
41+
# migrated to SDK
4842
self.app.client_manager.sdk_connection.volume = mock.Mock(
4943
spec=block_storage_v2.Proxy
5044
)

openstackclient/tests/unit/volume/test_find_resource.py

Lines changed: 0 additions & 76 deletions
This file was deleted.

openstackclient/tests/unit/volume/v2/fakes.py

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,33 +13,19 @@
1313

1414
from unittest import mock
1515

16-
from cinderclient import api_versions
1716
from keystoneauth1 import discover
1817
from openstack.block_storage import v2 as block_storage_v2
1918
from openstack.image import v2 as image_v2
2019

21-
from openstackclient.tests.unit import fakes
2220
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
2321
from openstackclient.tests.unit import utils
2422

2523

26-
class FakeVolumeClient:
27-
def __init__(self, **kwargs):
28-
self.auth_token = kwargs['token']
29-
self.management_url = kwargs['endpoint']
30-
self.api_version = api_versions.APIVersion('2.0')
31-
32-
3324
class FakeClientMixin:
3425
def setUp(self):
3526
super().setUp()
3627

37-
self.app.client_manager.volume = FakeVolumeClient(
38-
endpoint=fakes.AUTH_URL, token=fakes.AUTH_TOKEN
39-
)
40-
self.volume_client = self.app.client_manager.volume
41-
42-
# TODO(stephenfin): Rename to 'volume_client' once all commands are
28+
# TODO(stephenfin): Rename to 'volume_client' now that all commands are
4329
# migrated to SDK
4430
self.app.client_manager.sdk_connection.volume = mock.Mock(
4531
spec=block_storage_v2.Proxy,
@@ -57,8 +43,6 @@ def set_volume_api_version(self, version: str | None = None):
5743
"""
5844
assert version is None
5945

60-
self.volume_client.api_version = None
61-
6246
self.volume_sdk_client.default_microversion = None
6347
self.volume_sdk_client.get_endpoint_data.return_value = (
6448
discover.EndpointData(

openstackclient/tests/unit/volume/v3/fakes.py

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,47 +13,20 @@
1313
import re
1414
from unittest import mock
1515

16-
from cinderclient import api_versions
1716
from keystoneauth1 import discover
1817
from openstack.block_storage import v3 as block_storage_v3
1918
from openstack.compute import v2 as compute_v2
2019
from openstack.image import v2 as image_v2
2120

22-
from openstackclient.tests.unit import fakes
2321
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
2422
from openstackclient.tests.unit import utils
2523

2624

27-
class FakeVolumeClient:
28-
def __init__(self, **kwargs):
29-
self.auth_token = kwargs['token']
30-
self.management_url = kwargs['endpoint']
31-
self.api_version = api_versions.APIVersion('3.0')
32-
33-
self.clusters = mock.Mock()
34-
self.clusters.resource_class = fakes.FakeResource(None, {})
35-
self.services = mock.Mock()
36-
self.services.resource_class = fakes.FakeResource(None, {})
37-
self.volume_snapshots = mock.Mock()
38-
self.volume_snapshots.resource_class = fakes.FakeResource(None, {})
39-
self.volume_types = mock.Mock()
40-
self.volume_types.resource_class = fakes.FakeResource(None, {})
41-
self.volumes = mock.Mock()
42-
self.volumes.resource_class = fakes.FakeResource(None, {})
43-
self.workers = mock.Mock()
44-
self.workers.resource_class = fakes.FakeResource(None, {})
45-
46-
4725
class FakeClientMixin:
4826
def setUp(self):
4927
super().setUp()
5028

51-
self.app.client_manager.volume = FakeVolumeClient(
52-
endpoint=fakes.AUTH_URL, token=fakes.AUTH_TOKEN
53-
)
54-
self.volume_client = self.app.client_manager.volume
55-
56-
# TODO(stephenfin): Rename to 'volume_client' once all commands are
29+
# TODO(stephenfin): Rename to 'volume_client' now that all commands are
5730
# migrated to SDK
5831
self.app.client_manager.sdk_connection.volume = mock.Mock(
5932
spec=block_storage_v3.Proxy
@@ -72,8 +45,6 @@ def set_volume_api_version(self, version: str = '3.0'):
7245
"""
7346
assert re.match(r'3.\d+', version)
7447

75-
self.volume_client.api_version = api_versions.APIVersion(version)
76-
7748
self.volume_sdk_client.default_microversion = version
7849
self.volume_sdk_client.get_endpoint_data.return_value = (
7950
discover.EndpointData(

openstackclient/tests/unit/volume/v3/test_volume.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -899,9 +899,6 @@ class TestVolumeDelete(volume_fakes.TestVolume):
899899
def setUp(self):
900900
super().setUp()
901901

902-
self.volumes_mock = self.volume_client.volumes
903-
self.volumes_mock.reset_mock()
904-
905902
self.volumes = list(sdk_fakes.generate_fake_resources(_volume.Volume))
906903
self.volume_sdk_client.find_volume.side_effect = self.volumes
907904
self.volume_sdk_client.delete_volume.return_value = None

openstackclient/volume/client.py

Lines changed: 8 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -11,87 +11,31 @@
1111
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
1212
# License for the specific language governing permissions and limitations
1313
# under the License.
14-
#
1514

1615
import argparse
1716
import logging
1817
from typing import Any
1918

20-
from osc_lib import exceptions
2119
from osc_lib import utils
2220

2321
from openstackclient.i18n import _
2422

2523
LOG = logging.getLogger(__name__)
2624

25+
# global variables used when building the shell
2726
DEFAULT_API_VERSION = '3'
2827
API_VERSION_OPTION = 'os_volume_api_version'
2928
API_NAME = 'volume'
30-
API_VERSIONS = {
31-
'2': 'cinderclient.v2.client.Client',
32-
'3': 'cinderclient.v3.client.Client',
33-
}
34-
35-
# Save the microversion if in use
36-
_volume_api_version = None
29+
API_VERSIONS = ('2', '3')
3730

3831

3932
def make_client(instance: Any) -> Any:
4033
"""Returns a volume service client."""
41-
42-
# Defer client imports until we actually need them
43-
from cinderclient import extension
44-
from cinderclient.v3.contrib import list_extensions
45-
from cinderclient.v3 import volume_snapshots
46-
from cinderclient.v3 import volumes
47-
48-
try:
49-
from cinderclient.v2 import services # noqa
50-
except Exception:
51-
del API_VERSIONS['2']
52-
53-
if _volume_api_version is not None:
54-
version = _volume_api_version
55-
else:
56-
version = instance._api_version[API_NAME]
57-
from cinderclient import api_versions
58-
59-
# convert to APIVersion object
60-
version = api_versions.get_api_version(version)
61-
62-
if version.ver_major == '1':
63-
# Monkey patch for v1 cinderclient
64-
volumes.Volume.NAME_ATTR = 'display_name'
65-
volume_snapshots.Snapshot.NAME_ATTR = 'display_name'
66-
67-
volume_client = utils.get_client_class(
68-
API_NAME, version.ver_major, API_VERSIONS
69-
)
70-
LOG.debug('Instantiating volume client: %s', volume_client)
71-
72-
# Set client http_log_debug to True if verbosity level is high enough
73-
http_log_debug = utils.get_effective_log_level() <= logging.DEBUG
74-
75-
extensions = [extension.Extension('list_extensions', list_extensions)]
76-
77-
# Remember interface only if it is set
78-
kwargs = utils.build_kwargs_dict('endpoint_type', instance.interface)
79-
80-
endpoint_override = instance.sdk_connection.config.get_endpoint(
81-
'block-storage'
82-
)
83-
84-
client = volume_client(
85-
session=instance.session,
86-
extensions=extensions,
87-
http_log_debug=http_log_debug,
88-
region_name=instance.region_name,
89-
endpoint_override=endpoint_override,
90-
api_version=version,
91-
**kwargs,
34+
LOG.debug(
35+
'Volume client initialized using OpenStack SDK: %s',
36+
instance.sdk_connection.block_storage,
9237
)
93-
94-
return client
38+
return instance.sdk_connection.block_storage
9539

9640

9741
def build_option_parser(
@@ -109,36 +53,5 @@ def build_option_parser(
10953

11054

11155
def check_api_version(check_version: str) -> bool:
112-
"""Validate version supplied by user
113-
114-
Returns:
115-
116-
* True if version is OK
117-
* False if the version has not been checked and the previous plugin
118-
check should be performed
119-
* throws an exception if the version is no good
120-
"""
121-
122-
# Defer client imports until we actually need them
123-
from cinderclient import api_versions
124-
125-
global _volume_api_version
126-
127-
_volume_api_version = api_versions.get_api_version(check_version)
128-
129-
# Bypass X.latest format microversion
130-
if not _volume_api_version.is_latest():
131-
if _volume_api_version > api_versions.APIVersion('3.0'):
132-
if not _volume_api_version.matches(
133-
api_versions.MIN_VERSION,
134-
api_versions.MAX_VERSION,
135-
):
136-
msg = _('versions supported by client: %(min)s - %(max)s') % {
137-
'min': api_versions.MIN_VERSION,
138-
'max': api_versions.MAX_VERSION,
139-
}
140-
raise exceptions.CommandError(msg)
141-
142-
return True
143-
144-
return False
56+
# SDK supports auto-negotiation for us: always return True
57+
return True

requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ openstacksdk>=4.16.0 # Apache-2.0
99
osc-lib>=4.6.0 # Apache-2.0
1010
oslo.i18n>=3.15.3 # Apache-2.0
1111
python-keystoneclient>=3.22.0 # Apache-2.0
12-
python-cinderclient>=3.3.0 # Apache-2.0
1312
python-manilaclient>=6.0.0 # Apache-2.0
1413
requests>=2.27.0 # Apache-2.0
1514
stevedore>=2.0.1 # Apache-2.0

0 commit comments

Comments
 (0)