def test_terminate_vnf_instance_already_not_instantiated( self, mock_log, mock_package_in_use, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) mock_package_in_use.return_value = True vnf_instance_data['instantiation_state'] =\ fields.VnfInstanceState.NOT_INSTANTIATED vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() terminate_vnf_req = objects.TerminateVnfRequest( termination_type=fields.VnfInstanceTerminationType.GRACEFUL) self.conductor.terminate(self.context, vnf_instance, terminate_vnf_req) self.vnflcm_driver.terminate_vnf.assert_not_called() mock_package_in_use.assert_not_called() expected_log = ('Terminate action cannot be performed on vnf %(id)s ' 'which is in %(state)s state.') mock_log.error.assert_called_once_with( expected_log, { 'id': vnf_instance.id, 'state': fields.VnfInstanceState.NOT_INSTANTIATED })
def test_terminate_vnf_delete_wait_instance_failed(self, mock_vim, mock_vnf_instance_save): vnf_instance = fakes.return_vnf_instance( fields.VnfInstanceState.INSTANTIATED) vnf_instance.instantiated_vnf_info.instance_id =\ uuidsentinel.instance_id terminate_vnf_req = objects.TerminateVnfRequest( termination_type=fields.VnfInstanceTerminationType.FORCEFUL) self._mock_vnf_manager(fail_method_name='delete_wait') driver = vnflcm_driver.VnfLcmDriver() error = self.assertRaises(InfraDriverException, driver.terminate_vnf, self.context, vnf_instance, terminate_vnf_req) self.assertEqual("delete_wait failed", str(error)) self.assertEqual(2, mock_vnf_instance_save.call_count) self.assertEqual(2, self._vnf_manager.invoke.call_count)
def test_terminate_vnf_graceful_no_timeout(self, mock_resource_destroy, mock_resource_list, mock_vim, mock_vnf_instance_save): vnf_instance = fakes.return_vnf_instance( fields.VnfInstanceState.INSTANTIATED) vnf_instance.instantiated_vnf_info.instance_id =\ uuidsentinel.instance_id mock_resource_list.return_value = [fakes.return_vnf_resource()] terminate_vnf_req = objects.TerminateVnfRequest( termination_type=fields.VnfInstanceTerminationType.GRACEFUL) self._mock_vnf_manager() driver = vnflcm_driver.VnfLcmDriver() driver.terminate_vnf(self.context, vnf_instance, terminate_vnf_req) self.assertEqual(2, mock_vnf_instance_save.call_count) self.assertEqual(1, mock_resource_destroy.call_count)
def test_terminate_vnf_instance_failed_to_update_usage_state( self, mock_log, mock_is_package_in_use, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) vnf_instance_data['instantiation_state'] =\ fields.VnfInstanceState.INSTANTIATED vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() terminate_vnf_req = objects.TerminateVnfRequest( termination_type=fields.VnfInstanceTerminationType.GRACEFUL) mock_is_package_in_use.side_effect = Exception self.conductor.terminate(self.context, vnf_instance, terminate_vnf_req) self.vnflcm_driver.terminate_vnf.assert_called_once_with( self.context, mock.ANY, terminate_vnf_req) expected_msg = "Failed to update usage_state of vnf package %s" mock_log.error.assert_called_once_with(expected_msg, vnf_package_vnfd.package_uuid)
def test_terminate_vnf_instance(self, mock_package_in_use, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) mock_package_in_use.return_value = True vnf_instance_data['instantiation_state'] =\ fields.VnfInstanceState.INSTANTIATED vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() terminate_vnf_req = objects.TerminateVnfRequest( termination_type=fields.VnfInstanceTerminationType.GRACEFUL) self.conductor.terminate(self.context, vnf_instance, terminate_vnf_req) self.vnflcm_driver.terminate_vnf.assert_called_once_with( self.context, mock.ANY, terminate_vnf_req) mock_package_in_use.assert_called_once()