Skip to content

Commit fa2cf71

Browse files
authored
Merge pull request #811 from JoshuaWatt/quieten-resource-lost
target: Quieten message when resource is unavailable
2 parents cc8401c + dcbb1fa commit fa2cf71

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

labgrid/target.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)