)]}'
{"keystonemiddleware/auth_token/_auth.py":[{"author":{"_account_id":9276,"name":"David Charles Kennedy","email":"david.c.kennedy@hpe.com","username":"darfed"},"change_message_id":"3dd6d03aa5dfb5c57081304fa906701e4c9db539","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # NOTE(jamielennox): for backwards compatibility here we don\u0027t"},{"line_number":117,"context_line":"        # actually use the URL from discovery we hack it up instead. :("},{"line_number":118,"context_line":"        if version[0] \u003d\u003d 2 or version \u003d\u003d \u0027v2.0\u0027:"},{"line_number":119,"context_line":"            return \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":120,"context_line":"        elif version[0] \u003d\u003d 3 or version \u003d\u003d \u0027v3\u0027:"},{"line_number":121,"context_line":"            return \u0027%s/v3\u0027 % self._identity_uri"}],"source_content_type":"text/x-python","patch_set":7,"id":"dac4157f_f5662a28","line":118,"updated":"2015-04-21 14:54:20.000000000","message":"version is specified as a tuple in the :param tage above.  Is this consistent?","commit_id":"bdfd0bb0f4f687305ae659dcaa9218a4b9e6b232"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cbfa0c7ff049b21607fbd68b2a9fea4cddd112af","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        # NOTE(jamielennox): for backwards compatibility here we don\u0027t"},{"line_number":117,"context_line":"        # actually use the URL from discovery we hack it up instead. :("},{"line_number":118,"context_line":"        if version[0] \u003d\u003d 2 or version \u003d\u003d \u0027v2.0\u0027:"},{"line_number":119,"context_line":"            return \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":120,"context_line":"        elif version[0] \u003d\u003d 3 or version \u003d\u003d \u0027v3\u0027:"},{"line_number":121,"context_line":"            return \u0027%s/v3\u0027 % self._identity_uri"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_bde952e8","line":118,"in_reply_to":"dac4157f_f5662a28","updated":"2015-04-26 14:30:52.000000000","message":"Done","commit_id":"bdfd0bb0f4f687305ae659dcaa9218a4b9e6b232"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2256c88dfd8e9655a5f8c7a4732976bed28ef196","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        # actually use the URL from discovery we hack it up instead. :("},{"line_number":119,"context_line":"        if version[0] \u003d\u003d 2 or version \u003d\u003d \u0027v2.0\u0027:"},{"line_number":120,"context_line":"            return \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":121,"context_line":"        elif version[0] \u003d\u003d 3 or version \u003d\u003d \u0027v3\u0027:"},{"line_number":122,"context_line":"            return \u0027%s/v3\u0027 % self._identity_uri"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # NOTE(jamielennox): This plugin will only get called from auth_token"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ad0253b_f464314a","line":121,"updated":"2015-04-28 19:41:12.000000000","message":"does this ever get called with a string? \n\nFrom memory it was ok to just use the tuple here because the version information that was being passed was hardcoded.","commit_id":"f1cddb4ae5435a02c812867b100ea591d97f34b4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a0b63a16a23c1b73a1da6201b963fad223679af9","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        # actually use the URL from discovery we hack it up instead. :("},{"line_number":119,"context_line":"        if version[0] \u003d\u003d 2 or version \u003d\u003d \u0027v2.0\u0027:"},{"line_number":120,"context_line":"            return \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":121,"context_line":"        elif version[0] \u003d\u003d 3 or version \u003d\u003d \u0027v3\u0027:"},{"line_number":122,"context_line":"            return \u0027%s/v3\u0027 % self._identity_uri"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # NOTE(jamielennox): This plugin will only get called from auth_token"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_35185884","line":121,"in_reply_to":"3acd31a7_5a90a3ec","updated":"2015-04-29 22:43:12.000000000","message":"See https://review.openstack.org/#/c/178866/","commit_id":"f1cddb4ae5435a02c812867b100ea591d97f34b4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"117af09003d559a50ed9758e0af0c523fcd47cd4","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        # actually use the URL from discovery we hack it up instead. :("},{"line_number":119,"context_line":"        if version[0] \u003d\u003d 2 or version \u003d\u003d \u0027v2.0\u0027:"},{"line_number":120,"context_line":"            return \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":121,"context_line":"        elif version[0] \u003d\u003d 3 or version \u003d\u003d \u0027v3\u0027:"},{"line_number":122,"context_line":"            return \u0027%s/v3\u0027 % self._identity_uri"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # NOTE(jamielennox): This plugin will only get called from auth_token"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_5a90a3ec","line":121,"in_reply_to":"5ad0253b_f464314a","updated":"2015-04-29 22:00:40.000000000","message":"If I remove this then a bunch of tests failed.\n\nLooks like the Adapter has self.version \u003d \u0027v3\u0027 (or \u0027v2.0\u0027), rather than setting it to a tuple as the docstring says. Seems like a bug in keystoneclient?\n\nIt\u0027s being called from\n\n -\u003e return func(*args, **kwargs)\n   /opt/stack/keystonemiddleware/.tox/debug/local/lib/python2.7/site-packages/keystoneclient/v3/tokens.py(75)validate()\n -\u003e resp, body \u003d self._client.get(url, headers\u003dheaders)\n   /opt/stack/keystonemiddleware/.tox/debug/local/lib/python2.7/site-packages/keystoneclient/adapter.py(170)get()\n -\u003e return self.request(url, \u0027GET\u0027, **kwargs)\n   /opt/stack/keystonemiddleware/.tox/debug/local/lib/python2.7/site-packages/keystoneclient/adapter.py(206)request()\n -\u003e resp \u003d super(LegacyJsonAdapter, self).request(*args, **kwargs)\n   /opt/stack/keystonemiddleware/.tox/debug/local/lib/python2.7/site-packages/keystoneclient/adapter.py(95)request()\n -\u003e return self.session.request(url, method, **kwargs)\n   /opt/stack/keystonemiddleware/.tox/debug/local/lib/python2.7/site-packages/keystoneclient/adapter.py(95)request()\n -\u003e return self.session.request(url, method, **kwargs)\n   /opt/stack/keystonemiddleware/.tox/debug/local/lib/python2.7/site-packages/keystoneclient/utils.py(318)inner()\n -\u003e return func(*args, **kwargs)\n   /opt/stack/keystonemiddleware/.tox/debug/local/lib/python2.7/site-packages/keystoneclient/session.py(334)request()\n -\u003e base_url \u003d self.get_endpoint(auth, **endpoint_filter)\n   /opt/stack/keystonemiddleware/.tox/debug/local/lib/python2.7/site-packages/keystoneclient/session.py(635)get_endpoint()\n -\u003e return auth.get_endpoint(self, **kwargs)\n \u003e /opt/stack/keystonemiddleware/keystonemiddleware/auth_token/_auth.py(130)get_endpoint()\n -\u003e msg \u003d _(\u0027Invalid version asked for in auth_token plugin\u0027)","commit_id":"f1cddb4ae5435a02c812867b100ea591d97f34b4"},{"author":{"_account_id":9276,"name":"David Charles Kennedy","email":"david.c.kennedy@hpe.com","username":"darfed"},"change_message_id":"5b5ab061518868bc46ed2495713a0d62832892c5","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        :param session: The session object that the auth_plugin belongs to."},{"line_number":90,"context_line":"        :type session: keystoneclient.session.Session"},{"line_number":91,"context_line":"        :param version: The version number required for this endpoint."},{"line_number":92,"context_line":"        :type version: tuple or str"},{"line_number":93,"context_line":"        :param str interface: what visibility the endpoint should have."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        :returns: The base URL that will be used to talk to the required"}],"source_content_type":"text/x-python","patch_set":10,"id":"3acd31a7_c7a72c4e","line":92,"updated":"2015-04-30 10:14:58.000000000","message":"I know you added this in response to my comment in patch set 7 but as this is a temporary workaround could you add a note (add a comment to this comment) to fix this too?  As below.","commit_id":"41544561f3b3770be1df846b11817426c5a5334f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9dcc6956784bdef4929444e048a66808f6403e32","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        :param session: The session object that the auth_plugin belongs to."},{"line_number":90,"context_line":"        :type session: keystoneclient.session.Session"},{"line_number":91,"context_line":"        :param version: The version number required for this endpoint."},{"line_number":92,"context_line":"        :type version: tuple or str"},{"line_number":93,"context_line":"        :param str interface: what visibility the endpoint should have."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        :returns: The base URL that will be used to talk to the required"}],"source_content_type":"text/x-python","patch_set":10,"id":"3acd31a7_c0637d19","line":92,"in_reply_to":"3acd31a7_c7a72c4e","updated":"2015-04-30 20:24:26.000000000","message":"Done","commit_id":"41544561f3b3770be1df846b11817426c5a5334f"},{"author":{"_account_id":9276,"name":"David Charles Kennedy","email":"david.c.kennedy@hpe.com","username":"darfed"},"change_message_id":"5b5ab061518868bc46ed2495713a0d62832892c5","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        # NOTE(jamielennox): for backwards compatibility here we don\u0027t"},{"line_number":118,"context_line":"        # actually use the URL from discovery we hack it up instead. :("},{"line_number":119,"context_line":"        # NOTE(blk-u): Checking the version as a string is a workaround for"},{"line_number":120,"context_line":"        # bug 1450272. This can be removed once that\u0027s fixed."},{"line_number":121,"context_line":"        if version[0] \u003d\u003d 2 or version \u003d\u003d \u0027v2.0\u0027:"},{"line_number":122,"context_line":"            return \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":123,"context_line":"        elif version[0] \u003d\u003d 3 or version \u003d\u003d \u0027v3\u0027:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3acd31a7_67d178cd","line":120,"updated":"2015-04-30 10:14:58.000000000","message":"- like this","commit_id":"41544561f3b3770be1df846b11817426c5a5334f"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"10f67f2c5b010bfd366fd249296ae4a138e66240","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        # actually use the URL from discovery we hack it up instead. :("},{"line_number":119,"context_line":"        # NOTE(blk-u): Checking the version as a string is a workaround for"},{"line_number":120,"context_line":"        # bug 1450272. This can be removed once that\u0027s fixed. Also fix the"},{"line_number":121,"context_line":"        # docstring for the version parameter to be just \"tuple\"."},{"line_number":122,"context_line":"        if version[0] \u003d\u003d 2 or version \u003d\u003d \u0027v2.0\u0027:"},{"line_number":123,"context_line":"            return \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":124,"context_line":"        elif version[0] \u003d\u003d 3 or version \u003d\u003d \u0027v3\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3acd31a7_df38f73f","line":121,"updated":"2015-04-30 22:45:35.000000000","message":"i think the better solution here is to do \n\nversion \u003d discover.normalize_version_number(version) \nif discover.version_match(version, (2,0)): \n    ...\nelif discover.version_match(version, (3,0)):","commit_id":"7b150966b89ef142baf31f3de46834fca6351ad4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e262f5b258ce89e7c8effbda7483d4d500a2b3de","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        # actually use the URL from discovery we hack it up instead. :("},{"line_number":119,"context_line":"        # NOTE(blk-u): Checking the version as a string is a workaround for"},{"line_number":120,"context_line":"        # bug 1450272. This can be removed once that\u0027s fixed. Also fix the"},{"line_number":121,"context_line":"        # docstring for the version parameter to be just \"tuple\"."},{"line_number":122,"context_line":"        if version[0] \u003d\u003d 2 or version \u003d\u003d \u0027v2.0\u0027:"},{"line_number":123,"context_line":"            return \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":124,"context_line":"        elif version[0] \u003d\u003d 3 or version \u003d\u003d \u0027v3\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3acd31a7_8b1ec161","line":121,"in_reply_to":"3acd31a7_df38f73f","updated":"2015-05-01 01:34:26.000000000","message":"Done","commit_id":"7b150966b89ef142baf31f3de46834fca6351ad4"}],"keystonemiddleware/auth_token/_identity.py":[{"author":{"_account_id":9276,"name":"David Charles Kennedy","email":"david.c.kennedy@hpe.com","username":"darfed"},"change_message_id":"3dd6d03aa5dfb5c57081304fa906701e4c9db539","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    AUTH_VERSION \u003d None"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, adap, include_service_catalog\u003dNone):"},{"line_number":30,"context_line":"        self._include_service_catalog \u003d include_service_catalog"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def verify_token(self, user_token):"}],"source_content_type":"text/x-python","patch_set":7,"id":"dac4157f_b5e0b2fb","line":29,"updated":"2015-04-21 14:54:20.000000000","message":"I don\u0027t think adap is needed here.","commit_id":"bdfd0bb0f4f687305ae659dcaa9218a4b9e6b232"},{"author":{"_account_id":9276,"name":"David Charles Kennedy","email":"david.c.kennedy@hpe.com","username":"darfed"},"change_message_id":"74b071f43eac4aa97a307b9036c0ee123774c0f7","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    AUTH_VERSION \u003d None"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, adap, include_service_catalog\u003dNone):"},{"line_number":30,"context_line":"        self._include_service_catalog \u003d include_service_catalog"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def verify_token(self, user_token):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_4372ece6","line":29,"in_reply_to":"dac4157f_3ef23fd3","updated":"2015-04-23 13:24:08.000000000","message":"OK.  It seems to me that the derived classes could call super without adap but I\u0027m not experienced enough with python to be sure as to what is good practice.  So I bow to your judgement.","commit_id":"bdfd0bb0f4f687305ae659dcaa9218a4b9e6b232"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a8bf7dd3ed33cf3ca3b33d5ae1502a9629df17b5","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    AUTH_VERSION \u003d None"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, adap, include_service_catalog\u003dNone):"},{"line_number":30,"context_line":"        self._include_service_catalog \u003d include_service_catalog"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def verify_token(self, user_token):"}],"source_content_type":"text/x-python","patch_set":7,"id":"dac4157f_3ef23fd3","line":29,"in_reply_to":"dac4157f_b5e0b2fb","updated":"2015-04-22 12:48:07.000000000","message":"adap isn\u0027t used in the base class but it\u0027s used in the derived classes.","commit_id":"bdfd0bb0f4f687305ae659dcaa9218a4b9e6b232"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"2256c88dfd8e9655a5f8c7a4732976bed28ef196","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def verify_token(self, user_token):"},{"line_number":48,"context_line":"        token \u003d self._client.tokens.validate(user_token)"},{"line_number":49,"context_line":"        data \u003d {\u0027access\u0027: token._info}"},{"line_number":50,"context_line":"        return data"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def fetch_cert_file(self, cert_type):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ad0253b_94b05d8d","line":49,"updated":"2015-04-28 19:41:12.000000000","message":"private data?","commit_id":"f1cddb4ae5435a02c812867b100ea591d97f34b4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bd5f08eaa9f725a9ad9b72f57e61f31445695913","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def verify_token(self, user_token):"},{"line_number":48,"context_line":"        token \u003d self._client.tokens.validate(user_token)"},{"line_number":49,"context_line":"        data \u003d {\u0027access\u0027: token._info}"},{"line_number":50,"context_line":"        return data"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def fetch_cert_file(self, cert_type):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_b541083c","line":49,"in_reply_to":"3acd31a7_fa3acfe6","updated":"2015-04-29 22:05:36.000000000","message":"Updated to use the new validate_access_info API instead.","commit_id":"f1cddb4ae5435a02c812867b100ea591d97f34b4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"319e4d0a61bc1c8209495aab6136978399bfa852","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def verify_token(self, user_token):"},{"line_number":48,"context_line":"        token \u003d self._client.tokens.validate(user_token)"},{"line_number":49,"context_line":"        data \u003d {\u0027access\u0027: token._info}"},{"line_number":50,"context_line":"        return data"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def fetch_cert_file(self, cert_type):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_fa3acfe6","line":49,"in_reply_to":"5ad0253b_94b05d8d","updated":"2015-04-29 22:02:44.000000000","message":"I need to update this.","commit_id":"f1cddb4ae5435a02c812867b100ea591d97f34b4"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"10f67f2c5b010bfd366fd249296ae4a138e66240","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        user_token \u003d _utils.safe_quote(user_token)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            response, data \u003d self._request_strategy.verify_token(user_token)"},{"line_number":170,"context_line":"        except exceptions.NotFound as e:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3acd31a7_bf6e5b2d","side":"PARENT","line":167,"updated":"2015-04-30 22:45:35.000000000","message":"I remember this discussion and agree it should be removed - is there a reason to have it a part of this review?","commit_id":"ea9ac13581b54f6a3fa4d4ba00df3445bcc9effb"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e262f5b258ce89e7c8effbda7483d4d500a2b3de","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        user_token \u003d _utils.safe_quote(user_token)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            response, data \u003d self._request_strategy.verify_token(user_token)"},{"line_number":170,"context_line":"        except exceptions.NotFound as e:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3acd31a7_ab361de5","side":"PARENT","line":167,"in_reply_to":"3acd31a7_bf6e5b2d","updated":"2015-05-01 01:34:26.000000000","message":"the reason I got rid of this here is that keystoneclient should be safe quoting the token if that\u0027s what needs to happen. I assume that keystoneclient does properly quote the token passed in to validate.\n\nIs there a test missing where the token needs to be quoted?","commit_id":"ea9ac13581b54f6a3fa4d4ba00df3445bcc9effb"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"10f67f2c5b010bfd366fd249296ae4a138e66240","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if cert_type \u003d\u003d \u0027ca\u0027:"},{"line_number":76,"context_line":"            return self._client.simple_cert.get_ca_certificates()"},{"line_number":77,"context_line":"        elif cert_type \u003d\u003d \u0027signing\u0027:"},{"line_number":78,"context_line":"            return self._client.simple_cert.get_certificates()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"_REQUEST_STRATEGIES \u003d [_V3RequestStrategy, _V2RequestStrategy]"}],"source_content_type":"text/x-python","patch_set":11,"id":"3acd31a7_df0fd786","line":78,"updated":"2015-04-30 22:45:35.000000000","message":"i think in a follow up review we split this into two seperate functions. There\u0027s no need to make this a string compare now there is no common code.","commit_id":"7b150966b89ef142baf31f3de46834fca6351ad4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e262f5b258ce89e7c8effbda7483d4d500a2b3de","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if cert_type \u003d\u003d \u0027ca\u0027:"},{"line_number":76,"context_line":"            return self._client.simple_cert.get_ca_certificates()"},{"line_number":77,"context_line":"        elif cert_type \u003d\u003d \u0027signing\u0027:"},{"line_number":78,"context_line":"            return self._client.simple_cert.get_certificates()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"_REQUEST_STRATEGIES \u003d [_V3RequestStrategy, _V2RequestStrategy]"}],"source_content_type":"text/x-python","patch_set":11,"id":"3acd31a7_4b2789b6","line":78,"in_reply_to":"3acd31a7_df0fd786","updated":"2015-05-01 01:34:26.000000000","message":"totally agree.","commit_id":"7b150966b89ef142baf31f3de46834fca6351ad4"}]}
