2121from osc_lib import exceptions
2222
2323from openstackclient .tests .unit .volume .v2 import fakes as volume_fakes
24+ from openstackclient .tests .unit .volume .v3 import fakes as v3_fakes
2425from openstackclient .volume .v3 import volume
2526
2627
27- class TestVolumeSummary (volume_fakes .TestVolume ):
28+ class BaseVolumeTest (volume_fakes .TestVolume ):
29+ def setUp (self ):
30+ super ().setUp ()
31+
32+ self .app .client_manager .sdk_connection = mock .Mock ()
33+ self .app .client_manager .sdk_connection .volume = mock .Mock ()
34+ self .sdk_client = self .app .client_manager .sdk_connection .volume
35+
36+ patcher = mock .patch .object (
37+ sdk_utils , 'supports_microversion' , return_value = True
38+ )
39+ self .addCleanup (patcher .stop )
40+ self .supports_microversion_mock = patcher .start ()
41+ self ._set_mock_microversion (
42+ self .app .client_manager .volume .api_version .get_string ()
43+ )
44+
45+ def _set_mock_microversion (self , mock_v ):
46+ """Set a specific microversion for the mock supports_microversion()."""
47+ self .supports_microversion_mock .reset_mock (return_value = True )
48+ self .supports_microversion_mock .side_effect = (
49+ lambda _ , v : api_versions .APIVersion (v )
50+ <= api_versions .APIVersion (mock_v )
51+ )
52+
53+
54+ class TestVolumeSummary (BaseVolumeTest ):
2855 columns = [
2956 'Total Count' ,
3057 'Total Size' ,
@@ -33,25 +60,18 @@ class TestVolumeSummary(volume_fakes.TestVolume):
3360 def setUp (self ):
3461 super ().setUp ()
3562
36- self .volumes_mock = self .app .client_manager .volume .volumes
37- self .volumes_mock .reset_mock ()
3863 self .mock_vol_1 = volume_fakes .create_one_volume ()
3964 self .mock_vol_2 = volume_fakes .create_one_volume ()
40- self .return_dict = {
41- 'volume-summary' : {
42- 'total_count' : 2 ,
43- 'total_size' : self .mock_vol_1 .size + self .mock_vol_2 .size ,
44- }
45- }
46- self .volumes_mock .summary .return_value = self .return_dict
65+ block_storage_summary = v3_fakes .get_one_block_storage_summary (
66+ self .mock_vol_1 .size + self .mock_vol_2 .size
67+ )
68+ self .sdk_client .summary .return_value = block_storage_summary
4769
4870 # Get the command object to test
4971 self .cmd = volume .VolumeSummary (self .app , None )
5072
5173 def test_volume_summary (self ):
52- self .app .client_manager .volume .api_version = api_versions .APIVersion (
53- '3.12'
54- )
74+ self ._set_mock_microversion ('3.12' )
5575 arglist = [
5676 '--all-projects' ,
5777 ]
@@ -62,9 +82,7 @@ def test_volume_summary(self):
6282
6383 columns , data = self .cmd .take_action (parsed_args )
6484
65- self .volumes_mock .summary .assert_called_once_with (
66- all_tenants = True ,
67- )
85+ self .sdk_client .summary .assert_called_once_with (True )
6886
6987 self .assertEqual (self .columns , columns )
7088
@@ -88,14 +106,13 @@ def test_volume_summary_pre_312(self):
88106 )
89107
90108 def test_volume_summary_with_metadata (self ):
91- self .app .client_manager .volume .api_version = api_versions .APIVersion (
92- '3.36'
93- )
109+ self ._set_mock_microversion ('3.36' )
94110
95111 combine_meta = {** self .mock_vol_1 .metadata , ** self .mock_vol_2 .metadata }
96- meta_dict = copy .deepcopy (self .return_dict )
97- meta_dict ['volume-summary' ]['metadata' ] = combine_meta
98- self .volumes_mock .summary .return_value = meta_dict
112+ block_storage_summary = v3_fakes .get_one_block_storage_summary (
113+ self .mock_vol_1 .size + self .mock_vol_2 .size , metadata = combine_meta
114+ )
115+ self .sdk_client .summary .return_value = block_storage_summary
99116
100117 new_cols = copy .deepcopy (self .columns )
101118 new_cols .extend (['Metadata' ])
@@ -110,9 +127,7 @@ def test_volume_summary_with_metadata(self):
110127
111128 columns , data = self .cmd .take_action (parsed_args )
112129
113- self .volumes_mock .summary .assert_called_once_with (
114- all_tenants = True ,
115- )
130+ self .sdk_client .summary .assert_called_once_with (True )
116131
117132 self .assertEqual (new_cols , columns )
118133
@@ -124,24 +139,10 @@ def test_volume_summary_with_metadata(self):
124139 self .assertCountEqual (datalist , tuple (data ))
125140
126141
127- class TestVolumeRevertToSnapshot (volume_fakes . TestVolume ):
142+ class TestVolumeRevertToSnapshot (BaseVolumeTest ):
128143 def setUp (self ):
129144 super ().setUp ()
130145
131- self .app .client_manager .sdk_connection = mock .Mock ()
132- self .app .client_manager .sdk_connection .volume = mock .Mock ()
133- self .sdk_client = self .app .client_manager .sdk_connection .volume
134- self .sdk_client .reset_mock ()
135-
136- patcher = mock .patch .object (
137- sdk_utils , 'supports_microversion' , return_value = True
138- )
139- self .addCleanup (patcher .stop )
140- self .supports_microversion_mock = patcher .start ()
141- self ._set_mock_microversion (
142- self .app .client_manager .volume .api_version .get_string ()
143- )
144-
145146 self .mock_volume = volume_fakes .create_one_volume ()
146147 self .mock_snapshot = volume_fakes .create_one_snapshot (
147148 attrs = {'volume_id' : self .mock_volume .id }
@@ -150,14 +151,6 @@ def setUp(self):
150151 # Get the command object to test
151152 self .cmd = volume .VolumeRevertToSnapshot (self .app , None )
152153
153- def _set_mock_microversion (self , mock_v ):
154- """Set a specific microversion for the mock supports_microversion()."""
155- self .supports_microversion_mock .reset_mock (return_value = True )
156- self .supports_microversion_mock .side_effect = (
157- lambda _ , v : api_versions .APIVersion (v )
158- <= api_versions .APIVersion (mock_v )
159- )
160-
161154 def test_volume_revert_to_snapshot_pre_340 (self ):
162155 arglist = [
163156 self .mock_snapshot .id ,
0 commit comments