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