diff --git a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py index 1c1e8670..1b24f676 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py @@ -405,21 +405,23 @@ async def perform_requests(operator, nodes, element, cfg, inputdata, realop): bundle = [] datum = await asyncio.wait_for(resultdata.get(), timeout=10.0) while datum: - if datum != 'Done': - if isinstance(datum, Exception): - raise datum - if (hasattr(datum, 'kvpairs') and datum.kvpairs and - len(datum.kvpairs) == 1): - bundle.append((list(datum.kvpairs)[0], datum)) - numnodes -= 1 - else: - yield datum - timeout = 0.1 if numnodes else 0.001 - datum = await asyncio.wait_for(resultdata.get(), timeout=timeout) + if datum == 'Done': + datum = None + break + if isinstance(datum, Exception): + raise datum + if (hasattr(datum, 'kvpairs') and datum.kvpairs and + len(datum.kvpairs) == 1): + bundle.append((list(datum.kvpairs)[0], datum)) + numnodes -= 1 + else: + yield datum + timeout = 0.1 if numnodes else 0.001 + datum = await asyncio.wait_for(resultdata.get(), timeout=timeout) except asyncio.QueueEmpty: pass except asyncio.TimeoutError: - print("odd timeout?" + repr(element) + repr(nodes)) + # the timeout is just a sign to push out pending bundled stuff pass finally: for datum in sorted( diff --git a/confluent_server/confluent/plugins/hardwaremanagement/redfish.py b/confluent_server/confluent/plugins/hardwaremanagement/redfish.py index eb599d3a..179fcb86 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/redfish.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/redfish.py @@ -266,21 +266,24 @@ async def perform_requests(operator, nodes, element, cfg, inputdata, realop): bundle = [] datum = await asyncio.wait_for(resultdata.get(), timeout=10.0) while datum: - if datum != 'Done': - if isinstance(datum, Exception): - raise datum - if (hasattr(datum, 'kvpairs') and datum.kvpairs and - len(datum.kvpairs) == 1): - bundle.append((list(datum.kvpairs)[0], datum)) - numnodes -= 1 - else: - yield datum + if datum == 'Done': + datum = None + break + if isinstance(datum, Exception): + raise datum + if (hasattr(datum, 'kvpairs') and datum.kvpairs and + len(datum.kvpairs) == 1): + bundle.append((list(datum.kvpairs)[0], datum)) + numnodes -= 1 + else: + yield datum timeout = 0.1 if numnodes else 0.001 datum = await asyncio.wait_for(resultdata.get(), timeout=timeout) except asyncio.QueueEmpty: pass except asyncio.TimeoutError: - print("odd timeout?" + repr(element) + repr(nodes)) + # the timeout is just a sign to push out pending bundled stuff + pass finally: for datum in sorted( bundle, key=lambda x: util.naturalize_string(x[0])):