)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"67a3a9167c1f8f9c38b6cafe98f2d4d0e4f5acce","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-06-08 15:57:46 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add function to execute command on remote server"},{"line_number":8,"context_line":"via ssh"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"For example:"},{"line_number":11,"context_line":"You have two networks and two servers:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba3cc151_199eca07","line":8,"updated":"2015-07-06 06:10:49.000000000","message":"nit, Could you make these lines into single line?\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"a496559372e2a423053c5c0b98955ef667cfcba7"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"67a3a9167c1f8f9c38b6cafe98f2d4d0e4f5acce","unresolved":false,"context_lines":[{"line_number":10,"context_line":"For example:"},{"line_number":11,"context_line":"You have two networks and two servers:"},{"line_number":12,"context_line":"First server is connected to both networks and can"},{"line_number":13,"context_line":"be reached from world by floating ip"},{"line_number":14,"context_line":"Second server and network can be reached only from"},{"line_number":15,"context_line":"first server."},{"line_number":16,"context_line":"In case you need to run command on second"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba3cc151_794ef697","line":13,"updated":"2015-07-06 06:10:49.000000000","message":"very nit, I think it\u0027s good to add trailing \".\" here.","commit_id":"a496559372e2a423053c5c0b98955ef667cfcba7"}],"tempest_lib/common/ssh.py":[{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"9c92dc934897820fa20d9e265e02fdd3e22b05ca","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def _is_timed_out(self, start_time):"},{"line_number":96,"context_line":"        return (time.time() - self.timeout) \u003e start_time"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def exec_command(self, cmd, transport\u003dNone):"},{"line_number":99,"context_line":"        \"\"\"Execute the specified command on the server"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        Note that this method is reading whole command outputs to memory, thus"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_b26219d7","line":98,"updated":"2015-06-05 17:18:02.000000000","message":"this parameter is not documented","commit_id":"509e60dd071a5093f2a263da311065e7edc76a7a"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"9c92dc934897820fa20d9e265e02fdd3e22b05ca","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        remote_username \u003d remote_username or self.username"},{"line_number":182,"context_line":"        # this sleep is to avoid"},{"line_number":183,"context_line":"        # paramiko.ssh_exception.ChannelException: (2, \u0027Connect failed\u0027)"},{"line_number":184,"context_line":"        time.sleep(2)"},{"line_number":185,"context_line":"        proxy_connection \u003d paramiko.Transport((self.host, 22))"},{"line_number":186,"context_line":"        proxy_connection.start_client()"},{"line_number":187,"context_line":"        command_result \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_52a085f4","line":184,"updated":"2015-06-05 17:18:02.000000000","message":"why?","commit_id":"509e60dd071a5093f2a263da311065e7edc76a7a"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"9c92dc934897820fa20d9e265e02fdd3e22b05ca","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            command_result \u003d self.exec_command(cmd, transport)"},{"line_number":208,"context_line":"        except (exceptions.SSHExecCommandFailed,"},{"line_number":209,"context_line":"                exceptions.TimeoutException) as e:"},{"line_number":210,"context_line":"            transport.close()"},{"line_number":211,"context_line":"            proxy_connection.close()"},{"line_number":212,"context_line":"            raise e"},{"line_number":213,"context_line":"        return command_result"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_52876561","line":210,"updated":"2015-06-05 17:18:02.000000000","message":"is it better to have them in finally block?","commit_id":"509e60dd071a5093f2a263da311065e7edc76a7a"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"67a3a9167c1f8f9c38b6cafe98f2d4d0e4f5acce","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        :param str remote_username: Username to connect to proxy host."},{"line_number":173,"context_line":"            if not provided - self.username will be used"},{"line_number":174,"context_line":"        :param str proxy_key: String with private key to connect to"},{"line_number":175,"context_line":"            proxy host. If not provided self.key_filename will be used"},{"line_number":176,"context_line":"        :param str remote_username: Remote host user, if not provided"},{"line_number":177,"context_line":"            self.username will be used"},{"line_number":178,"context_line":"        :param str remote_key: String with private key to connect to"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_3c5b7c30","line":175,"updated":"2015-07-06 06:10:49.000000000","message":"In this method, it seems that \"self.pkey\" will be used when proxy_key will not be provided.","commit_id":"a496559372e2a423053c5c0b98955ef667cfcba7"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"67a3a9167c1f8f9c38b6cafe98f2d4d0e4f5acce","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        :param str remote_username: Remote host user, if not provided"},{"line_number":177,"context_line":"            self.username will be used"},{"line_number":178,"context_line":"        :param str remote_key: String with private key to connect to"},{"line_number":179,"context_line":"            remote server. If not provided self.key_filename will be used."},{"line_number":180,"context_line":"        :returns: data read from standard output of the command."},{"line_number":181,"context_line":"        \"\"\""},{"line_number":182,"context_line":"        proxy_username \u003d proxy_username or self.username"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_dc405038","line":179,"updated":"2015-07-06 06:10:49.000000000","message":"ditto here","commit_id":"a496559372e2a423053c5c0b98955ef667cfcba7"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"5693cb3c81b1f6d12fe94339c4017639dcc115d1","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        proxy_connection.auth_publickey(proxy_username, private_key)"},{"line_number":215,"context_line":"        channel \u003d proxy_connection.open_channel(\u0027direct-tcpip\u0027,"},{"line_number":216,"context_line":"                                                (remote_server_ip, 22),"},{"line_number":217,"context_line":"                                                (\u0027127.0.0.1\u0027, 0))"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        transport \u003d paramiko.Transport(channel)"},{"line_number":220,"context_line":"        transport.start_client()"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_b18209ff","line":217,"updated":"2016-01-04 08:49:51.000000000","message":"ipv6 ?","commit_id":"1989ae073efa2d51d28b173751f6cd34e6f7a0bb"}]}
