def _run_eos_cmds(self, commands, commands_to_log=None): """Execute/sends a CAPI (Command API) command to EOS. In this method, list of commands is appended with prefix and postfix commands - to make is understandble by EOS. :param commands : List of command to be executed on EOS. :param commands_to_log : This should be set to the command that is logged. If it is None, then the commands param is logged. """ log_cmd = commands if commands_to_log: log_cmd = commands_to_log LOG.info(_('Executing command on Arista EOS: %s'), log_cmd) try: # this returns array of return values for every command in # full_command list ret = self._server.runCmds(version=1, cmds=commands) except Exception as error: host = cfg.CONF.ml2_arista.eapi_host msg = (_('Error %(err)s while trying to execute ' 'commands %(cmd)s on EOS %(host)s') % { 'err': error, 'cmd': commands_to_log, 'host': host }) LOG.exception(msg) raise arista_exc.AristaRpcError(msg=msg) return ret
def _run_eos_cmds(self, commands, commands_to_log=None): """Execute/sends a CAPI (Command API) command to EOS. In this method, list of commands is appended with prefix and postfix commands - to make is understandble by EOS. :param commands : List of command to be executed on EOS. :param commands_to_log : This should be set to the command that is logged. If it is None, then the commands param is logged. """ log_cmds = commands if commands_to_log: log_cmds = commands_to_log LOG.info(_('Executing command on Arista EOS: %s'), log_cmds) try: # this returns array of return values for every command in # full_command list ret = self._server.runCmds(version=1, cmds=commands) except Exception as error: host = cfg.CONF.ml2_arista.eapi_host error_msg_str = unicode(error) if commands_to_log: # The command might contain sensitive information. If the # command to log is different from the actual command, use # that in the error message. for cmd, log_cmd in itertools.izip(commands, log_cmds): error_msg_str = error_msg_str.replace(cmd, log_cmd) msg = (_('Error %(err)s while trying to execute ' 'commands %(cmd)s on EOS %(host)s') % { 'err': error_msg_str, 'cmd': commands_to_log, 'host': host }) # Logging exception here can reveal passwords as the exception # contains the CLI command which contains the credentials. LOG.error(msg) raise arista_exc.AristaRpcError(msg=msg) return ret