File tree Expand file tree Collapse file tree 2 files changed +20
-0
lines changed Expand file tree Collapse file tree 2 files changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -1089,6 +1089,11 @@ def clear_numa_topology(self):
1089
1089
def obj_load_attr (self , attrname ):
1090
1090
# NOTE(danms): We can't lazy-load anything without a context and a uuid
1091
1091
if not self ._context :
1092
+ if 'uuid' in self :
1093
+ LOG .debug (
1094
+ "Lazy-load of '%s' attempted by orphaned instance" ,
1095
+ attrname , instance = self
1096
+ )
1092
1097
raise exception .OrphanedObjectError (method = 'obj_load_attr' ,
1093
1098
objtype = self .obj_name ())
1094
1099
if 'uuid' not in self :
Original file line number Diff line number Diff line change @@ -1632,6 +1632,21 @@ def test_save_objectfield_reraises_if_not_instance_related(self):
1632
1632
self ._test_save_objectfield_fk_constraint_fails (
1633
1633
'other_foreign_key' , db_exc .DBReferenceError )
1634
1634
1635
+ @mock .patch ('nova.objects.instance.LOG.debug' )
1636
+ def test_obj_load_attr_log (self , mock_log_debug ):
1637
+ # Instance with no UUID should not log.
1638
+ instance = objects .Instance ()
1639
+ self .assertRaises (
1640
+ exception .OrphanedObjectError , instance .obj_load_attr , 'foo' )
1641
+ mock_log_debug .assert_not_called ()
1642
+ # Instance with UUID should log.
1643
+ instance = objects .Instance (
1644
+ uuid = '127a0d59-b88c-422b-b9a1-2dc7cc51fb9a' )
1645
+ self .assertRaises (
1646
+ exception .OrphanedObjectError , instance .obj_load_attr , 'foo' )
1647
+ msg = "Lazy-load of '%s' attempted by orphaned instance"
1648
+ mock_log_debug .assert_called_once_with (msg , 'foo' , instance = instance )
1649
+
1635
1650
1636
1651
class TestRemoteInstanceObject (test_objects ._RemoteTest ,
1637
1652
_TestInstanceObject ):
You can’t perform that action at this time.
0 commit comments