diff --git a/xCAT-openbmc-py/lib/python/agent/common/exceptions.py b/xCAT-openbmc-py/lib/python/agent/common/exceptions.py index 6f5dad33c..88e80e59a 100644 --- a/xCAT-openbmc-py/lib/python/agent/common/exceptions.py +++ b/xCAT-openbmc-py/lib/python/agent/common/exceptions.py @@ -1,9 +1,8 @@ #!/usr/bin/env python class SelfServerException(Exception) : - def __init__(self, message, code=0, detail_msg= "", host_and_port="") : + def __init__(self, message, detail_msg= "", host_and_port="") : super(Exception, self).__init__(message) - self.code = code self.host_and_port = host_and_port self.detail_msg = detail_msg diff --git a/xCAT-openbmc-py/lib/python/agent/common/rest.py b/xCAT-openbmc-py/lib/python/agent/common/rest.py index bc52f325b..88c836998 100644 --- a/xCAT-openbmc-py/lib/python/agent/common/rest.py +++ b/xCAT-openbmc-py/lib/python/agent/common/rest.py @@ -46,16 +46,16 @@ class RestSession(object): causing_error = "timeout" host_and_port = self.extract_server_and_port(e.message[0], "STRING") - message = 'Error: Failed to connect to server.' + message = 'Failed to connect to server.' # message = '\n\n--> {0} \n\n'.format(e.message[0]) - raise xcat_exception.SelfServerException(message, "500", '({0})'.format(causing_error), host_and_port) + raise xcat_exception.SelfServerException(message, '({0})'.format(causing_error), host_and_port) except requests.exceptions.Timeout as e: causing_error = "timeout" host_and_port = self.extract_server_and_port(e.message[0], "STRING") - message = 'Error: Timeout to connect to server' - raise xcat_exception.SelfServerException(message, "500", '({0})'.format(causing_error), host_and_port) + message = 'Timeout to connect to server' + raise xcat_exception.SelfServerException(message, '({0})'.format(causing_error), host_and_port) if not self.cookies: self.cookies = requests.utils.dict_from_cookiejar(self.session.cookies) 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 4bab39788..567d6b825 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 @@ -73,6 +73,13 @@ class OpenBMCPowerTask(ParallelNodesCommand): bmc_not_ready = bmc_state = 'NotReady' try: obmc.login() + except SelfServerException as e: + # Special exception handling for login failure + login_message = "Login to BMC failed: Can't connect to {0} {1}.".format(e.host_and_port, e.detail_msg) + self.callback.error(login_message, node) + return bmc_state + + try: state = obmc.get_bmc_state() bmc_state = state.get('bmc') @@ -83,8 +90,7 @@ class OpenBMCPowerTask(ParallelNodesCommand): except SelfServerException, SelfClientException: # There is no response when BMC is not ready - # Do not print bmc_state, instead, error messages from login failure will be displayed - return bmc_state + result = '%s: %s' % (node, openbmc.RPOWER_STATES[bmc_not_ready]) self.callback.info(result) 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 d73e17b05..29169ff8a 100644 --- a/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py +++ b/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py @@ -249,15 +249,6 @@ class OpenBMCRest(object): self.messager.info(localtime + ' ' + log) logger.debug(log) - def _print_record (self, msg, cmd, type="I"): - - log = self.name + ': ' + msg - logger.debug(log) - if type == "E": - self.messager.error(log) - else: - self.messager.info(log) - def _log_request (self, method, url, headers, data=None, files=None, file_path=None, cmd=''): header_str = ' '.join([ "%s: %s" % (k, v) for k,v in headers.items() ]) @@ -285,7 +276,7 @@ class OpenBMCRest(object): if code != requests.codes.ok: description = ''.join(data['data']['description']) error = 'Error: [%d] %s' % (code, description) - self._print_record(error, cmd, "E") + self._print_record_log(error, cmd) raise SelfClientException(error, code) self._print_record_log(data['message'], cmd) @@ -307,13 +298,9 @@ class OpenBMCRest(object): response = self.session.request(method, url, httpheaders, data=data) return self.handle_response(response, cmd=cmd) except SelfServerException as e: - message = 'Error: BMC did not respond. ' \ - 'Validate BMC configuration and retry the command.' - if cmd == 'login': - login_message = "Error: [{0}] Login to BMC failed: {1} Can't connect to {2} {3}.".format(e.code, e.code, e.host_and_port, e.detail_msg) - self._print_record(login_message, cmd, "I") - - self._print_record(message, cmd, "E") + e.message = 'Error: BMC did not respond. ' \ + 'Validate BMC configuration and retry the command.' + self._print_record_log(e.message, cmd) raise except ValueError: error = 'Error: Received wrong format response: %s' % response