)]}'
{"keystoneclient/exceptions.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfb872f405a34cc3e01a81d3bbf4019f5a905d8f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from keystoneclient.i18n import _"},{"line_number":29,"context_line":"from keystoneclient.openstack.common.apiclient.exceptions import *  # noqa"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"HTTPNotImplemented \u003d HttpNotImplemented"},{"line_number":32,"context_line":"Timeout \u003d RequestTimeout"},{"line_number":33,"context_line":"HTTPError \u003d HttpError"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_7cb9e578","line":31,"updated":"2014-11-26 17:49:30.000000000","message":"We need to keep ConnectionError for backwards compatiblity. Applications might be using ConnectionError and with this change they would fail. This is explained in the NOTE comment.","commit_id":"61e5e02a37fab9d08dc0a9dd455e97480ce88aae"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8290fba45e32d54b5e078acde2317e7292e12e7e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from keystoneclient.i18n import _"},{"line_number":29,"context_line":"from keystoneclient.openstack.common.apiclient.exceptions import *  # noqa"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"HTTPNotImplemented \u003d HttpNotImplemented"},{"line_number":32,"context_line":"Timeout \u003d RequestTimeout"},{"line_number":33,"context_line":"HTTPError \u003d HttpError"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_399e5d08","line":31,"in_reply_to":"5a890539_62393cf2","updated":"2014-11-28 13:12:57.000000000","message":"ok, once that other change is merged then ConnectionError will still be here. We should make sure there\u0027s a test.","commit_id":"61e5e02a37fab9d08dc0a9dd455e97480ce88aae"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"7a21cf805c5b9b787a06d5f7d1e5f3330de78dcd","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from keystoneclient.i18n import _"},{"line_number":29,"context_line":"from keystoneclient.openstack.common.apiclient.exceptions import *  # noqa"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"HTTPNotImplemented \u003d HttpNotImplemented"},{"line_number":32,"context_line":"Timeout \u003d RequestTimeout"},{"line_number":33,"context_line":"HTTPError \u003d HttpError"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_62393cf2","line":31,"in_reply_to":"5a890539_7cb9e578","updated":"2014-11-27 10:39:33.000000000","message":"ConnectionError is imported on line 29 (https://review.openstack.org/#/c/137412/)","commit_id":"61e5e02a37fab9d08dc0a9dd455e97480ce88aae"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a82161c22727d9faf7f92ec04925e0c3d16796d","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class EmptyCatalog(EndpointNotFound):"},{"line_number":57,"context_line":"    \"\"\"The service catalog is empty.\"\"\""},{"line_number":58,"context_line":"    pass"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class SSLError(ConnectionRefused):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_9e11e55f","side":"PARENT","line":58,"updated":"2014-12-30 21:01:21.000000000","message":"Revert the change to remove \"pass\" since it\u0027s unrelated.","commit_id":"f8f81bb119b63b85f9a3f72ba81045e065b01cce"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a82161c22727d9faf7f92ec04925e0c3d16796d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    \"\"\"The service catalog is empty.\"\"\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class SSLError(ConnectionError):"},{"line_number":64,"context_line":"    \"\"\"An SSL error occurred.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_fe058915","line":63,"updated":"2014-12-30 21:01:21.000000000","message":"This change isn\u0027t backwards compatible... there could be code out there that catches ConnectionRefused to catch SSL connection problems and now that code won\u0027t work anymore.","commit_id":"63cd130efaf4bd24ff42b671ec3553ecc32c4449"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"72348e220ef2cf1fd1d1efc3815897a3c17485d0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    \"\"\"The service catalog is empty.\"\"\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class SSLError(ConnectionError):"},{"line_number":64,"context_line":"    \"\"\"An SSL error occurred.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_5f43f4ae","line":63,"in_reply_to":"3a961159_fe058915","updated":"2014-12-31 05:52:59.000000000","message":"thanks for catching this, horizon uses the KSC exception and any  big changes may cause regression. Although we don\u0027t use the SSLError, it is safer to keep everything backward compatible.","commit_id":"63cd130efaf4bd24ff42b671ec3553ecc32c4449"}],"keystoneclient/session.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"72348e220ef2cf1fd1d1efc3815897a3c17485d0","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                        \u0027 %(reason)r)\u0027) % {\u0027url\u0027: url,"},{"line_number":384,"context_line":"                                           \u0027reason\u0027: e.args[0].reason}"},{"line_number":385,"context_line":"                raise exceptions.ConnectionError(msg)"},{"line_number":386,"context_line":"        except (exceptions.RequestTimeout, exceptions.ConnectionError) as e:"},{"line_number":387,"context_line":"            if connect_retries \u003c\u003d 0:"},{"line_number":388,"context_line":"                raise"},{"line_number":389,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_dfd364d3","line":386,"updated":"2014-12-31 05:52:59.000000000","message":"Due to the comment to the parent class used by SSLError, need to catch the SSLError here too.","commit_id":"63cd130efaf4bd24ff42b671ec3553ecc32c4449"}],"keystoneclient/tests/test_session.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a82161c22727d9faf7f92ec04925e0c3d16796d","unresolved":false,"context_lines":[{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        def _connection_error(request, context):"},{"line_number":715,"context_line":"            err \u003d mock.Mock()"},{"line_number":716,"context_line":"            err.reason \u003d \"fake_error\""},{"line_number":717,"context_line":"            raise requests.exceptions.ConnectionError(err)"},{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        self.stub_url(\u0027GET\u0027, text\u003d_connection_error)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_f90cc33b","line":716,"updated":"2014-12-30 21:01:21.000000000","message":"use \u0027 for strings consistently.","commit_id":"63cd130efaf4bd24ff42b671ec3553ecc32c4449"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a82161c22727d9faf7f92ec04925e0c3d16796d","unresolved":false,"context_lines":[{"line_number":724,"context_line":"            except exceptions.ConnectionError as ex:"},{"line_number":725,"context_line":"                self.assertIn(\"fake_error\", str(ex))"},{"line_number":726,"context_line":"            else:"},{"line_number":727,"context_line":"                self.fail(\"ConnectionError should be raised\")"},{"line_number":728,"context_line":"            self.assertEqual(retries, m.call_count)"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        # we count retries so there will be one initial request + 2 retries"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_991f3f5b","line":727,"updated":"2014-12-30 21:01:21.000000000","message":"this could be done with less code using self.assertRaises.","commit_id":"63cd130efaf4bd24ff42b671ec3553ecc32c4449"}]}
