@@ -51,8 +51,15 @@ def update_resources(self):
5151 for resource in self .resources :
5252 resource .poll ()
5353 if not resource .avail and resource .state is BindingState .active :
54- self .log .info ("deactivating unavailable resource %s" , resource .display_name ) # pylint: disable=line-too-long
55- self .deactivate (resource )
54+ deactivated = self .deactivate (resource )
55+ deactivated .remove (resource )
56+ if deactivated :
57+ self .log .info ("deactivating unavailable resource %s used by %s" ,
58+ resource .display_name ,
59+ ", " .join (d .display_name for d in deactivated )
60+ )
61+ else :
62+ self .log .debug ("deactivating unavailable resource %s (unused)" , resource .display_name ) # pylint: disable=line-too-long
5663
5764 def await_resources (self , resources , timeout = None , avail = True ):
5865 """
@@ -449,6 +456,8 @@ def deactivate(self, client, name=None):
449456 Recursively deactivate the client's clients and itself.
450457
451458 This is needed to ensure that no client has an inactive supplier.
459+
460+ Returns the list of all objects that were deactivated
452461 """
453462 if isinstance (client , str ):
454463 cls = target_factory .class_from_string (client )
@@ -457,7 +466,7 @@ def deactivate(self, client, name=None):
457466 assert client is not None
458467
459468 if client .state is BindingState .bound :
460- return # nothing to do
469+ return [] # nothing to do
461470
462471 if client .state is not BindingState .active :
463472 raise BindingError (
@@ -467,12 +476,15 @@ def deactivate(self, client, name=None):
467476 # consistency check
468477 assert client in self .resources or client in self .drivers
469478
479+ deactivated = [client ]
480+
470481 for cli in client .clients :
471- self .deactivate (cli )
482+ deactivated . extend ( self .deactivate (cli ) )
472483
473484 # update state
474485 client .on_deactivate ()
475486 client .state = BindingState .bound
487+ return deactivated
476488
477489 def deactivate_all_drivers (self ):
478490 """Deactivates all drivers in reversed order they were activated"""
0 commit comments