[stable-only] Add missing classes to cinderclient.v3
The QuotaSet class was never added to cinderclient.v3.quotas, and
the VolumeTransfer class was never added to cinderclient.v3.
volume_transfers.
Note: this fix is proposed directly to the stable branches, as the
issue was fixed differently in master (Xena development) when the
cinderclient.v2 classes were removed by change I335db5c1799e.
Change-Id: Ie00f068d7818e20683a0c242b51027d657382dd4
Closes-bug: #1938451
(cherry picked from commit 579846c7a4)
			
			
This commit is contained in:
		
							
								
								
									
										46
									
								
								cinderclient/tests/unit/v3/test_v2_compatibility.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								cinderclient/tests/unit/v3/test_v2_compatibility.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | # Copyright (c) 2021 Red Hat, Inc | ||||||
|  | # | ||||||
|  | # All Rights Reserved. | ||||||
|  | # | ||||||
|  | #    Licensed under the Apache License, Version 2.0 (the "License"); you may | ||||||
|  | #    not use this file except in compliance with the License. You may obtain | ||||||
|  | #    a copy of the License at | ||||||
|  | # | ||||||
|  | #         http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | # | ||||||
|  | #    Unless required by applicable law or agreed to in writing, software | ||||||
|  | #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||||||
|  | #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||||||
|  | #    License for the specific language governing permissions and limitations | ||||||
|  | #    under the License. | ||||||
|  |  | ||||||
|  | import importlib | ||||||
|  | import inspect | ||||||
|  |  | ||||||
|  | from cinderclient.tests.unit import utils | ||||||
|  | import cinderclient.v2 as cv2 | ||||||
|  | import cinderclient.v3 as cv3 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class v2_CompatibilityTest(utils.TestCase): | ||||||
|  |  | ||||||
|  |     def test_all_v2_classes_are_v3_classes(self): | ||||||
|  |         CV2 = 'cinderclient.v2' | ||||||
|  |         CV3 = 'cinderclient.v3' | ||||||
|  |  | ||||||
|  |         v2_class_names = [] | ||||||
|  |         for mod_name, mod_data in inspect.getmembers(cv2, inspect.ismodule): | ||||||
|  |             mod = importlib.import_module(CV2 + '.' + mod_name) | ||||||
|  |             v2_class_names.extend([cls_name for cls_name, cls_data | ||||||
|  |                                    in inspect.getmembers(mod, | ||||||
|  |                                                          inspect.isclass)]) | ||||||
|  |  | ||||||
|  |         v3_class_names = [] | ||||||
|  |         for mod_name, mod_data in inspect.getmembers(cv3, inspect.ismodule): | ||||||
|  |             mod = importlib.import_module(CV3 + '.' + mod_name) | ||||||
|  |             v3_class_names.extend([cls_name for cls_name, cls_data | ||||||
|  |                                    in inspect.getmembers(mod, | ||||||
|  |                                                          inspect.isclass)]) | ||||||
|  |  | ||||||
|  |         for cls_name in v2_class_names: | ||||||
|  |             self.assertIn(cls_name, v3_class_names) | ||||||
| @@ -16,6 +16,10 @@ | |||||||
| from cinderclient.v2 import quotas | from cinderclient.v2 import quotas | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class QuotaSet(quotas.QuotaSet): | ||||||
|  |     pass | ||||||
|  |  | ||||||
|  |  | ||||||
| class QuotaSetManager(quotas.QuotaSetManager): | class QuotaSetManager(quotas.QuotaSetManager): | ||||||
|  |  | ||||||
|     def update(self, tenant_id, **updates): |     def update(self, tenant_id, **updates): | ||||||
|   | |||||||
| @@ -19,6 +19,10 @@ from cinderclient import base | |||||||
| from cinderclient.v2 import volume_transfers | from cinderclient.v2 import volume_transfers | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class VolumeTransfer(volume_transfers.VolumeTransfer): | ||||||
|  |     pass | ||||||
|  |  | ||||||
|  |  | ||||||
| class VolumeTransferManager(volume_transfers.VolumeTransferManager): | class VolumeTransferManager(volume_transfers.VolumeTransferManager): | ||||||
|     def create(self, volume_id, name=None, no_snapshots=False): |     def create(self, volume_id, name=None, no_snapshots=False): | ||||||
|         """Creates a volume transfer. |         """Creates a volume transfer. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Brian Rosmaita
					Brian Rosmaita