]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commitdiff
node_cleanup: Fix invocations without --owner
authorZack Cerza <zack@redhat.com>
Tue, 28 May 2024 20:40:18 +0000 (14:40 -0600)
committerZack Cerza <zack@redhat.com>
Mon, 17 Jun 2024 16:03:14 +0000 (10:03 -0600)
Signed-off-by: Zack Cerza <zack@redhat.com>
scripts/node_cleanup.py

index f1f5b0be2ce9e4aea93cdcfd84b00d43eafdcf4c..c260df8a693cf0779d6bc9fc68542d9c8c4681a5 100755 (executable)
@@ -13,13 +13,23 @@ def main():
     stale = query.find_stale_locks(args.owner)
     if not stale:
         return
+    by_owner = {}
+    for node in stale:
+        if args.owner and node['locked_by'] != args.owner:
+            log.warning(
+                f"Node {node['name']} expected to be locked by {args.owner} "
+                f"but found {node['locked_by']} instead"
+            )
+            continue
+        by_owner.setdefault(node['locked_by'], []).append(node)
     if args.dry_run:
         log.info("Would attempt to unlock:")
-        for node in stale:
-            log.info(f"{node['name']}\t{node['description']}")
+        for owner, nodes in by_owner.items():
+            for node in nodes:
+                log.info(f"{node['name']}\t{node['description']}")
     else:
-        names = [node["name"] for node in stale]
-        ops.unlock_safe(names, args.owner)
+        for owner, nodes in by_owner.items():
+            ops.unlock_safe([node["name"] for node in nodes], owner)
 
 def parse_args(argv):
     parser = argparse.ArgumentParser(