)]}'
{"tempest/api/compute/servers/test_server_actions.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"fb35a6e35ea0169323aa23eab3145329fbbc3b21","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        if self.run_ssh:"},{"line_number":67,"context_line":"            # Verify that the user can authenticate with the new password"},{"line_number":68,"context_line":"            resp, server \u003d self.client.get_server(self.server_id)"},{"line_number":69,"context_line":"            RemoteClient(server, self.ssh_user, new_password)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":72,"context_line":"    def test_reboot_server_hard(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BD8w%3D","line":69,"updated":"2013-12-02 23:06:43.000000000","message":"It is not clear from this statement (calling RemoteClient) what is intended.  Consider creating an appropriately-named function that wraps RemoteClient so that the intention of this kind of usage can be made obvious, e.g.\n\ndef check_ssh_connectivity(*args, **kwargs):\n   \"\"\"Raise an exception if an ssh connection cannot be established.\"\"\"\n   RemoteClient(*args, **kwargs)","commit_id":"4568003dee1509b3b60eefbf2c41b0e7c03d8f66"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"7a99c09bb89193c2a4ce2b7f09dd3735abcb0b27","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        if self.run_ssh:"},{"line_number":67,"context_line":"            # Verify that the user can authenticate with the new password"},{"line_number":68,"context_line":"            resp, server \u003d self.client.get_server(self.server_id)"},{"line_number":69,"context_line":"            RemoteClient(server, self.ssh_user, new_password)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":72,"context_line":"    def test_reboot_server_hard(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BCsA%3D","line":69,"in_reply_to":"AAAATn%2F%2BD8w%3D","updated":"2013-12-17 07:50:26.000000000","message":"Another ssh related change contains a wrapper function with a get_remote_client name.","commit_id":"4568003dee1509b3b60eefbf2c41b0e7c03d8f66"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"efcaa3bf9a87619de3a9ea9c82e65083818c476a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        if self.run_ssh:"},{"line_number":142,"context_line":"            # Verify that the user can authenticate with the provided password"},{"line_number":143,"context_line":"            linux_client \u003d RemoteClient(server, self.ssh_user, password)"},{"line_number":144,"context_line":"            linux_client.validate_authentication(self)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":147,"context_line":"    def test_rebuild_server_in_stop_state(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9DVI%3D","line":144,"updated":"2013-12-17 09:21:16.000000000","message":"self","commit_id":"8c2b2d353c49761e67c7b5a942b07370949a04c6"}],"tempest/common/ssh.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"e6306921b729b31709bbb8c6ad93d0055d4c6b98","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        ssh.set_missing_host_key_policy("},{"line_number":59,"context_line":"            paramiko.AutoAddPolicy())"},{"line_number":60,"context_line":"        _start_time \u003d time.time()"},{"line_number":61,"context_line":"        if self.pkey is not None:"},{"line_number":62,"context_line":"            LOG.info(\"Creating ssh connectio to \u0027%s\u0027 as \u0027%s\u0027\","},{"line_number":63,"context_line":"                     self.host, self.username)"},{"line_number":64,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bwt4%3D","line":61,"updated":"2013-11-20 15:18:02.000000000","message":"(Suggestion only) Consider using implicit boolean conversion  unless the value in question can evaluate to False if not None (e.g. if self.pkey)","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"57af82bf0eea03b828879b2f86ccaae9d3ce6d32","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        ssh.set_missing_host_key_policy("},{"line_number":59,"context_line":"            paramiko.AutoAddPolicy())"},{"line_number":60,"context_line":"        _start_time \u003d time.time()"},{"line_number":61,"context_line":"        if self.pkey is not None:"},{"line_number":62,"context_line":"            LOG.info(\"Creating ssh connectio to \u0027%s\u0027 as \u0027%s\u0027\","},{"line_number":63,"context_line":"                     self.host, self.username)"},{"line_number":64,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BwnA%3D","line":61,"in_reply_to":"AAAATn%2F%2Bwt4%3D","updated":"2013-11-20 16:13:25.000000000","message":"The implicit Boolean conversion in similar cases frequently gets -1 on tempest reviews.","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"e6306921b729b31709bbb8c6ad93d0055d4c6b98","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            paramiko.AutoAddPolicy())"},{"line_number":60,"context_line":"        _start_time \u003d time.time()"},{"line_number":61,"context_line":"        if self.pkey is not None:"},{"line_number":62,"context_line":"            LOG.info(\"Creating ssh connectio to \u0027%s\u0027 as \u0027%s\u0027\","},{"line_number":63,"context_line":"                     self.host, self.username)"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            LOG.info(\"Creating ssh connectio to \u0027%s\u0027 as \u0027%s\u0027 with password %s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BwuM%3D","line":62,"updated":"2013-11-20 15:18:02.000000000","message":"connectio -\u003e connection\n\nThis also applies to line 65","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"ad1e92e07ba0926f2e8134e5cf0d657ed3c1f8a9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            paramiko.AutoAddPolicy())"},{"line_number":60,"context_line":"        _start_time \u003d time.time()"},{"line_number":61,"context_line":"        if self.pkey is not None:"},{"line_number":62,"context_line":"            LOG.info(\"Creating ssh connectio to \u0027%s\u0027 as \u0027%s\u0027\","},{"line_number":63,"context_line":"                     self.host, self.username)"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            LOG.info(\"Creating ssh connectio to \u0027%s\u0027 as \u0027%s\u0027 with password %s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bv8A%3D","line":62,"in_reply_to":"AAAATn%2F%2BwuM%3D","updated":"2013-11-20 17:48:12.000000000","message":"Done","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"e6306921b729b31709bbb8c6ad93d0055d4c6b98","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                if not self._is_timed_out(_start_time):"},{"line_number":81,"context_line":"                    continue"},{"line_number":82,"context_line":"                else:"},{"line_number":83,"context_line":"                    LOG.exception(exc)"},{"line_number":84,"context_line":"                    raise exceptions.SSHTimeout(host\u003dself.host,"},{"line_number":85,"context_line":"                                                user\u003dself.username,"},{"line_number":86,"context_line":"                                                password\u003dself.password)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bwsk%3D","line":83,"updated":"2013-11-20 15:18:02.000000000","message":"exception() takes a message instead of the exception as its default argument e.g.\n\nLOG.exception(\u0027Couldn\u0027t connect to server x within y seconds)\n\nThe exception will be automatically looked up via sys.exc_info.\n\nhttp://docs.python.org/2/library/logging.html#logging.Logger.exception","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"ad1e92e07ba0926f2e8134e5cf0d657ed3c1f8a9","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                if not self._is_timed_out(_start_time):"},{"line_number":81,"context_line":"                    continue"},{"line_number":82,"context_line":"                else:"},{"line_number":83,"context_line":"                    LOG.exception(exc)"},{"line_number":84,"context_line":"                    raise exceptions.SSHTimeout(host\u003dself.host,"},{"line_number":85,"context_line":"                                                user\u003dself.username,"},{"line_number":86,"context_line":"                                                password\u003dself.password)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bv78%3D","line":83,"in_reply_to":"AAAATn%2F%2Bwsk%3D","updated":"2013-11-20 17:48:12.000000000","message":"Done","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"fb35a6e35ea0169323aa23eab3145329fbbc3b21","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            paramiko.AutoAddPolicy())"},{"line_number":60,"context_line":"        _start_time \u003d time.time()"},{"line_number":61,"context_line":"        if self.pkey is not None:"},{"line_number":62,"context_line":"            LOG.info(\"Creating ssh connection to \u0027%s\u0027 as \u0027%s\u0027\","},{"line_number":63,"context_line":"                     self.host, self.username)"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            LOG.info(\"Creating ssh connection to \u0027%s\u0027 as \u0027%s\u0027\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BEK4%3D","line":62,"updated":"2013-12-02 23:06:43.000000000","message":"I think it makes sense to make it explicit that the authentication will be key-based (e.g. \u0027Creating ssh connection with key\u0027) so that the logs are clear to the uninitiated.","commit_id":"4568003dee1509b3b60eefbf2c41b0e7c03d8f66"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"fb35a6e35ea0169323aa23eab3145329fbbc3b21","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                strerror\u003d\u0027\u0027.join(err_data))"},{"line_number":156,"context_line":"        return \u0027\u0027.join(out_data)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test_connection_auth(self):"},{"line_number":159,"context_line":"        \"\"\"Raises an exception when we can not connect to server via ssh.\"\"\""},{"line_number":160,"context_line":"        connection \u003d self._get_ssh_connection()"},{"line_number":161,"context_line":"        connection.close()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BEIE%3D","line":158,"updated":"2013-12-02 23:06:43.000000000","message":"(Suggestion only) The docstring change suggests a changing the name of the method as well (e.g. to check_connection_auth) so that a user will expect an exception to be thrown by the method name alone.","commit_id":"4568003dee1509b3b60eefbf2c41b0e7c03d8f66"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"d53f2859cfeb258056fa301284aecad7c7760247","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                time.sleep(bsleep)"},{"line_number":81,"context_line":"                bsleep *\u003d backoff"},{"line_number":82,"context_line":"                if not self._is_timed_out(_start_time):"},{"line_number":83,"context_line":"                    continue"},{"line_number":84,"context_line":"                else:"},{"line_number":85,"context_line":"                    LOG.exception(\"Failed to establish authenticated ssh\""},{"line_number":86,"context_line":"                                  \" connection to %s@%s after %d attempts\","}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F89GE%3D","line":83,"updated":"2013-12-18 12:35:48.000000000","message":"because we are doing a LOG.info when we enter this function, I want a LOG.info on success","commit_id":"6d9c6d0faf559607b6d8d1c8660fabb75fe00a40"}],"tempest/common/utils/linux/remote_client.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"e6306921b729b31709bbb8c6ad93d0055d4c6b98","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.ssh_client \u003d Client(ip_address, username, password, ssh_timeout,"},{"line_number":43,"context_line":"                                 pkey\u003dpkey,"},{"line_number":44,"context_line":"                                 channel_timeout\u003dssh_channel_timeout)"},{"line_number":45,"context_line":"        self.ssh_client.test_connection_auth()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def hostname_equals_servername(self, expected_hostname):"},{"line_number":48,"context_line":"        # Get host name using command \"hostname\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bwrg%3D","line":45,"updated":"2013-11-20 15:18:02.000000000","message":"I see that this is not new behavior, but I\u0027m not sure of the wisdom of connecting in __init__.  Usually that is best left to a method that can be called separately from object instantiation.  This is to allow creating a configured ssh client and then allowing repeated connection attempts with the same client.","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"57af82bf0eea03b828879b2f86ccaae9d3ce6d32","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.ssh_client \u003d Client(ip_address, username, password, ssh_timeout,"},{"line_number":43,"context_line":"                                 pkey\u003dpkey,"},{"line_number":44,"context_line":"                                 channel_timeout\u003dssh_channel_timeout)"},{"line_number":45,"context_line":"        self.ssh_client.test_connection_auth()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def hostname_equals_servername(self, expected_hostname):"},{"line_number":48,"context_line":"        # Get host name using command \"hostname\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bwac%3D","line":45,"in_reply_to":"AAAATn%2F%2Bwrg%3D","updated":"2013-11-20 16:13:25.000000000","message":"I agree it is not an usual way of doing object initialization. The python guidelines are not as strict with callable usage.\n\nThe tempest never reuses the ssh connection, even if it would be possible, so in performance view point this this time it does not have a measurable side effect .\n\nAs I can remember, long time ago it is added here to distinguish more clearly  the issues from connectivity and command execution, even if someone would forgotten to call en explicit connection validation.","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"fb35a6e35ea0169323aa23eab3145329fbbc3b21","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.ssh_client \u003d Client(ip_address, username, password, ssh_timeout,"},{"line_number":43,"context_line":"                                 pkey\u003dpkey,"},{"line_number":44,"context_line":"                                 channel_timeout\u003dssh_channel_timeout)"},{"line_number":45,"context_line":"        self.ssh_client.test_connection_auth()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def hostname_equals_servername(self, expected_hostname):"},{"line_number":48,"context_line":"        # Get host name using command \"hostname\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BD7I%3D","line":45,"updated":"2013-12-02 23:06:43.000000000","message":"I\u0027m still not convinced that it is desirable to automatically perform a connection check during object initialization.  The common pattern is init first, then connect.  If automatically performing a connection check is necessary for some usage, my suggestion would be to add a function or class method that wraps the instantiation and check, e.g.\n\ndef check_ssh_connectivity(*args, *kwargs):\n  client \u003d RemoteClient(*args, **kwargs)\n  client.check_connection()\n\nor \n\ndef check_ssh_connectivity(cls, *args, **kwargs):\n   client \u003d cls(*args, **kwargs)\n   client.check_connection()","commit_id":"4568003dee1509b3b60eefbf2c41b0e7c03d8f66"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"efcaa3bf9a87619de3a9ea9c82e65083818c476a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                                 channel_timeout\u003dssh_channel_timeout)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def validate_authentication(self):"},{"line_number":47,"context_line":"        self.ssh_client.test_connection_auth()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def hostname_equals_servername(self, expected_hostname):"},{"line_number":50,"context_line":"        # Get host name using command \"hostname\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9DUs%3D","line":47,"updated":"2013-12-17 09:21:16.000000000","message":"doc string","commit_id":"8c2b2d353c49761e67c7b5a942b07370949a04c6"}],"tempest/scenario/manager.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"fb35a6e35ea0169323aa23eab3145329fbbc3b21","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        self.assertTrue(self._ping_ip_address(ip_address),"},{"line_number":633,"context_line":"                        \"Timed out waiting for %s to become \""},{"line_number":634,"context_line":"                        \"reachable\" % ip_address)"},{"line_number":635,"context_line":"        # implicity validates the ssh connectivity"},{"line_number":636,"context_line":"        self.get_remote_client(ip_address, username, private_key)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BEJY%3D","line":635,"updated":"2013-12-02 23:06:43.000000000","message":"(Suggestion only) The need for a comment indicates that the method name \u0027get_remote_client\u0027 doesn\u0027t adequately document what is being done.  As per a previous comment, consider calling renaming the method being called to check_ssh_connection().","commit_id":"4568003dee1509b3b60eefbf2c41b0e7c03d8f66"}],"tempest/scenario/test_network_basic_ops.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"e6306921b729b31709bbb8c6ad93d0055d4c6b98","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        for server in self.servers:"},{"line_number":231,"context_line":"            for net_name, ip_addresses in server.networks.iteritems():"},{"line_number":232,"context_line":"                for ip_address in ip_addresses:"},{"line_number":233,"context_line":"                    self.get_remote_client(ip_address,"},{"line_number":234,"context_line":"                                           ssh_login,"},{"line_number":235,"context_line":"                                           private_key)"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bwqk%3D","line":233,"updated":"2013-11-20 15:18:02.000000000","message":"I think the name of the method that is being called should continue to be \u0027check_vm_connectivity\u0027 regardless of the name of the underlying method.  The name of the check method is effectively self-documenting, but that is arguably not the case for \u0027get_remote_client\u0027.","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"ad1e92e07ba0926f2e8134e5cf0d657ed3c1f8a9","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        for server in self.servers:"},{"line_number":231,"context_line":"            for net_name, ip_addresses in server.networks.iteritems():"},{"line_number":232,"context_line":"                for ip_address in ip_addresses:"},{"line_number":233,"context_line":"                    self.get_remote_client(ip_address,"},{"line_number":234,"context_line":"                                           ssh_login,"},{"line_number":235,"context_line":"                                           private_key)"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bv74%3D","line":233,"in_reply_to":"AAAATn%2F%2BwY4%3D","updated":"2013-11-20 17:48:12.000000000","message":"Done\n\nThe method also did a ping check, so it is restored.","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"57af82bf0eea03b828879b2f86ccaae9d3ce6d32","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        for server in self.servers:"},{"line_number":231,"context_line":"            for net_name, ip_addresses in server.networks.iteritems():"},{"line_number":232,"context_line":"                for ip_address in ip_addresses:"},{"line_number":233,"context_line":"                    self.get_remote_client(ip_address,"},{"line_number":234,"context_line":"                                           ssh_login,"},{"line_number":235,"context_line":"                                           private_key)"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BwY4%3D","line":233,"in_reply_to":"AAAATn%2F%2Bwqk%3D","updated":"2013-11-20 16:13:25.000000000","message":"Using a simple also can be confusing, the connection validation is a very frequent connection pool/factory feature. So the implicit validation probably not big surprise for most people.","commit_id":"a3830d22e707a7e081ad83176be07e855454f930"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"fb35a6e35ea0169323aa23eab3145329fbbc3b21","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        for server in self.servers:"},{"line_number":231,"context_line":"            for net_name, ip_addresses in server.networks.iteritems():"},{"line_number":232,"context_line":"                for ip_address in ip_addresses:"},{"line_number":233,"context_line":"                    self._check_vm_connectivity(ip_address,"},{"line_number":234,"context_line":"                                                ssh_login,"},{"line_number":235,"context_line":"                                                private_key)"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BEKI%3D","line":233,"updated":"2013-12-02 23:06:43.000000000","message":"Please revert this unrelated formatting change.","commit_id":"4568003dee1509b3b60eefbf2c41b0e7c03d8f66"}]}
