diff options
author | George Kraft <george.kraft@calxeda.com> | 2012-09-11 09:36:57 -0500 |
---|---|---|
committer | George Kraft <george.kraft@calxeda.com> | 2012-09-11 09:36:57 -0500 |
commit | 75e4120664efa61f363771189244a742c224140b (patch) | |
tree | cb644e0a06d222598f31504f46e28710e228efa3 | |
parent | 00c18047eece40a672be73abfbf1145c85b0a961 (diff) | |
download | cxmanage-75e4120664efa61f363771189244a742c224140b.tar.gz |
Use time() instead of a counter for firmware transfer deadlines
-rw-r--r-- | cxmanage/target.py | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/cxmanage/target.py b/cxmanage/target.py index af6e031..05130e8 100644 --- a/cxmanage/target.py +++ b/cxmanage/target.py @@ -498,20 +498,22 @@ class Target: def _wait_for_transfer(self, handle): """ Wait for a firmware transfer to finish""" - counter = 0 + deadline = time.time() + 180 + + result = self.bmc.get_firmware_status(handle) + if not hasattr(result, "status"): + raise CxmanageError("Unable to retrieve transfer info") + + while result.status == "In progress": + if time.time() >= deadline: + self.bmc.cancel_firmware(handle) + raise CxmanageError("Transfer timed out after 3 minutes") - while True: time.sleep(1) + result = self.bmc.get_firmware_status(handle) if not hasattr(result, "status"): raise CxmanageError("Unable to retrieve transfer info") - if result.status != "In progress": - break - - # Time out after 3 minutes - counter += 1 - if counter >= 180: - raise CxmanageError("Transfer timed out after 3 minutes") if result.status != "Complete": raise CxmanageError("Node reported transfer failure") |