From 6698609aaa1658455995d8baabbb58c68afb52d5 Mon Sep 17 00:00:00 2001 From: Mark Gurevich Date: Wed, 21 Mar 2018 14:55:48 -0400 Subject: [PATCH 1/2] Catch BMC status error from get status request --- .../lib/python/agent/hwctl/executor/openbmc_power.py | 5 +++++ xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_power.py b/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_power.py index 807c23f16..0772afe4a 100644 --- a/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_power.py +++ b/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_power.py @@ -82,6 +82,11 @@ class OpenBMCPowerTask(ParallelNodesCommand): if bmc_state != 'Ready': bmc_state = bmc_not_ready + bmc_state_error = state.get('error') + if bmc_state_error is not None: + # BMC is not ready and we have some error as to why + self.callback.info('%s: %s (%s)' % (node, openbmc.RPOWER_STATES.get(bmc_state, bmc_state), bmc_state_error)) + return bmc_state self.callback.info('%s: %s' % (node, openbmc.RPOWER_STATES.get(bmc_state, bmc_state))) diff --git a/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py b/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py index b1654a884..73aacef58 100644 --- a/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py +++ b/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py @@ -320,6 +320,8 @@ class OpenBMCRest(object): 'Validate BMC configuration and retry the command.' self._print_error_log(e.message, cmd) raise + except SelfClientException as e: + raise SelfClientException(e.message, e.code) except ValueError: error = 'Received wrong format response: %s' % response self._print_error_log(error, cmd) @@ -410,9 +412,12 @@ class OpenBMCRest(object): def get_bmc_state(self): - state = self.request('GET', BMC_URLS['state']['path'], cmd='get_bmc_state') try: + state = self.request('GET', BMC_URLS['state']['path'], cmd='get_bmc_state') return {'bmc': state.split('.')[-1]} + except SelfClientException as e: + # Return error message received from the request + return {'bmc': "NotReady", 'error': e.message} except KeyError: error = 'Received wrong format response: %s' % state raise SelfServerException(error) From 05fcefb2435ed450bbe30359d38564944c3d3343 Mon Sep 17 00:00:00 2001 From: Mark Gurevich Date: Thu, 22 Mar 2018 10:39:17 -0400 Subject: [PATCH 2/2] Changes for review comments --- .../lib/python/agent/hwctl/executor/openbmc_power.py | 10 +++------- .../lib/python/agent/hwctl/openbmc_client.py | 5 ----- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_power.py b/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_power.py index 0772afe4a..c3524cf9a 100644 --- a/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_power.py +++ b/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_power.py @@ -82,17 +82,13 @@ class OpenBMCPowerTask(ParallelNodesCommand): if bmc_state != 'Ready': bmc_state = bmc_not_ready - bmc_state_error = state.get('error') - if bmc_state_error is not None: - # BMC is not ready and we have some error as to why - self.callback.info('%s: %s (%s)' % (node, openbmc.RPOWER_STATES.get(bmc_state, bmc_state), bmc_state_error)) - return bmc_state self.callback.info('%s: %s' % (node, openbmc.RPOWER_STATES.get(bmc_state, bmc_state))) - except SelfServerException, SelfClientException: - # There is no response when BMC is not ready + except SelfServerException as e: self.callback.error(openbmc.RPOWER_STATES[bmc_not_ready], node) + except SelfClientException as e: + self.callback.error("%s (%s)" % (openbmc.RPOWER_STATES[bmc_not_ready], e.message), node) return bmc_state diff --git a/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py b/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py index 73aacef58..2d39c8943 100644 --- a/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py +++ b/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py @@ -320,8 +320,6 @@ class OpenBMCRest(object): 'Validate BMC configuration and retry the command.' self._print_error_log(e.message, cmd) raise - except SelfClientException as e: - raise SelfClientException(e.message, e.code) except ValueError: error = 'Received wrong format response: %s' % response self._print_error_log(error, cmd) @@ -415,9 +413,6 @@ class OpenBMCRest(object): try: state = self.request('GET', BMC_URLS['state']['path'], cmd='get_bmc_state') return {'bmc': state.split('.')[-1]} - except SelfClientException as e: - # Return error message received from the request - return {'bmc': "NotReady", 'error': e.message} except KeyError: error = 'Received wrong format response: %s' % state raise SelfServerException(error)