)]}'
{"tempest/common/utils/linux/remote_client.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b556ed39f3fec3aa7ef8d9182d1361314c3b908e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            original_exception \u003d sys.exc_info()"},{"line_number":61,"context_line":"            caller \u003d misc_utils.find_test_caller() or \"not found\""},{"line_number":62,"context_line":"            if self.server and self.severs_client:"},{"line_number":63,"context_line":"                msg \u003d \u0027Caller: %s. Timeout trying to ssh to sever %s\u0027"},{"line_number":64,"context_line":"                LOG.debug(msg % (caller, self.server))"},{"line_number":65,"context_line":"                try:"},{"line_number":66,"context_line":"                    msg \u003d \u0027Console log for server %s: %s\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_713fc187","line":63,"updated":"2016-05-02 10:08:09.000000000","message":"server","commit_id":"bb6a479dc339e1eb8cfd29f0066b8b6f2747b20d"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"02dd16c47498122ea27f3707c59462c4bde7b9dd","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            original_exception \u003d sys.exc_info()"},{"line_number":61,"context_line":"            caller \u003d misc_utils.find_test_caller() or \"not found\""},{"line_number":62,"context_line":"            if self.server and self.severs_client:"},{"line_number":63,"context_line":"                msg \u003d \u0027Caller: %s. Timeout trying to ssh to sever %s\u0027"},{"line_number":64,"context_line":"                LOG.debug(msg % (caller, self.server))"},{"line_number":65,"context_line":"                try:"},{"line_number":66,"context_line":"                    msg \u003d \u0027Console log for server %s: %s\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_f6fa9542","line":63,"in_reply_to":"1a122d0e_713fc187","updated":"2016-05-02 22:50:27.000000000","message":"Done","commit_id":"bb6a479dc339e1eb8cfd29f0066b8b6f2747b20d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b556ed39f3fec3aa7ef8d9182d1361314c3b908e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            caller \u003d misc_utils.find_test_caller() or \"not found\""},{"line_number":62,"context_line":"            if self.server and self.severs_client:"},{"line_number":63,"context_line":"                msg \u003d \u0027Caller: %s. Timeout trying to ssh to sever %s\u0027"},{"line_number":64,"context_line":"                LOG.debug(msg % (caller, self.server))"},{"line_number":65,"context_line":"                try:"},{"line_number":66,"context_line":"                    msg \u003d \u0027Console log for server %s: %s\u0027"},{"line_number":67,"context_line":"                    console_log \u003d self.severs_client.get_console_output("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_5144451a","line":64,"updated":"2016-05-02 10:08:09.000000000","message":"LOG.debug(msg, caller, self.server)","commit_id":"bb6a479dc339e1eb8cfd29f0066b8b6f2747b20d"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"02dd16c47498122ea27f3707c59462c4bde7b9dd","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            caller \u003d misc_utils.find_test_caller() or \"not found\""},{"line_number":62,"context_line":"            if self.server and self.severs_client:"},{"line_number":63,"context_line":"                msg \u003d \u0027Caller: %s. Timeout trying to ssh to sever %s\u0027"},{"line_number":64,"context_line":"                LOG.debug(msg % (caller, self.server))"},{"line_number":65,"context_line":"                try:"},{"line_number":66,"context_line":"                    msg \u003d \u0027Console log for server %s: %s\u0027"},{"line_number":67,"context_line":"                    console_log \u003d self.severs_client.get_console_output("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_d6a5d947","line":64,"in_reply_to":"1a122d0e_5144451a","updated":"2016-05-02 22:50:27.000000000","message":"This is for i18n?","commit_id":"bb6a479dc339e1eb8cfd29f0066b8b6f2747b20d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d807ffd648dcc96bf14bdf3c11ecad971c1d687c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            caller \u003d misc_utils.find_test_caller() or \"not found\""},{"line_number":62,"context_line":"            if self.server and self.severs_client:"},{"line_number":63,"context_line":"                msg \u003d \u0027Caller: %s. Timeout trying to ssh to sever %s\u0027"},{"line_number":64,"context_line":"                LOG.debug(msg % (caller, self.server))"},{"line_number":65,"context_line":"                try:"},{"line_number":66,"context_line":"                    msg \u003d \u0027Console log for server %s: %s\u0027"},{"line_number":67,"context_line":"                    console_log \u003d self.severs_client.get_console_output("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_58da8b18","line":64,"in_reply_to":"1a122d0e_d6a5d947","updated":"2016-05-03 09:05:12.000000000","message":"Nope. If you use % then python will do string interpolation (which has a cost, although tiny/minor) whatever the log level that you have configured. If you use \",\" then the logging module will check whether DEBUG message should be rendered and if not, will not bother with the string at all.\n\nSee: http://docs.openstack.org/developer/oslo.i18n/guidelines.html#adding-variables-to-log-messages\n\n(this apply to general python, not only in the context of oslo).","commit_id":"bb6a479dc339e1eb8cfd29f0066b8b6f2747b20d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b556ed39f3fec3aa7ef8d9182d1361314c3b908e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                LOG.debug(msg % (caller, self.server))"},{"line_number":65,"context_line":"                try:"},{"line_number":66,"context_line":"                    msg \u003d \u0027Console log for server %s: %s\u0027"},{"line_number":67,"context_line":"                    console_log \u003d self.severs_client.get_console_output("},{"line_number":68,"context_line":"                        self.server[\u0027id\u0027])"},{"line_number":69,"context_line":"                    LOG.debug(msg % (self.server[\u0027id\u0027], console_log))"},{"line_number":70,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_b1703975","line":67,"updated":"2016-05-02 10:08:09.000000000","message":"typo: self.servers_client","commit_id":"bb6a479dc339e1eb8cfd29f0066b8b6f2747b20d"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"02dd16c47498122ea27f3707c59462c4bde7b9dd","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                LOG.debug(msg % (caller, self.server))"},{"line_number":65,"context_line":"                try:"},{"line_number":66,"context_line":"                    msg \u003d \u0027Console log for server %s: %s\u0027"},{"line_number":67,"context_line":"                    console_log \u003d self.severs_client.get_console_output("},{"line_number":68,"context_line":"                        self.server[\u0027id\u0027])"},{"line_number":69,"context_line":"                    LOG.debug(msg % (self.server[\u0027id\u0027], console_log))"},{"line_number":70,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_f6561529","line":67,"in_reply_to":"1a122d0e_b1703975","updated":"2016-05-02 22:50:27.000000000","message":"Done","commit_id":"bb6a479dc339e1eb8cfd29f0066b8b6f2747b20d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b556ed39f3fec3aa7ef8d9182d1361314c3b908e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                    msg \u003d \u0027Console log for server %s: %s\u0027"},{"line_number":67,"context_line":"                    console_log \u003d self.severs_client.get_console_output("},{"line_number":68,"context_line":"                        self.server[\u0027id\u0027])"},{"line_number":69,"context_line":"                    LOG.debug(msg % (self.server[\u0027id\u0027], console_log))"},{"line_number":70,"context_line":"                except Exception:"},{"line_number":71,"context_line":"                    msg \u003d \u0027Could not get console_log for server %s\u0027"},{"line_number":72,"context_line":"                    LOG.debug(msg % self.server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_b1495935","line":69,"updated":"2016-05-02 10:08:09.000000000","message":"same","commit_id":"bb6a479dc339e1eb8cfd29f0066b8b6f2747b20d"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"02dd16c47498122ea27f3707c59462c4bde7b9dd","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                    msg \u003d \u0027Console log for server %s: %s\u0027"},{"line_number":67,"context_line":"                    console_log \u003d self.severs_client.get_console_output("},{"line_number":68,"context_line":"                        self.server[\u0027id\u0027])"},{"line_number":69,"context_line":"                    LOG.debug(msg % (self.server[\u0027id\u0027], console_log))"},{"line_number":70,"context_line":"                except Exception:"},{"line_number":71,"context_line":"                    msg \u003d \u0027Could not get console_log for server %s\u0027"},{"line_number":72,"context_line":"                    LOG.debug(msg % self.server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_362feda8","line":69,"in_reply_to":"1a122d0e_b1495935","updated":"2016-05-02 22:50:27.000000000","message":"Done","commit_id":"bb6a479dc339e1eb8cfd29f0066b8b6f2747b20d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"54b2dcd9518f2e7b06190bc45b547d852b647b42","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \"\"\""},{"line_number":44,"context_line":"        ssh_timeout \u003d CONF.validation.ssh_timeout"},{"line_number":45,"context_line":"        connect_timeout \u003d CONF.validation.connect_timeout"},{"line_number":46,"context_line":"        self.log_console \u003d CONF.compute_feature_enabled.console_output"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.ssh_client \u003d ssh.Client(ip_address, username, password,"},{"line_number":49,"context_line":"                                     ssh_timeout, pkey\u003dpkey,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_98770308","line":46,"updated":"2016-05-03 09:07:56.000000000","message":"Don\u0027t you want to use that variable around L67 ?","commit_id":"4218a0141174702ca8d4ec014fa1d6af9577224f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"54b2dcd9518f2e7b06190bc45b547d852b647b42","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        except tempest.lib.exceptions.SSHTimeout:"},{"line_number":60,"context_line":"            original_exception \u003d sys.exc_info()"},{"line_number":61,"context_line":"            caller \u003d misc_utils.find_test_caller() or \"not found\""},{"line_number":62,"context_line":"            if self.server and self.severs_client:"},{"line_number":63,"context_line":"                msg \u003d \u0027Caller: %s. Timeout trying to ssh to server %s\u0027"},{"line_number":64,"context_line":"                LOG.debug(msg, caller, self.server)"},{"line_number":65,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_d80a1b79","line":62,"updated":"2016-05-03 09:07:56.000000000","message":"I am too lazy too track whether this a typo that you introduced or a typo that you repeated (in that case it\u0027s not a typo, just a misnamed variable from the beginning).","commit_id":"4218a0141174702ca8d4ec014fa1d6af9577224f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"59a8462cb3efbfe99839659a2d4e3a40810890a0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        except tempest.lib.exceptions.SSHTimeout:"},{"line_number":37,"context_line":"            original_exception \u003d sys.exc_info()"},{"line_number":38,"context_line":"            caller \u003d misc_utils.find_test_caller() or \"not found\""},{"line_number":39,"context_line":"            if self.server and self.servers_client:"},{"line_number":40,"context_line":"                msg \u003d \u0027Caller: %s. Timeout trying to ssh to server %s\u0027"},{"line_number":41,"context_line":"                LOG.debug(msg, caller, self.server)"},{"line_number":42,"context_line":"                if self.log_console:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_13d0dac8","line":39,"range":{"start_line":39,"start_character":26,"end_line":39,"end_character":50},"updated":"2016-05-03 22:56:45.000000000","message":"Even if not passing servers_client, the above debugging msg(line40-41) can be output.\nSo how about moving this servers_client condition into line 42 condition?","commit_id":"5930d06a5304d406da850614c717ec892ae5155e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"59a8462cb3efbfe99839659a2d4e3a40810890a0","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        except tempest.lib.exceptions.SSHTimeout:"},{"line_number":88,"context_line":"            original_exception \u003d sys.exc_info()"},{"line_number":89,"context_line":"            caller \u003d misc_utils.find_test_caller() or \"not found\""},{"line_number":90,"context_line":"            if self.server and self.servers_client:"},{"line_number":91,"context_line":"                msg \u003d \u0027Caller: %s. Timeout trying to ssh to server %s\u0027"},{"line_number":92,"context_line":"                LOG.debug(msg, caller, self.server)"},{"line_number":93,"context_line":"                if self.log_console:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_33d516b7","line":90,"range":{"start_line":90,"start_character":27,"end_line":90,"end_character":51},"updated":"2016-05-03 22:56:45.000000000","message":"ditto","commit_id":"5930d06a5304d406da850614c717ec892ae5155e"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"016b6a47112d196e5db09f2724739629f4424c05","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                            LOG.debug(msg, self.server[\u0027id\u0027], console_log)"},{"line_number":51,"context_line":"                        except Exception:"},{"line_number":52,"context_line":"                            msg \u003d \u0027Could not get console_log for server %s\u0027"},{"line_number":53,"context_line":"                            LOG.debug(msg % self.server[\u0027id\u0027])"},{"line_number":54,"context_line":"                # re-raise the original ssh timeout exception"},{"line_number":55,"context_line":"                six.reraise(*original_exception)"},{"line_number":56,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_201aba17","line":53,"range":{"start_line":53,"start_character":38,"end_line":53,"end_character":61},"updated":"2016-05-04 16:23:04.000000000","message":"same case for variables and log messages","commit_id":"b57c94ce4a4ba9b16ec7e43eb6d0787402e2e631"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"c126ead40a44e64c87222219e9be036fab310115","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                            LOG.debug(msg, self.server[\u0027id\u0027], console_log)"},{"line_number":51,"context_line":"                        except Exception:"},{"line_number":52,"context_line":"                            msg \u003d \u0027Could not get console_log for server %s\u0027"},{"line_number":53,"context_line":"                            LOG.debug(msg % self.server[\u0027id\u0027])"},{"line_number":54,"context_line":"                # re-raise the original ssh timeout exception"},{"line_number":55,"context_line":"                six.reraise(*original_exception)"},{"line_number":56,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_fd4344ad","line":53,"range":{"start_line":53,"start_character":38,"end_line":53,"end_character":61},"in_reply_to":"1a122d0e_201aba17","updated":"2016-05-04 16:59:58.000000000","message":"Comment is to use \",\" instead of \"%\" so line 53 would looks like: LOG.debug(msg, self.server[\u0027id\u0027])","commit_id":"b57c94ce4a4ba9b16ec7e43eb6d0787402e2e631"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"82e738a1fcec93d2e271e286938a429d86bf647b","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def debug_ssh(function):"},{"line_number":33,"context_line":"    \"\"\"Decorator to generate extra debug info in case off SSH failure\"\"\""},{"line_number":34,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":35,"context_line":"        try:"},{"line_number":36,"context_line":"            return function(self, *args, **kwargs)"},{"line_number":37,"context_line":"        except tempest.lib.exceptions.SSHTimeout:"}],"source_content_type":"text/x-python","patch_set":10,"id":"dab17558_93552e1f","line":34,"updated":"2016-05-06 09:46:02.000000000","message":"It\u0027s really better to use @functools.wraps when you write decorator.","commit_id":"5f5e4fcce1487a484374258cf46732cd22623b2a"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"82e738a1fcec93d2e271e286938a429d86bf647b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                            msg \u003d \u0027Could not get console_log for server %s\u0027"},{"line_number":53,"context_line":"                            LOG.debug(msg, self.server[\u0027id\u0027])"},{"line_number":54,"context_line":"                # re-raise the original ssh timeout exception"},{"line_number":55,"context_line":"                six.reraise(*original_exception)"},{"line_number":56,"context_line":"            finally:"},{"line_number":57,"context_line":"                # Delete the traceback to avoid circular references"},{"line_number":58,"context_line":"                _, _, trace \u003d original_exception"}],"source_content_type":"text/x-python","patch_set":10,"id":"dab17558_eeb92dee","line":55,"updated":"2016-05-06 09:46:02.000000000","message":"I don\"t really understand why you don\"t use a plain \"raise\" statement here ? And if there\u0027s good reason there should be a code comment.","commit_id":"5f5e4fcce1487a484374258cf46732cd22623b2a"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"82e738a1fcec93d2e271e286938a429d86bf647b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                six.reraise(*original_exception)"},{"line_number":56,"context_line":"            finally:"},{"line_number":57,"context_line":"                # Delete the traceback to avoid circular references"},{"line_number":58,"context_line":"                _, _, trace \u003d original_exception"},{"line_number":59,"context_line":"                del trace"},{"line_number":60,"context_line":"    return wrapper"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"dab17558_6ea37d9f","line":58,"updated":"2016-05-06 09:46:02.000000000","message":"This looks right according to some stackoverflow\u0027s answer. But the Python doc has a warning about calling sys.exc_info(), maybe we shouldn\u0027t call sys.exc_info() at all ?\n\nYou seem not to do a lot with that original_exception, apart from reraising it, which you can do without calling sys.exc_info().","commit_id":"5f5e4fcce1487a484374258cf46732cd22623b2a"}]}
