)]}'
{"tempest/lib/common/utils/linux/remote_client.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"82466aa45a571ac35ffc4664488d52b8b96bf346","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                    # re-raise the original ssh timeout exception"},{"line_number":57,"context_line":"                    six.reraise(*original_exception)"},{"line_number":58,"context_line":"                finally:"},{"line_number":59,"context_line":"                        # Delete the traceback to avoid circular references"},{"line_number":60,"context_line":"                        _, _, trace \u003d original_exception"},{"line_number":61,"context_line":"                        del trace"},{"line_number":62,"context_line":"    return wrapper"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_5835bdd9","line":61,"range":{"start_line":59,"start_character":24,"end_line":61,"end_character":33},"updated":"2017-05-29 21:16:56.000000000","message":"nit: this is indented 8 spaces","commit_id":"d2829560b5b79777216681035ecc410b8fb775ce"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"5ab7d474e88b5f1739a5f9f75aa6e518e855a0e2","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                    # re-raise the original ssh timeout exception"},{"line_number":57,"context_line":"                    six.reraise(*original_exception)"},{"line_number":58,"context_line":"                finally:"},{"line_number":59,"context_line":"                        # Delete the traceback to avoid circular references"},{"line_number":60,"context_line":"                        _, _, trace \u003d original_exception"},{"line_number":61,"context_line":"                        del trace"},{"line_number":62,"context_line":"    return wrapper"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_64d43cbe","line":61,"range":{"start_line":59,"start_character":24,"end_line":61,"end_character":33},"in_reply_to":"df140735_5835bdd9","updated":"2017-05-31 00:48:15.000000000","message":"o, thanks, done","commit_id":"d2829560b5b79777216681035ecc410b8fb775ce"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"3b9e52ca40e15c4e81e4cb69e6d2d7a3fc697e45","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                           \u0027Error: %(error)s\u0027 % {\u0027ip\u0027: self.ip_address,"},{"line_number":36,"context_line":"                                                 \u0027error\u0027: e})"},{"line_number":37,"context_line":"                message \u003d \u0027(%s) %s\u0027 % (caller, message)"},{"line_number":38,"context_line":"                LOG.exception(message)"},{"line_number":39,"context_line":"                raise"},{"line_number":40,"context_line":"            else:"},{"line_number":41,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_599eb654","line":38,"updated":"2017-05-31 10:21:32.000000000","message":"Log.error would be better here, otherwise the stacktrace will be logged twice. First time with log.exception, 2nd time because the exception is raised.","commit_id":"d5da0bfede2ab88f2fbb1e1b03bf5375f63d8733"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"380760a6d507b50231e3979830bec03f9f84b306","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":29,"context_line":"        try:"},{"line_number":30,"context_line":"            return function(self, *args, **kwargs)"},{"line_number":31,"context_line":"        except Exception as e:"},{"line_number":32,"context_line":"            caller \u003d test_utils.find_test_caller() or \"not found\""},{"line_number":33,"context_line":"            if not isinstance(e, tempest.lib.exceptions.SSHTimeout):"},{"line_number":34,"context_line":"                message \u003d (\u0027Initializing SSH connection to %(ip)s failed. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_c7bd9702","line":31,"range":{"start_line":31,"start_character":15,"end_line":31,"end_character":30},"updated":"2017-06-19 14:45:33.000000000","message":"Even if this was in the code of manager.py, I\u0027m not convinced we need to handle any exception here just to log the IP address. The exception will go up to the test and it will be logged by the test framework in the test output.","commit_id":"f52c759e5cc6da962ad63831c55dc140d05a2373"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"380760a6d507b50231e3979830bec03f9f84b306","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        except Exception as e:"},{"line_number":32,"context_line":"            caller \u003d test_utils.find_test_caller() or \"not found\""},{"line_number":33,"context_line":"            if not isinstance(e, tempest.lib.exceptions.SSHTimeout):"},{"line_number":34,"context_line":"                message \u003d (\u0027Initializing SSH connection to %(ip)s failed. \u0027"},{"line_number":35,"context_line":"                           \u0027Error: %(error)s\u0027 % {\u0027ip\u0027: self.ip_address,"},{"line_number":36,"context_line":"                                                 \u0027error\u0027: e})"},{"line_number":37,"context_line":"                message \u003d \u0027(%s) %s\u0027 % (caller, message)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_277fab66","line":34,"range":{"start_line":34,"start_character":27,"end_line":34,"end_character":75},"updated":"2017-06-19 14:45:33.000000000","message":"How do you know this is a valid description of the issue?","commit_id":"f52c759e5cc6da962ad63831c55dc140d05a2373"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"84457432d6fb84793627b11713ca7cf0007e3505","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                           \u0027Error: %(error)s\u0027 % {\u0027ip\u0027: self.ip_address,"},{"line_number":36,"context_line":"                                                 \u0027error\u0027: e})"},{"line_number":37,"context_line":"                message \u003d \u0027(%s) %s\u0027 % (caller, message)"},{"line_number":38,"context_line":"                LOG.error(message)"},{"line_number":39,"context_line":"                raise"},{"line_number":40,"context_line":"            else:"},{"line_number":41,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_0c746398","line":38,"range":{"start_line":38,"start_character":16,"end_line":38,"end_character":34},"updated":"2017-06-01 00:30:03.000000000","message":"thanks, done","commit_id":"f52c759e5cc6da962ad63831c55dc140d05a2373"}],"tempest/scenario/manager.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"380760a6d507b50231e3979830bec03f9f84b306","unresolved":false,"context_lines":[{"line_number":329,"context_line":"            username \u003d CONF.validation.image_ssh_user"},{"line_number":330,"context_line":"        # Set this with \u0027keypair\u0027 or others to log in with keypair or"},{"line_number":331,"context_line":"        # username/password."},{"line_number":332,"context_line":"        if CONF.validation.auth_method \u003d\u003d \u0027keypair\u0027:"},{"line_number":333,"context_line":"            password \u003d None"},{"line_number":334,"context_line":"            if private_key is None:"},{"line_number":335,"context_line":"                private_key \u003d self.keypair[\u0027private_key\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_6a332aac","line":332,"range":{"start_line":332,"start_character":8,"end_line":332,"end_character":52},"updated":"2017-06-19 14:45:33.000000000","message":"Once scenario tests are aligned to API tests on validation resources, get_remote_client can probably go away for good?","commit_id":"f52c759e5cc6da962ad63831c55dc140d05a2373"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"380760a6d507b50231e3979830bec03f9f84b306","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        if CONF.validation.auth_method \u003d\u003d \u0027keypair\u0027:"},{"line_number":333,"context_line":"            password \u003d None"},{"line_number":334,"context_line":"            if private_key is None:"},{"line_number":335,"context_line":"                private_key \u003d self.keypair[\u0027private_key\u0027]"},{"line_number":336,"context_line":"        else:"},{"line_number":337,"context_line":"            password \u003d CONF.validation.image_ssh_password"},{"line_number":338,"context_line":"            private_key \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_aab82210","line":335,"range":{"start_line":335,"start_character":16,"end_line":335,"end_character":57},"updated":"2017-06-19 14:45:33.000000000","message":"This bit is not nice since it relies on the test instance state instead instead of a parameter or configuration option, which makes the behaviour of the helper hard to control / understand.","commit_id":"f52c759e5cc6da962ad63831c55dc140d05a2373"}]}
