@@ -1223,7 +1223,6 @@ def test_flavor_unset_with_unexist_flavor(self):
12231223 )
12241224
12251225 def test_flavor_unset_project_deleted_project (self ):
1226- # Simulate a project that has been deleted from Keystone
12271226 self .identity_sdk_client .find_project .side_effect = [
12281227 sdk_exceptions .ResourceNotFound ()
12291228 ]
@@ -1240,18 +1239,13 @@ def test_flavor_unset_project_deleted_project(self):
12401239 ]
12411240 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
12421241
1243- # TODO(bug #2099702): This should succeed. When removing a project
1244- # from a flavor's access list, the project may no longer exist in
1245- # Keystone (deleted tenant). The command should pass the raw project
1246- # ID through to Nova's removeTenantAccess API, which already handles
1247- # this case since the fix for bug #1980845. Instead, the command
1248- # fails because find_project_id_sdk() validates the project against
1249- # Keystone with validate_actor_existence=True (the default) and
1250- # raises CommandError when it doesn't exist.
1251- self .assertRaises (
1252- exceptions .CommandError , self .cmd .take_action , parsed_args
1242+ result = self .cmd .take_action (parsed_args )
1243+ self .assertIsNone (result )
1244+
1245+ self .compute_client .flavor_remove_tenant_access .assert_called_with (
1246+ self .flavor .id ,
1247+ deleted_project_id ,
12531248 )
1254- self .compute_client .flavor_remove_tenant_access .assert_not_called ()
12551249
12561250 def test_flavor_unset_nothing (self ):
12571251 arglist = [
0 commit comments