)]}'
{"keystoneclient/auth/identity/base.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"07b5132cb970c09b0365deb27aa05f32de7d20bd","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        This function should not be called independently and is expected to be"},{"line_number":60,"context_line":"        invoked via the do_authenticate function."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        This function will be invoked if the AccessInfo object cached by the"},{"line_number":63,"context_line":"        plugin is not valid. Thus plugins should always fetch a new AccessInfo"},{"line_number":64,"context_line":"        when invoked. If you are looking to just retrieve the current auth"},{"line_number":65,"context_line":"        data then you should use get_access."}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_be56ef03","line":62,"updated":"2014-08-13 01:09:24.000000000","message":"not this patch","commit_id":"9f44f9edcf7992f9cbef632be174d272649c8369"}],"keystoneclient/auth/identity/v3.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4bec0d02e6fbaa7f2372701a0aba2e5bb656b6c8","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        headers \u003d {}"},{"line_number":71,"context_line":"        body \u003d {\u0027auth\u0027: {\u0027identity\u0027: {}}}"},{"line_number":72,"context_line":"        ident \u003d body[\u0027auth\u0027][\u0027identity\u0027]"},{"line_number":73,"context_line":"        kwargs \u003d {}"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        for method in self.auth_methods:"},{"line_number":76,"context_line":"            name, auth_data \u003d method.get_auth_data(session, self, headers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F91PM%3D","line":73,"updated":"2014-04-01 20:03:37.000000000","message":"rename to requests_kwargs because you clobber **kwargs above","commit_id":"74db613a4089d2a3028a038fee453cb0e222b33f"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4bec0d02e6fbaa7f2372701a0aba2e5bb656b6c8","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            name, auth_data \u003d method.get_auth_data(session, self, headers)"},{"line_number":77,"context_line":"            ident.setdefault(\u0027methods\u0027, []).append(name)"},{"line_number":78,"context_line":"            ident[name] \u003d auth_data"},{"line_number":79,"context_line":"            method.finalize_args(kwargs)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if not ident:"},{"line_number":82,"context_line":"            raise exceptions.AuthorizationFailure(\u0027Authentication method \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F91OU%3D","line":79,"updated":"2014-04-01 20:03:37.000000000","message":"i see i made a mistake in what i was thinking last time. I was thinking of a finalize args for things that would be added to EVERY request not just the auth request. \n\ni think instead add this as a kwarg to get_auth_data requests_kwargs\u003drequests_kwargs and then manipulate it that way.","commit_id":"74db613a4089d2a3028a038fee453cb0e222b33f"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4bec0d02e6fbaa7f2372701a0aba2e5bb656b6c8","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        method_kwargs \u003d KerberosMethod._extract_kwargs(kwargs)"},{"line_number":139,"context_line":"        if method_kwargs.get(\u0027kerberos\u0027):"},{"line_number":140,"context_line":"            methods.append(KerberosMethod(**method_kwargs))"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        if not methods:"},{"line_number":143,"context_line":"            msg \u003d \u0027A username and password or token is required.\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F91O0%3D","line":140,"updated":"2014-04-01 20:03:37.000000000","message":"don\u0027t add yourself to the factory method. That\u0027s only relevant to the current clients. I\u0027ll move it to prevent this confusion.","commit_id":"74db613a4089d2a3028a038fee453cb0e222b33f"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"4bec0d02e6fbaa7f2372701a0aba2e5bb656b6c8","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                                     of authentication data for the auth type."},{"line_number":188,"context_line":"        \"\"\""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    @abc.abstractmethod"},{"line_number":191,"context_line":"    def finalize_args(self, kwargs):"},{"line_number":192,"context_line":"        \"\"\"Adds extra parameters to the request before is sent.\"\"\""},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F91Ow%3D","line":190,"updated":"2014-04-01 20:03:37.000000000","message":"can\u0027t add abstract to an existing class. It breaks compatability.","commit_id":"74db613a4089d2a3028a038fee453cb0e222b33f"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5e6ec0a3470d400a31879e35e3f2b1725e5e2b5b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            name, auth_data, req_kwargs \u003d method.get_auth_data(session,"},{"line_number":77,"context_line":"                                                               self,"},{"line_number":78,"context_line":"                                                               headers,"},{"line_number":79,"context_line":"                                                               **req_kwargs)"},{"line_number":80,"context_line":"            ident.setdefault(\u0027methods\u0027, []).append(name)"},{"line_number":81,"context_line":"            ident[name] \u003d auth_data"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9wEk%3D","line":79,"updated":"2014-04-02 11:42:59.000000000","message":"you can\u0027t make this change because get_auth_data is a public method. \n\nYou need to pass the req_kwargs as a parameter and then allow the function to modify it like it does for the headers.\n\nIt also needs to be a kwarg for compatability and i would prefer you went with requests_kwargs because it is indicating the requests library rather than just it has to do with the request.","commit_id":"058a90199fd46d0487692c1b09094397a578858d"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc18e7d32d7080fd2ea2121ae4a7d1fee00b1395","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027}"},{"line_number":70,"context_line":"        body \u003d {\u0027auth\u0027: {\u0027identity\u0027: {}}}"},{"line_number":71,"context_line":"        ident \u003d body[\u0027auth\u0027][\u0027identity\u0027]"},{"line_number":72,"context_line":"        rkwargs \u003d {}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        for method in self.auth_methods:"},{"line_number":75,"context_line":"            name, auth_data \u003d method.get_auth_data(session,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_3bbbd7c5","line":72,"updated":"2014-05-29 20:46:43.000000000","message":"these get thrown away.  They need to be passed to the \"post\" call below.","commit_id":"c22a05617f7839b2937bf7a392f64b041175c917"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"07b5132cb970c09b0365deb27aa05f32de7d20bd","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027}"},{"line_number":69,"context_line":"        body \u003d {\u0027auth\u0027: {\u0027identity\u0027: {}}}"},{"line_number":70,"context_line":"        ident \u003d body[\u0027auth\u0027][\u0027identity\u0027]"},{"line_number":71,"context_line":"        rkwargs \u003d {}"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        for method in self.auth_methods:"},{"line_number":74,"context_line":"            name, auth_data \u003d method.get_auth_data(session,"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_be1fcf59","line":71,"updated":"2014-08-13 01:09:24.000000000","message":"this isn\u0027t used? how do the tests pass?","commit_id":"9f44f9edcf7992f9cbef632be174d272649c8369"}],"keystoneclient/contrib/auth/v3/kerberos.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc18e7d32d7080fd2ea2121ae4a7d1fee00b1395","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def get_auth_data(self, session, auth, headers, request_kwargs\u003dNone,"},{"line_number":29,"context_line":"                      **kwargs):"},{"line_number":30,"context_line":"        request_kwargs[\u0027requests_auth\u0027] \u003d requests_kerberos.HTTPKerberosAuth("},{"line_number":31,"context_line":"            mutual_authentication\u003drequests_kerberos.OPTIONAL)"},{"line_number":32,"context_line":"        return \u0027kerberos\u0027, {}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_dbc3d336","line":31,"updated":"2014-05-29 20:46:43.000000000","message":"return \u0027kerberos\u0027, {\u0027kerberos\u0027: {}}","commit_id":"c22a05617f7839b2937bf7a392f64b041175c917"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"07b5132cb970c09b0365deb27aa05f32de7d20bd","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        \"\"\"Construct a Auth plugin to fetch a token from"},{"line_number":24,"context_line":"        kerberos."},{"line_number":25,"context_line":"        \"\"\""},{"line_number":26,"context_line":"        super(KerberosMethod, self).__init__(**kwargs)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def get_auth_data(self, session, auth, headers, request_kwargs\u003dNone,"},{"line_number":29,"context_line":"                      **kwargs):"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_fe3787d9","line":26,"updated":"2014-08-13 01:09:24.000000000","message":"not required.","commit_id":"9f44f9edcf7992f9cbef632be174d272649c8369"},{"author":{"_account_id":5575,"name":"Jose Castro Leon","email":"jose.castro.leon@cern.ch","username":"jose-castro-leon"},"change_message_id":"cc0c4d95f9c282105fb34c72748eb304c8ee98aa","unresolved":false,"context_lines":[{"line_number":23,"context_line":"                      **kwargs):"},{"line_number":24,"context_line":"        request_kwargs[\u0027requests_auth\u0027] \u003d requests_kerberos.HTTPKerberosAuth("},{"line_number":25,"context_line":"            mutual_authentication\u003drequests_kerberos.OPTIONAL)"},{"line_number":26,"context_line":"        return \u0027kerberos\u0027, {}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class Kerberos(v3.AuthConstructor):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa98f980_e1ad7e9c","line":26,"updated":"2014-09-12 14:10:27.000000000","message":"Do we need to change this to external? or it is already supported on the keystone server","commit_id":"d08fc9bbfdf68beb1c00fd4de92b40719fa175c8"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"3a9f8794802ee66aa918020a60d0067b15c311f6","unresolved":false,"context_lines":[{"line_number":23,"context_line":"                      **kwargs):"},{"line_number":24,"context_line":"        request_kwargs[\u0027requests_auth\u0027] \u003d requests_kerberos.HTTPKerberosAuth("},{"line_number":25,"context_line":"            mutual_authentication\u003drequests_kerberos.OPTIONAL)"},{"line_number":26,"context_line":"        return \u0027kerberos\u0027, {}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class Kerberos(v3.AuthConstructor):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa98f980_e19bbe63","line":26,"in_reply_to":"fa98f980_e1ad7e9c","updated":"2014-09-12 14:13:20.000000000","message":"Server supports this now;  We followed this approach there.","commit_id":"d08fc9bbfdf68beb1c00fd4de92b40719fa175c8"}],"keystoneclient/tests/auth/utils.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"07b5132cb970c09b0365deb27aa05f32de7d20bd","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import functools"},{"line_number":14,"context_line":"import httpretty"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":"from oslo.config import cfg"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_5e479352","line":14,"updated":"2014-08-13 01:09:24.000000000","message":"dead and buried.","commit_id":"9f44f9edcf7992f9cbef632be174d272649c8369"}],"requirements.txt":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"07b5132cb970c09b0365deb27aa05f32de7d20bd","unresolved":false,"context_lines":[{"line_number":9,"context_line":"requests\u003e\u003d1.1"},{"line_number":10,"context_line":"six\u003e\u003d1.7.0"},{"line_number":11,"context_line":"stevedore\u003e\u003d0.14"},{"line_number":12,"context_line":"requests-kerberos\u003e\u003d0.5"}],"source_content_type":"text/plain","patch_set":11,"id":"baada198_9e512b10","line":12,"updated":"2014-08-13 01:09:24.000000000","message":"should it always be required? \n\nThe advantage of plugins is that they don\u0027t need to live in tree - maybe this one should be outside?","commit_id":"9f44f9edcf7992f9cbef632be174d272649c8369"}]}
