From e9649dcb0af320da12452b41d69cf109dd0df3f9 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Fri, 28 Aug 2026 15:49:51 -0400 Subject: [PATCH] Normalize async def scan, also break up pending_nodes by yielding --- confluent_server/confluent/discovery/core.py | 1 + confluent_server/confluent/discovery/handlers/generic.py | 2 +- confluent_server/confluent/discovery/handlers/imm.py | 4 ++-- confluent_server/confluent/discovery/handlers/smm.py | 2 +- confluent_server/confluent/discovery/handlers/smm3.py | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/confluent_server/confluent/discovery/core.py b/confluent_server/confluent/discovery/core.py index e3a3e1f1..643ae35a 100644 --- a/confluent_server/confluent/discovery/core.py +++ b/confluent_server/confluent/discovery/core.py @@ -716,6 +716,7 @@ async def _recheck_nodes_backend(nodeattribs, configmanager): # now we go through ones that were identified, but could not pass # policy or hadn't been able to verify key for nodename in pending_nodes: + await asyncio.sleep(0) info = pending_nodes[nodename] try: if info['handler'] is None: diff --git a/confluent_server/confluent/discovery/handlers/generic.py b/confluent_server/confluent/discovery/handlers/generic.py index 522e4cc9..a00eae4b 100644 --- a/confluent_server/confluent/discovery/handlers/generic.py +++ b/confluent_server/confluent/discovery/handlers/generic.py @@ -96,7 +96,7 @@ class NodeHandler(object): # A no-op by default return - def scan(self): + async def scan(self): # Do completely passive things to enhance data. # Probe is permitted to for example attempt a login # scan *only* does what it can without a login attempt diff --git a/confluent_server/confluent/discovery/handlers/imm.py b/confluent_server/confluent/discovery/handlers/imm.py index a6946e81..a346dbb1 100644 --- a/confluent_server/confluent/discovery/handlers/imm.py +++ b/confluent_server/confluent/discovery/handlers/imm.py @@ -28,7 +28,7 @@ class NodeHandler(bmchandler.NodeHandler): # This is not adequate for being satisfied return bool(info.get('attributes', {})) - def scan(self): + async def scan(self): slpattrs = self.info.get('attributes', {}) self.isdense = False try: @@ -75,7 +75,7 @@ class NodeHandler(bmchandler.NodeHandler): async def probe(self): if self.info.get('enclosure.bay', 0) == 0: - self.scan() + await self.scan() if self.info.get('enclosure.bay', 0) != 0: # scan has already populated info return diff --git a/confluent_server/confluent/discovery/handlers/smm.py b/confluent_server/confluent/discovery/handlers/smm.py index 8ea7a38e..0cbfdba2 100644 --- a/confluent_server/confluent/discovery/handlers/smm.py +++ b/confluent_server/confluent/discovery/handlers/smm.py @@ -72,7 +72,7 @@ class NodeHandler(bmchandler.NodeHandler): devname = 'SMM' maxmacs = 14 # support an enclosure, but try to avoid catching daisy chain - def scan(self): + async def scan(self): # the UUID is in a weird order, fix it up to match # ipmi return and property value uuid = self.info.get('attributes', {}).get('uuid', None) diff --git a/confluent_server/confluent/discovery/handlers/smm3.py b/confluent_server/confluent/discovery/handlers/smm3.py index df0cf725..970b7442 100644 --- a/confluent_server/confluent/discovery/handlers/smm3.py +++ b/confluent_server/confluent/discovery/handlers/smm3.py @@ -22,7 +22,7 @@ class NodeHandler(redfishbmc.NodeHandler): maxmacs = 18 # support an enclosure, but try to avoid catching daisy chain is_enclosure = True - def scan(self): + async def scan(self): attrs = self.info.get('attributes', {}) mtm = attrs.get('enclosure-machinetype-model', None) if mtm: