)]}'
{"keystoneclient/auth/base.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0f80e931fbd9300858bbe505e61b401d185df598","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        Returning None will indicate that no token was able to be retrieved."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        When implementing a plugin it is advised that you return an"},{"line_number":69,"context_line":"        `X-Auth-Token` token from this function and add any additional headers"},{"line_number":70,"context_line":"        needed as part of the `get_headers` function. This is because older"},{"line_number":71,"context_line":"        applications expect get_token to return this value."}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_1b8c167f","line":68,"updated":"2015-01-29 10:58:02.000000000","message":"Could you please rephrase this? It tooks me some time to parse what should do what and why.","commit_id":"aa24f7ca1fd40a067802bc628d08d29a18978f47"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0f80e931fbd9300858bbe505e61b401d185df598","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        plugins to specify different or additional authentication headers to"},{"line_number":85,"context_line":"        the OpenStack standard \u0027X-Auth-Token\u0027 header."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        How the authentication headers are obtained is up to the plugin. If it"},{"line_number":88,"context_line":"        is still valid it may be re-used, retrieved from cache or invoke an"},{"line_number":89,"context_line":"        authentication request against a server."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_bbc4ea92","line":87,"updated":"2015-01-29 10:58:02.000000000","message":"Sorry, could not parse the first sentence","commit_id":"aa24f7ca1fd40a067802bc628d08d29a18978f47"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0f80e931fbd9300858bbe505e61b401d185df598","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        the OpenStack standard \u0027X-Auth-Token\u0027 header."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        How the authentication headers are obtained is up to the plugin. If it"},{"line_number":88,"context_line":"        is still valid it may be re-used, retrieved from cache or invoke an"},{"line_number":89,"context_line":"        authentication request against a server."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        The default implementation of get_headers calls the get_token method to"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_db6d1e9b","line":88,"updated":"2015-01-29 10:58:02.000000000","message":"maybe \"or be used to invoked an authentication ...\"?","commit_id":"aa24f7ca1fd40a067802bc628d08d29a18978f47"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0f80e931fbd9300858bbe505e61b401d185df598","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        plugin and they are implementation specific."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        Returning None will indicate that no token was able to be retrieved and"},{"line_number":100,"context_line":"        that Authorization was a failure. Adding no authentication data can be"},{"line_number":101,"context_line":"        achieved by returning an empty dictionary."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        :param session: The session object that the auth_plugin belongs to."}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_7b10b201","line":100,"updated":"2015-01-29 10:58:02.000000000","message":"Why capital?","commit_id":"aa24f7ca1fd40a067802bc628d08d29a18978f47"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0f80e931fbd9300858bbe505e61b401d185df598","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        :param session: The session object that the auth_plugin belongs to."},{"line_number":104,"context_line":"        :type session: keystoneclient.session.Session"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :returns: Headers that are set to authenticate a message or None for"},{"line_number":107,"context_line":"                  failure. Note that when checking this value that the empty"},{"line_number":108,"context_line":"                  dict is a valid, non-failure response."},{"line_number":109,"context_line":"        :rtype: dict"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_c089a9cb","line":106,"updated":"2015-01-29 10:58:02.000000000","message":"nit: you use \"returns\" here and \"return\" above.","commit_id":"aa24f7ca1fd40a067802bc628d08d29a18978f47"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3df10d8c5c7e9f82bdf5b35bfa3fc90a0a57b5c1","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        :param session: The session object that the auth_plugin belongs to."},{"line_number":104,"context_line":"        :type session: keystoneclient.session.Session"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :returns: Headers that are set to authenticate a message or None for"},{"line_number":107,"context_line":"                  failure. Note that when checking this value that the empty"},{"line_number":108,"context_line":"                  dict is a valid, non-failure response."},{"line_number":109,"context_line":"        :rtype: dict"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_4dc95077","line":106,"in_reply_to":"fa81d914_c089a9cb","updated":"2015-01-30 00:12:48.000000000","message":":returns: is the pydoc standard, so that it would appear that the existing docstring is incorrect. From memory bknudson had a patch that cleaned up a lot of things like this. Will have to find it and make sure it merged.","commit_id":"aa24f7ca1fd40a067802bc628d08d29a18978f47"}],"keystoneclient/session.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0f80e931fbd9300858bbe505e61b401d185df598","unresolved":false,"context_lines":[{"line_number":563,"context_line":"        :raises keystoneclient.exceptions.MissingAuthPlugin: if a plugin is not"},{"line_number":564,"context_line":"                                                             available."},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        :returns: Authentication headers or None for failure."},{"line_number":567,"context_line":"        :rtype: dict"},{"line_number":568,"context_line":"        \"\"\""},{"line_number":569,"context_line":"        if not auth:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_7bac32a1","line":566,"updated":"2015-01-29 10:58:02.000000000","message":"returns or return?","commit_id":"aa24f7ca1fd40a067802bc628d08d29a18978f47"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3df10d8c5c7e9f82bdf5b35bfa3fc90a0a57b5c1","unresolved":false,"context_lines":[{"line_number":563,"context_line":"        :raises keystoneclient.exceptions.MissingAuthPlugin: if a plugin is not"},{"line_number":564,"context_line":"                                                             available."},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        :returns: Authentication headers or None for failure."},{"line_number":567,"context_line":"        :rtype: dict"},{"line_number":568,"context_line":"        \"\"\""},{"line_number":569,"context_line":"        if not auth:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_ed13e40a","line":566,"in_reply_to":"fa81d914_7bac32a1","updated":"2015-01-30 00:12:48.000000000","message":"returns","commit_id":"aa24f7ca1fd40a067802bc628d08d29a18978f47"}],"keystoneclient/tests/auth/test_identity_common.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0f80e931fbd9300858bbe505e61b401d185df598","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fa81d914_dbab5e1c","updated":"2015-01-29 10:58:02.000000000","message":"You mention that old plugins without get_headers should still work. Could you please test it?","commit_id":"aa24f7ca1fd40a067802bc628d08d29a18978f47"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3df10d8c5c7e9f82bdf5b35bfa3fc90a0a57b5c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fa81d914_ede124ff","in_reply_to":"fa81d914_dbab5e1c","updated":"2015-01-30 00:12:48.000000000","message":"So all the testing of plugins that happen up till now will have been done the older way. the fallback of get_headers is to call get_token, so all the existing testing around plugins is essentially testing that older method.","commit_id":"aa24f7ca1fd40a067802bc628d08d29a18978f47"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"5e1c8aea59088941d8e39a95bcfafc2a4a22c437","unresolved":false,"context_lines":[{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def test_setting_headers(self):"},{"line_number":399,"context_line":"        text \u003d uuid.uuid4().hex"},{"line_number":400,"context_line":"        self.requests.get(\u0027%s/prefix\u0027 % GenericPlugin.ENDPOINT, text\u003dtext)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        s \u003d session.Session(auth\u003dGenericPlugin())"},{"line_number":403,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa81d914_29a5e9a1","line":400,"updated":"2015-01-30 02:29:16.000000000","message":"Should we use self.stub_url?","commit_id":"fe1b5da71217add0c12bd8ac01746906fc59e17c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f04639102dba90569b5394fec424d08a2d938bd4","unresolved":false,"context_lines":[{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def test_setting_headers(self):"},{"line_number":399,"context_line":"        text \u003d uuid.uuid4().hex"},{"line_number":400,"context_line":"        self.requests.get(\u0027%s/prefix\u0027 % GenericPlugin.ENDPOINT, text\u003dtext)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        s \u003d session.Session(auth\u003dGenericPlugin())"},{"line_number":403,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_d4a44f59","line":400,"in_reply_to":"fa81d914_29a5e9a1","updated":"2015-02-01 23:50:07.000000000","message":"I don\u0027t think it matters, stub_url was much more useful for httpretty where you had to fight the interface a bit more.","commit_id":"fe1b5da71217add0c12bd8ac01746906fc59e17c"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"5e1c8aea59088941d8e39a95bcfafc2a4a22c437","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        self.assertEqual(text, resp.text)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        for k, v in six.iteritems(GenericPlugin.HEADERS):"},{"line_number":409,"context_line":"            self.assertEqual(v, self.requests.last_request.headers[k])"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        self.assertIsNone(s.get_token())"},{"line_number":412,"context_line":"        self.assertEqual(GenericPlugin.HEADERS, s.get_auth_headers())"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa81d914_89a89578","line":409,"updated":"2015-01-30 02:29:16.000000000","message":"Should we use self.assertRequestHeaderEqual?","commit_id":"fe1b5da71217add0c12bd8ac01746906fc59e17c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f04639102dba90569b5394fec424d08a2d938bd4","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        self.assertEqual(text, resp.text)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        for k, v in six.iteritems(GenericPlugin.HEADERS):"},{"line_number":409,"context_line":"            self.assertEqual(v, self.requests.last_request.headers[k])"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        self.assertIsNone(s.get_token())"},{"line_number":412,"context_line":"        self.assertEqual(GenericPlugin.HEADERS, s.get_auth_headers())"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_d4bb6f70","line":409,"in_reply_to":"fa81d914_89a89578","updated":"2015-02-01 23:50:07.000000000","message":"Done","commit_id":"fe1b5da71217add0c12bd8ac01746906fc59e17c"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"5e1c8aea59088941d8e39a95bcfafc2a4a22c437","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        self.assertIsNone(s.get_token())"},{"line_number":412,"context_line":"        self.assertEqual(GenericPlugin.HEADERS, s.get_auth_headers())"},{"line_number":413,"context_line":"        self.assertNotIn(\u0027X-Auth-Token\u0027, self.requests.last_request.headers)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa81d914_69c28135","line":413,"updated":"2015-01-30 02:29:16.000000000","message":"I think we shouldn\u0027t use self.requests directly?","commit_id":"fe1b5da71217add0c12bd8ac01746906fc59e17c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f04639102dba90569b5394fec424d08a2d938bd4","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        self.assertIsNone(s.get_token())"},{"line_number":412,"context_line":"        self.assertEqual(GenericPlugin.HEADERS, s.get_auth_headers())"},{"line_number":413,"context_line":"        self.assertNotIn(\u0027X-Auth-Token\u0027, self.requests.last_request.headers)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_f4af9329","line":413,"in_reply_to":"fa81d914_69c28135","updated":"2015-02-01 23:50:07.000000000","message":"for a NotIn like that we have to, there\u0027s no helpers for that","commit_id":"fe1b5da71217add0c12bd8ac01746906fc59e17c"}]}
