@@ -4860,6 +4860,39 @@ def test_terminate_instance_no_bdm_volume_id(self, mock_delete_instance,
4860
4860
mock_delete_instance .assert_called_once_with (
4861
4861
self .context , instance , bdms )
4862
4862
4863
+ @mock .patch ('nova.context.RequestContext.elevated' )
4864
+ def test_terminate_instance_no_network_info (self , mock_elevated ):
4865
+ # Tests that we refresh the network info if it was empty
4866
+ instance = fake_instance .fake_instance_obj (
4867
+ self .context , vm_state = vm_states .ACTIVE )
4868
+ empty_nw_info = network_model .NetworkInfo ()
4869
+ instance .info_cache = objects .InstanceInfoCache (
4870
+ network_info = empty_nw_info )
4871
+ vif = fake_network_cache_model .new_vif ()
4872
+ nw_info = network_model .NetworkInfo ([vif ])
4873
+ bdms = objects .BlockDeviceMappingList ()
4874
+ elevated = context .get_admin_context ()
4875
+ mock_elevated .return_value = elevated
4876
+
4877
+ # Call shutdown instance
4878
+ with test .nested (
4879
+ mock .patch .object (self .compute .network_api , 'get_instance_nw_info' ,
4880
+ return_value = nw_info ),
4881
+ mock .patch .object (self .compute , '_get_instance_block_device_info' ),
4882
+ mock .patch .object (self .compute .driver , 'destroy' )
4883
+ ) as (
4884
+ mock_nw_api_info , mock_get_bdi , mock_destroy
4885
+ ):
4886
+ self .compute ._shutdown_instance (self .context , instance , bdms ,
4887
+ notify = False , try_deallocate_networks = False )
4888
+
4889
+ # Verify
4890
+ mock_nw_api_info .assert_called_once_with (elevated , instance )
4891
+ mock_get_bdi .assert_called_once_with (elevated , instance , bdms = bdms )
4892
+ # destroy should have been called with the refresh network_info
4893
+ mock_destroy .assert_called_once_with (
4894
+ elevated , instance , nw_info , mock_get_bdi .return_value )
4895
+
4863
4896
@mock .patch ('nova.compute.utils.notify_about_instance_action' )
4864
4897
@mock .patch .object (nova .compute .manager .ComputeManager ,
4865
4898
'_notify_about_instance_usage' )
0 commit comments