@@ -1365,7 +1365,8 @@ def _create_test_configs(self):
13651365 'auth_url' : 'http://keystone:5000/v3' ,
13661366 'user_domain_name' : 'Default' ,
13671367 'project_domain_name' : 'Default'
1368- }
1368+ },
1369+ 'region_name' : 'regionOne'
13691370 }
13701371 }
13711372 }
@@ -1462,6 +1463,7 @@ class MockUnauthorized(Exception):
14621463
14631464 self ._assert_no_secrets_in_logs ()
14641465
1466+ @patch .dict (os .environ , {'OS_CLOUD' : 'testcloud' })
14651467 def test_create_connection_exception_no_secret_exposure (self ):
14661468 """Test that create_connection exceptions don't expose passwords."""
14671469 # Clear log capture
@@ -1609,6 +1611,7 @@ class MockConflict(Exception):
16091611
16101612 self ._assert_no_secrets_in_logs ()
16111613
1614+ @patch .dict (os .environ , {'OS_CLOUD' : 'testcloud' })
16121615 def test_get_nova_connection_exception_no_secret_exposure (self ):
16131616 """Test that _get_nova_connection exceptions don't expose passwords."""
16141617 # Clear log capture
@@ -1630,6 +1633,7 @@ def test_get_nova_connection_exception_no_secret_exposure(self):
16301633
16311634 self ._assert_no_secrets_in_logs ()
16321635
1636+ @patch .dict (os .environ , {'OS_CLOUD' : 'testcloud' })
16331637 def test_establish_nova_connection_exception_no_secret_exposure (self ):
16341638 """Test that _establish_nova_connection exceptions don't expose passwords."""
16351639 # Clear log capture
@@ -2691,6 +2695,7 @@ def test_complete_evacuation_workflow(self):
26912695 server1 .name = 'test-server-1'
26922696 server1 .image = {'id' : 'image-1' }
26932697 server1 .flavor = {'id' : 'flavor-1' }
2698+ setattr (server1 , 'OS-EXT-STS:task_state' , None )
26942699 nova_state ['servers' ].append (server1 )
26952700
26962701 # Create service and config
@@ -2757,6 +2762,7 @@ def test_service_poll_cycle_integration(self):
27572762 server .name = f'test-server-{ i } '
27582763 server .image = {'id' : 'image-1' }
27592764 server .flavor = {'id' : 'flavor-1' }
2765+ setattr (server , 'OS-EXT-STS:task_state' , None )
27602766 nova_state ['servers' ].append (server )
27612767
27622768 # Create service
@@ -2841,6 +2847,7 @@ def test_multi_host_failure_scenario(self):
28412847 server .host = f'compute-{ i } .example.com'
28422848 server .status = 'ACTIVE'
28432849 server .name = f'test-server-{ i } '
2850+ setattr (server , 'OS-EXT-STS:task_state' , None )
28442851 # First 3 have evacuable tag, last 2 don't
28452852 if i < 3 :
28462853 server .image = {'id' : 'image-1' }
@@ -3204,6 +3211,7 @@ def test_smart_evacuation_with_migration_tracking(self):
32043211 """Test smart evacuation tracks migration status to completion."""
32053212 conn = Mock ()
32063213 server = Mock (id = 'server-123' , status = 'ACTIVE' , host = 'compute-01' )
3214+ setattr (server , 'OS-EXT-STS:task_state' , None )
32073215
32083216 # Mock evacuation response
32093217 response = Mock (status_code = 200 , reason = 'OK' )
@@ -3229,6 +3237,7 @@ def test_smart_evacuation_timeout_handling(self):
32293237 """Test smart evacuation handles timeout correctly."""
32303238 conn = Mock ()
32313239 server = Mock (id = 'server-456' , status = 'ACTIVE' )
3240+ setattr (server , 'OS-EXT-STS:task_state' , None )
32323241
32333242 response = Mock (status_code = 200 , reason = 'OK' )
32343243 conn .servers .evacuate .return_value = (response , {})
@@ -3249,6 +3258,7 @@ def test_smart_evacuation_retry_logic(self):
32493258 """Test smart evacuation retries on errors."""
32503259 conn = Mock ()
32513260 server = Mock (id = 'server-789' , status = 'ACTIVE' )
3261+ setattr (server , 'OS-EXT-STS:task_state' , None )
32523262
32533263 response = Mock (status_code = 200 , reason = 'OK' )
32543264 conn .servers .evacuate .return_value = (response , {})
0 commit comments