1616from unittest import mock
1717
1818from cinderclient import api_versions
19+ from openstack import utils as sdk_utils
1920from osc_lib .cli import format_columns
2021from osc_lib import exceptions
21- from osc_lib import utils
2222
2323from openstackclient .tests .unit .volume .v2 import fakes as volume_fakes
2424from openstackclient .volume .v3 import volume
@@ -128,18 +128,36 @@ class TestVolumeRevertToSnapshot(volume_fakes.TestVolume):
128128 def setUp (self ):
129129 super ().setUp ()
130130
131- self .volumes_mock = self .app .client_manager .volume .volumes
132- self .volumes_mock .reset_mock ()
133- self .snapshots_mock = self .app .client_manager .volume .volume_snapshots
134- self .snapshots_mock .reset_mock ()
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+
135145 self .mock_volume = volume_fakes .create_one_volume ()
136146 self .mock_snapshot = volume_fakes .create_one_snapshot (
137- attrs = {'volume_id' : self .volumes_mock .id }
147+ attrs = {'volume_id' : self .mock_volume .id }
138148 )
139149
140150 # Get the command object to test
141151 self .cmd = volume .VolumeRevertToSnapshot (self .app , None )
142152
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+
143161 def test_volume_revert_to_snapshot_pre_340 (self ):
144162 arglist = [
145163 self .mock_snapshot .id ,
@@ -157,9 +175,7 @@ def test_volume_revert_to_snapshot_pre_340(self):
157175 )
158176
159177 def test_volume_revert_to_snapshot (self ):
160- self .app .client_manager .volume .api_version = api_versions .APIVersion (
161- '3.40'
162- )
178+ self ._set_mock_microversion ('3.40' )
163179 arglist = [
164180 self .mock_snapshot .id ,
165181 ]
@@ -168,14 +184,22 @@ def test_volume_revert_to_snapshot(self):
168184 ]
169185 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
170186
171- find_mock_result = [self .mock_snapshot , self .mock_volume ]
172187 with mock .patch .object (
173- utils , 'find_resource' , side_effect = find_mock_result
174- ) as find_mock :
188+ self .sdk_client , 'find_volume' , return_value = self .mock_volume
189+ ), mock .patch .object (
190+ self .sdk_client , 'find_snapshot' , return_value = self .mock_snapshot
191+ ):
175192 self .cmd .take_action (parsed_args )
176193
177- self .volumes_mock .revert_to_snapshot .assert_called_once_with (
178- volume = self .mock_volume ,
179- snapshot = self .mock_snapshot ,
194+ self .sdk_client .revert_volume_to_snapshot .assert_called_once_with (
195+ self .mock_volume ,
196+ self .mock_snapshot ,
197+ )
198+ self .sdk_client .find_volume .assert_called_with (
199+ self .mock_volume .id ,
200+ ignore_missing = False ,
201+ )
202+ self .sdk_client .find_snapshot .assert_called_with (
203+ self .mock_snapshot .id ,
204+ ignore_missing = False ,
180205 )
181- self .assertEqual (2 , find_mock .call_count )
0 commit comments