)]}'
{"keystone/tests/unit/test_auth.py":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"9717c5bbf0087983e8188b90332dcbe9a7897c0f","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            self.controller._authenticate_token,"},{"line_number":147,"context_line":"            None, {})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_no_credentials_in_auth(self):"},{"line_number":150,"context_line":"        \"\"\"Verify that _authenticate_local() raises exception if no creds.\"\"\""},{"line_number":151,"context_line":"        self.assertRaises("},{"line_number":152,"context_line":"            exception.ValidationError,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_99d3305f","side":"PARENT","line":149,"range":{"start_line":149,"start_character":8,"end_line":149,"end_character":35},"updated":"2016-10-19 15:54:19.000000000","message":"Why remove this test?","commit_id":"6133b8acd777d4c69026ac95ddfec1b47ffb0b43"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7d55a0d0e19d87c6084def07f39f99c4116d9aeb","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            self.controller._authenticate_token,"},{"line_number":147,"context_line":"            None, {})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_no_credentials_in_auth(self):"},{"line_number":150,"context_line":"        \"\"\"Verify that _authenticate_local() raises exception if no creds.\"\"\""},{"line_number":151,"context_line":"        self.assertRaises("},{"line_number":152,"context_line":"            exception.ValidationError,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_792bbceb","side":"PARENT","line":149,"in_reply_to":"fa6399be_99d3305f","updated":"2016-10-19 16:12:09.000000000","message":"I actually removed this since the _authenticate_local method no longer contains validation logic - as that\u0027s done by the generator. I could refactor this to test the generator instead.","commit_id":"6133b8acd777d4c69026ac95ddfec1b47ffb0b43"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"c9b3beed69b5e1974ecec973ce9323fc40217e74","unresolved":false,"context_lines":[{"line_number":125,"context_line":"class AuthBadRequests(AuthTest):"},{"line_number":126,"context_line":"    def test_no_external_auth(self):"},{"line_number":127,"context_line":"        \"\"\"Verify that _authenticate_external() raises exception if N/A.\"\"\""},{"line_number":128,"context_line":"        external_method \u003d token.controllers.ExternalMethod()"},{"line_number":129,"context_line":"        request \u003d webob.Request.blank(\u0027/\u0027)"},{"line_number":130,"context_line":"        self.assertRaises("},{"line_number":131,"context_line":"            token.controllers.ExternalAuthNotApplicable,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_19cac06e","line":128,"range":{"start_line":128,"start_character":44,"end_line":128,"end_character":58},"updated":"2016-10-19 15:58:35.000000000","message":"ExternalMethod() to ExternalAuthenticationMethod(), now that you\u0027ve changed the class names.","commit_id":"336978f8bb691e8d31c45bca9f4a96761823de36"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"0dd29e9de1467111b58f653fb96f7ebc8d7c82bb","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def test_empty_remote_user(self):"},{"line_number":136,"context_line":"        \"\"\"Verify exception is raised when REMOTE_USER is an empty string.\"\"\""},{"line_number":137,"context_line":"        external_method \u003d token.controllers.ExternalMethod()"},{"line_number":138,"context_line":"        request \u003d webob.Request.blank(\u0027/\u0027, environ\u003d{\u0027REMOTE_USER\u0027: \u0027\u0027})"},{"line_number":139,"context_line":"        self.assertRaises("},{"line_number":140,"context_line":"            token.controllers.ExternalAuthNotApplicable,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_949e95b6","line":137,"range":{"start_line":137,"start_character":26,"end_line":137,"end_character":60},"updated":"2016-10-19 16:10:40.000000000","message":"Why not only import the controllers, so:\nfrom keystone.token import controllers","commit_id":"336978f8bb691e8d31c45bca9f4a96761823de36"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"9717c5bbf0087983e8188b90332dcbe9a7897c0f","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_empty_username_and_userid_in_auth(self):"},{"line_number":153,"context_line":"        \"\"\"Verify that empty username and userID raises ValidationError.\"\"\""},{"line_number":154,"context_line":"        token_method \u003d token.controllers.TokenMethod()"},{"line_number":155,"context_line":"        self.assertRaises("},{"line_number":156,"context_line":"            exception.ValidationError,"},{"line_number":157,"context_line":"            token_method.authenticate,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_b958f4fb","line":154,"range":{"start_line":154,"start_character":41,"end_line":154,"end_character":52},"updated":"2016-10-19 15:54:19.000000000","message":"Shouldn\u0027t this be LocalMethod?","commit_id":"336978f8bb691e8d31c45bca9f4a96761823de36"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7d55a0d0e19d87c6084def07f39f99c4116d9aeb","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_empty_username_and_userid_in_auth(self):"},{"line_number":153,"context_line":"        \"\"\"Verify that empty username and userID raises ValidationError.\"\"\""},{"line_number":154,"context_line":"        token_method \u003d token.controllers.TokenMethod()"},{"line_number":155,"context_line":"        self.assertRaises("},{"line_number":156,"context_line":"            exception.ValidationError,"},{"line_number":157,"context_line":"            token_method.authenticate,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_b9fe3469","line":154,"in_reply_to":"fa6399be_b958f4fb","updated":"2016-10-19 16:12:09.000000000","message":"Done","commit_id":"336978f8bb691e8d31c45bca9f4a96761823de36"}],"keystone/token/controllers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1df494fc4a1e127de7857c5d8648d1cfe5131d27","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    with the appropriate authentication method."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param auth: Dictionary containing authentication information from the"},{"line_number":46,"context_line":"                    request."},{"line_number":47,"context_line":"    :returns: An authentication method object."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    if auth is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_f61f67b4","line":46,"range":{"start_line":46,"start_character":20,"end_line":46,"end_character":27},"updated":"2016-10-15 12:33:03.000000000","message":"line this up with \"Dictionary\"","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"421739a50b397c22af3d912e699a02b1dffe99cd","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    with the appropriate authentication method."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param auth: Dictionary containing authentication information from the"},{"line_number":46,"context_line":"                    request."},{"line_number":47,"context_line":"    :returns: An authentication method object."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    if auth is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_3a6441e4","line":46,"in_reply_to":"fa6399be_f61f67b4","updated":"2016-10-17 14:33:46.000000000","message":"Done","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1df494fc4a1e127de7857c5d8648d1cfe5131d27","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param auth: Dictionary containing authentication information from the"},{"line_number":46,"context_line":"                    request."},{"line_number":47,"context_line":"    :returns: An authentication method object."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    if auth is None:"},{"line_number":50,"context_line":"        raise exception.ValidationError(attribute\u003d\u0027auth\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_161bfbca","line":47,"range":{"start_line":47,"start_character":14,"end_line":47,"end_character":45},"updated":"2016-10-15 12:33:03.000000000","message":"An authentication method class object?","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"421739a50b397c22af3d912e699a02b1dffe99cd","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :param auth: Dictionary containing authentication information from the"},{"line_number":46,"context_line":"                    request."},{"line_number":47,"context_line":"    :returns: An authentication method object."},{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    if auth is None:"},{"line_number":50,"context_line":"        raise exception.ValidationError(attribute\u003d\u0027auth\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_9a99cdd3","line":47,"in_reply_to":"fa6399be_161bfbca","updated":"2016-10-17 14:33:46.000000000","message":"Done","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1df494fc4a1e127de7857c5d8648d1cfe5131d27","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        method \u003d ExternalMethod()"},{"line_number":55,"context_line":"    elif \u0027token\u0027 in auth:"},{"line_number":56,"context_line":"        method \u003d TokenMethod()"},{"line_number":57,"context_line":"        if not auth:"},{"line_number":58,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027auth\u0027,"},{"line_number":59,"context_line":"                                            target\u003d\u0027request body\u0027)"},{"line_number":60,"context_line":"    elif \u0027passwordCredentials\u0027 in auth:"},{"line_number":61,"context_line":"        method \u003d LocalMethod()"},{"line_number":62,"context_line":"        if not auth:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_768277c9","line":59,"range":{"start_line":57,"start_character":8,"end_line":59,"end_character":66},"updated":"2016-10-15 12:33:03.000000000","message":"how will this and line 62-64 be run? \n\nif \u0027token\u0027 is in auth, then why would it be empty or None?","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"421739a50b397c22af3d912e699a02b1dffe99cd","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        method \u003d TokenMethod()"},{"line_number":57,"context_line":"        if not auth:"},{"line_number":58,"context_line":"            raise exception.ValidationError(attribute\u003d\u0027auth\u0027,"},{"line_number":59,"context_line":"                                            target\u003d\u0027request body\u0027)"},{"line_number":60,"context_line":"    elif \u0027passwordCredentials\u0027 in auth:"},{"line_number":61,"context_line":"        method \u003d LocalMethod()"},{"line_number":62,"context_line":"        if not auth:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_ba85b15a","line":59,"in_reply_to":"fa6399be_768277c9","updated":"2016-10-17 14:33:46.000000000","message":"I think this was a duplicated check brought over from the original code. Done.","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a56f7c1cdaff9b656a19c00b07cf2035e3affd58","unresolved":false,"context_lines":[{"line_number":310,"context_line":"    def _get_project_id_from_auth(self, auth):"},{"line_number":311,"context_line":"        \"\"\"Extract and normalize project information from auth dict."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        :returns: A string representing the project in the authentication"},{"line_number":314,"context_line":"                  request. If project scope isn\u0027t present in the request None"},{"line_number":315,"context_line":"                  is returned."},{"line_number":316,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_965c6b7e","line":313,"updated":"2016-10-15 12:42:14.000000000","message":"add back the line:\n\n  :param auth: Dictionary representing the authentication request.","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"421739a50b397c22af3d912e699a02b1dffe99cd","unresolved":false,"context_lines":[{"line_number":310,"context_line":"    def _get_project_id_from_auth(self, auth):"},{"line_number":311,"context_line":"        \"\"\"Extract and normalize project information from auth dict."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        :returns: A string representing the project in the authentication"},{"line_number":314,"context_line":"                  request. If project scope isn\u0027t present in the request None"},{"line_number":315,"context_line":"                  is returned."},{"line_number":316,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_9a354daa","line":313,"in_reply_to":"fa6399be_965c6b7e","updated":"2016-10-17 14:33:46.000000000","message":"Done","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a56f7c1cdaff9b656a19c00b07cf2035e3affd58","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        :param request: request object"},{"line_number":367,"context_line":"        :param auth: Dictionary representing the authentication request"},{"line_number":368,"context_line":"        :returns: A tuple containing the user reference, project identifier,"},{"line_number":369,"context_line":"                  dictionary of metadata, token expiration, bind information,"},{"line_number":370,"context_line":"                  and original audit information."},{"line_number":371,"context_line":"        \"\"\""},{"line_number":372,"context_line":"        if \u0027token\u0027 not in auth:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_36f1df6b","line":369,"range":{"start_line":369,"start_character":18,"end_line":369,"end_character":40},"updated":"2016-10-15 12:42:14.000000000","message":"nope","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"421739a50b397c22af3d912e699a02b1dffe99cd","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        :param request: request object"},{"line_number":367,"context_line":"        :param auth: Dictionary representing the authentication request"},{"line_number":368,"context_line":"        :returns: A tuple containing the user reference, project identifier,"},{"line_number":369,"context_line":"                  dictionary of metadata, token expiration, bind information,"},{"line_number":370,"context_line":"                  and original audit information."},{"line_number":371,"context_line":"        \"\"\""},{"line_number":372,"context_line":"        if \u0027token\u0027 not in auth:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_ba6131ab","line":369,"in_reply_to":"fa6399be_36f1df6b","updated":"2016-10-17 14:33:46.000000000","message":"Done","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a56f7c1cdaff9b656a19c00b07cf2035e3affd58","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        :param request: request object"},{"line_number":441,"context_line":"        :param auth: Dictionary representing the authentication request"},{"line_number":442,"context_line":"        :returns: A tuple containing the user reference, project identifier,"},{"line_number":443,"context_line":"                  dictionary of metadata, token expiration, bind information,"},{"line_number":444,"context_line":"                  and original audit information."},{"line_number":445,"context_line":"        \"\"\""},{"line_number":446,"context_line":"        if \u0027password\u0027 not in auth[\u0027passwordCredentials\u0027]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_d6d983f4","line":443,"range":{"start_line":443,"start_character":18,"end_line":443,"end_character":40},"updated":"2016-10-15 12:42:14.000000000","message":"not returned","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"421739a50b397c22af3d912e699a02b1dffe99cd","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        :param request: request object"},{"line_number":441,"context_line":"        :param auth: Dictionary representing the authentication request"},{"line_number":442,"context_line":"        :returns: A tuple containing the user reference, project identifier,"},{"line_number":443,"context_line":"                  dictionary of metadata, token expiration, bind information,"},{"line_number":444,"context_line":"                  and original audit information."},{"line_number":445,"context_line":"        \"\"\""},{"line_number":446,"context_line":"        if \u0027password\u0027 not in auth[\u0027passwordCredentials\u0027]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_da56e5cd","line":443,"in_reply_to":"fa6399be_d6d983f4","updated":"2016-10-17 14:33:46.000000000","message":"Done","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a56f7c1cdaff9b656a19c00b07cf2035e3affd58","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        :returns: A tuple containing the user reference, project identifier,"},{"line_number":443,"context_line":"                  dictionary of metadata, token expiration, bind information,"},{"line_number":444,"context_line":"                  and original audit information."},{"line_number":445,"context_line":"        \"\"\""},{"line_number":446,"context_line":"        if \u0027password\u0027 not in auth[\u0027passwordCredentials\u0027]:"},{"line_number":447,"context_line":"            raise exception.ValidationError("},{"line_number":448,"context_line":"                attribute\u003d\u0027password\u0027, target\u003d\u0027passwordCredentials\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_f6e4c7ac","line":445,"updated":"2016-10-15 12:42:14.000000000","message":"the original check:\n\n        if \u0027passwordCredentials\u0027 not in auth:\n            raise exception.ValidationError(\n                attribute\u003d\u0027passwordCredentials\u0027, target\u003d\u0027auth\u0027)\n\nis no longer performed, why?","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8ac21f5d3b2f9b7beed17b85a132618f387da971","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        :returns: A tuple containing the user reference, project identifier,"},{"line_number":443,"context_line":"                  dictionary of metadata, token expiration, bind information,"},{"line_number":444,"context_line":"                  and original audit information."},{"line_number":445,"context_line":"        \"\"\""},{"line_number":446,"context_line":"        if \u0027password\u0027 not in auth[\u0027passwordCredentials\u0027]:"},{"line_number":447,"context_line":"            raise exception.ValidationError("},{"line_number":448,"context_line":"                attribute\u003d\u0027password\u0027, target\u003d\u0027passwordCredentials\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_37d172ce","line":445,"in_reply_to":"fa6399be_7a687988","updated":"2016-10-19 00:47:00.000000000","message":"gotcha, thanks","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"421739a50b397c22af3d912e699a02b1dffe99cd","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        :returns: A tuple containing the user reference, project identifier,"},{"line_number":443,"context_line":"                  dictionary of metadata, token expiration, bind information,"},{"line_number":444,"context_line":"                  and original audit information."},{"line_number":445,"context_line":"        \"\"\""},{"line_number":446,"context_line":"        if \u0027password\u0027 not in auth[\u0027passwordCredentials\u0027]:"},{"line_number":447,"context_line":"            raise exception.ValidationError("},{"line_number":448,"context_line":"                attribute\u003d\u0027password\u0027, target\u003d\u0027passwordCredentials\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_7a687988","line":445,"in_reply_to":"fa6399be_f6e4c7ac","updated":"2016-10-17 14:33:46.000000000","message":"Because that check is done in  authentication_method_generator() to determine if this method should be used or not.","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a56f7c1cdaff9b656a19c00b07cf2035e3affd58","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        :param request: request object"},{"line_number":501,"context_line":"        :param auth: Dictionary representing the authentication request"},{"line_number":502,"context_line":"        :returns: A tuple containing the user reference, project identifier,"},{"line_number":503,"context_line":"                  dictionary of metadata, token expiration, bind information,"},{"line_number":504,"context_line":"                  and original audit information."},{"line_number":505,"context_line":"        \"\"\""},{"line_number":506,"context_line":"        username \u003d request.environ.get(\u0027REMOTE_USER\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_16e05b95","line":503,"range":{"start_line":503,"start_character":18,"end_line":503,"end_character":40},"updated":"2016-10-15 12:42:14.000000000","message":"nope","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"421739a50b397c22af3d912e699a02b1dffe99cd","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        :param request: request object"},{"line_number":501,"context_line":"        :param auth: Dictionary representing the authentication request"},{"line_number":502,"context_line":"        :returns: A tuple containing the user reference, project identifier,"},{"line_number":503,"context_line":"                  dictionary of metadata, token expiration, bind information,"},{"line_number":504,"context_line":"                  and original audit information."},{"line_number":505,"context_line":"        \"\"\""},{"line_number":506,"context_line":"        username \u003d request.environ.get(\u0027REMOTE_USER\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_da0d05ea","line":503,"in_reply_to":"fa6399be_16e05b95","updated":"2016-10-17 14:33:46.000000000","message":"Done","commit_id":"24eb7998ee48620b80c2a17a65832ee7f6e24b36"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d4a6a3ad9df8971690b0d5859ff7a8de8e3488a8","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        raise exception.ValidationError(attribute\u003d\u0027auth\u0027,"},{"line_number":50,"context_line":"                                        target\u003d\u0027request body\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    if request.environ.get(\u0027REMOTE_USER\u0027):"},{"line_number":53,"context_line":"        method \u003d ExternalMethod()"},{"line_number":54,"context_line":"    elif \u0027token\u0027 in auth:"},{"line_number":55,"context_line":"        method \u003d TokenMethod()"},{"line_number":56,"context_line":"    elif \u0027passwordCredentials\u0027 in auth:"},{"line_number":57,"context_line":"        method \u003d LocalMethod()"},{"line_number":58,"context_line":"    else:"},{"line_number":59,"context_line":"        raise exception.ValidationError(attribute\u003d\u0027auth\u0027,"},{"line_number":60,"context_line":"                                        target\u003d\u0027request body\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_f7c61a15","line":57,"range":{"start_line":52,"start_character":4,"end_line":57,"end_character":30},"updated":"2016-10-19 00:46:55.000000000","message":"much nicer now :)","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"61c617ca57c16ee84746ac775cfb0f03577d3f70","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    elif \u0027token\u0027 in auth:"},{"line_number":55,"context_line":"        method \u003d TokenMethod()"},{"line_number":56,"context_line":"    elif \u0027passwordCredentials\u0027 in auth:"},{"line_number":57,"context_line":"        method \u003d LocalMethod()"},{"line_number":58,"context_line":"    else:"},{"line_number":59,"context_line":"        raise exception.ValidationError(attribute\u003d\u0027auth\u0027,"},{"line_number":60,"context_line":"                                        target\u003d\u0027request body\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_fe7252e2","line":57,"in_reply_to":"fa6399be_f7c61a15","updated":"2016-10-19 15:45:36.000000000","message":"Thanks!","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"d0002331007056ae50169963dfc79982d1e62c61","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        return token_data"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def _get_auth_token_data(self, user, tenant, metadata, expiry, audit_id):"},{"line_number":161,"context_line":"        return dict(user\u003duser,"},{"line_number":162,"context_line":"                    tenant\u003dtenant,"},{"line_number":163,"context_line":"                    metadata\u003dmetadata,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_1e59c65a","line":160,"range":{"start_line":160,"start_character":8,"end_line":160,"end_character":28},"updated":"2016-10-19 15:47:19.000000000","message":"This is no longer used? Can we remove this method?","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"8d0756e9b9cb84f9a6f8332e775ec6adb7951b68","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"@dependency.requires(\u0027resource_api\u0027, \u0027identity_api\u0027)"},{"line_number":301,"context_line":"class BaseMethod(object):"},{"line_number":302,"context_line":"    def _get_project_id_from_auth(self, auth):"},{"line_number":303,"context_line":"        \"\"\"Extract and normalize project information from auth dict."},{"line_number":304,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_fe1b321a","line":301,"range":{"start_line":301,"start_character":6,"end_line":301,"end_character":16},"updated":"2016-10-19 15:39:44.000000000","message":"BaseTokenAuthMethod or BaseAuthenticator maybe?","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"61c617ca57c16ee84746ac775cfb0f03577d3f70","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"@dependency.requires(\u0027resource_api\u0027, \u0027identity_api\u0027)"},{"line_number":301,"context_line":"class BaseMethod(object):"},{"line_number":302,"context_line":"    def _get_project_id_from_auth(self, auth):"},{"line_number":303,"context_line":"        \"\"\"Extract and normalize project information from auth dict."},{"line_number":304,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_1e82a694","line":301,"in_reply_to":"fa6399be_fe1b321a","updated":"2016-10-19 15:45:36.000000000","message":"Done","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"8d0756e9b9cb84f9a6f8332e775ec6adb7951b68","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"@dependency.requires(\u0027token_provider_api\u0027, \u0027trust_api\u0027)"},{"line_number":340,"context_line":"class TokenMethod(BaseMethod):"},{"line_number":341,"context_line":"    \"\"\"Authenticate using an existing token.\"\"\""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def _restrict_scope(self, token_model_ref):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_3e720a4a","line":340,"range":{"start_line":340,"start_character":6,"end_line":340,"end_character":17},"updated":"2016-10-19 15:39:44.000000000","message":"TokenAuthenticator?","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"61c617ca57c16ee84746ac775cfb0f03577d3f70","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"@dependency.requires(\u0027token_provider_api\u0027, \u0027trust_api\u0027)"},{"line_number":340,"context_line":"class TokenMethod(BaseMethod):"},{"line_number":341,"context_line":"    \"\"\"Authenticate using an existing token.\"\"\""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def _restrict_scope(self, token_model_ref):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_5e4a5e84","line":340,"in_reply_to":"fa6399be_3e720a4a","updated":"2016-10-19 15:45:36.000000000","message":"Done","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"8d0756e9b9cb84f9a6f8332e775ec6adb7951b68","unresolved":false,"context_lines":[{"line_number":424,"context_line":"        return (user_ref, project_id, expiry, bind, original_audit_id)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"class LocalMethod(BaseMethod):"},{"line_number":428,"context_line":"    \"\"\"Authenticate against a local backend using password credentials.\"\"\""},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"    def authenticate(self, request, auth):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_be9c5a5e","line":427,"range":{"start_line":427,"start_character":6,"end_line":427,"end_character":17},"updated":"2016-10-19 15:39:44.000000000","message":"LocalAuthenticator or LocalAuthMethod?","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"61c617ca57c16ee84746ac775cfb0f03577d3f70","unresolved":false,"context_lines":[{"line_number":424,"context_line":"        return (user_ref, project_id, expiry, bind, original_audit_id)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"class LocalMethod(BaseMethod):"},{"line_number":428,"context_line":"    \"\"\"Authenticate against a local backend using password credentials.\"\"\""},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"    def authenticate(self, request, auth):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_be47fa75","line":427,"in_reply_to":"fa6399be_be9c5a5e","updated":"2016-10-19 15:45:36.000000000","message":"++","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"8d0756e9b9cb84f9a6f8332e775ec6adb7951b68","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        return (user_ref, project_id, expiry, bind, audit_id)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"class ExternalMethod(BaseMethod):"},{"line_number":488,"context_line":"    \"\"\"Authenticate using an external authentication method.\"\"\""},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    def authenticate(self, request, auth):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_decaee4e","line":487,"range":{"start_line":487,"start_character":6,"end_line":487,"end_character":20},"updated":"2016-10-19 15:39:44.000000000","message":"ExternalAuthenticator or ExternalAuthMethod?","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"61c617ca57c16ee84746ac775cfb0f03577d3f70","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        return (user_ref, project_id, expiry, bind, audit_id)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"class ExternalMethod(BaseMethod):"},{"line_number":488,"context_line":"    \"\"\"Authenticate using an external authentication method.\"\"\""},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    def authenticate(self, request, auth):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_fe59725c","line":487,"in_reply_to":"fa6399be_decaee4e","updated":"2016-10-19 15:45:36.000000000","message":"Done","commit_id":"e500892796cb00cf5325349821a6da2444880cd4"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"c9b3beed69b5e1974ecec973ce9323fc40217e74","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"@dependency.requires(\u0027resource_api\u0027, \u0027identity_api\u0027)"},{"line_number":301,"context_line":"class BaseAuthenticationMethod(object):"},{"line_number":302,"context_line":"    \"\"\"Common utilities/dependencies for all authentication method classes.\"\"\""},{"line_number":303,"context_line":"    def _get_project_id_from_auth(self, auth):"},{"line_number":304,"context_line":"        \"\"\"Extract and normalize project information from auth dict."}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_19c64049","line":301,"range":{"start_line":301,"start_character":6,"end_line":301,"end_character":30},"updated":"2016-10-19 15:58:35.000000000","message":"++","commit_id":"336978f8bb691e8d31c45bca9f4a96761823de36"}]}
