)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c6e33528a08d104c7c4a4b66483d25252296aaf8","unresolved":false,"context_lines":[{"line_number":10,"context_line":"providing login credentials for a keystone identity provider."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The current implementation should work with any properly configured"},{"line_number":13,"context_line":"openid connect provider. "},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"partially implements bp openid-connect"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7a016987_875536c3","line":13,"updated":"2015-05-28 23:51:13.000000000","message":"Trailing whitespace ;)","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"}],"keystoneclient/contrib/auth/v3/oidc.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c553c11723fc17e7dd262e82e78c58afad586da3","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # Get redirected to the OPs redirect value"},{"line_number":99,"context_line":"        op_response \u003d session.get(self.token_url, redirect\u003dFalse, authenticated\u003dFalse)"},{"line_number":100,"context_line":"        location \u003d op_response.headers[\u0027location\u0027]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        # Hit that redirect login page with some credentials"},{"line_number":103,"context_line":"        # Currently HTTPBasicAuth method is hardcoded into the plugin"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_77705240","line":100,"updated":"2014-11-18 06:50:15.000000000","message":"location here is:\n\nhttps://localhost:8020/oidc/v10/endpoint/OP/authorize?response_type\u003did_token%20token\u0026scope\u003dopenid%20email%20profile\u0026client_id\u003drp\u0026state\u003dP7ncE3zFqQKu0kkBgAdYzWrI30w\u0026redirect_uri\u003dhttp%3A%2F%2Flocalhost%3A5000%2Fv3%2FOS-FEDERATION%2Fidentity_providers%2Ftfim%2Fprotocols%2Foidc%2Fauth%2Fredirect\u0026nonce\u003dAUg0ks6gMKbWi0cODE-_4EQAiBG_fKr6gbRlguZt26U%2C","commit_id":"7b236d4a1bc8636b458635723f5688884ccc37ed"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"eab1d24b1bdb478df292962c73479d30635bea17","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        import pdb; pdb.set_trace()"},{"line_number":110,"context_line":"        # The last location is back to Keystone with the access token"},{"line_number":111,"context_line":"        ret \u003d session.get(location, authenticated\u003dFalse, headers\u003dself.HEADER_X_FORM, cookies\u003dsession.session.cookies)"},{"line_number":112,"context_line":"        import pdb; pdb.set_trace()"},{"line_number":113,"context_line":"        ar \u003d session.get(self.token_url, authenticated\u003dFalse, headers\u003dself.HEADER_X_FORM, cookies\u003dsession.session.cookies)"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_3e4c03c8","line":111,"updated":"2014-11-15 10:51:25.000000000","message":"I can\u0027t seem to get this to be a coherent response, it\u0027s always \u0027submitting\u0027 and doesn\u0027t seem to redirect back to Keystone.","commit_id":"7b236d4a1bc8636b458635723f5688884ccc37ed"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"337d27af449b58f086fc6eedf2f58c67caeb1643","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        import pdb; pdb.set_trace()"},{"line_number":110,"context_line":"        # The last location is back to Keystone with the access token"},{"line_number":111,"context_line":"        ret \u003d session.get(location, authenticated\u003dFalse, headers\u003dself.HEADER_X_FORM, cookies\u003dsession.session.cookies)"},{"line_number":112,"context_line":"        import pdb; pdb.set_trace()"},{"line_number":113,"context_line":"        ar \u003d session.get(self.token_url, authenticated\u003dFalse, headers\u003dself.HEADER_X_FORM, cookies\u003dsession.session.cookies)"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_ac98ad1c","line":111,"in_reply_to":"5a890539_3e4c03c8","updated":"2014-11-17 15:54:09.000000000","message":"what does it return then? \nwhat is location\u0027s value?","commit_id":"7b236d4a1bc8636b458635723f5688884ccc37ed"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67a75d0db1f5829e4f43302969eeecfaa8cebb51","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo.config import cfg"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import requests"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from keystoneclient import access"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_0406cbcd","line":14,"updated":"2015-05-29 14:48:29.000000000","message":"Remove the newline","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo.config import cfg"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import requests"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from keystoneclient import access"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_91a5d205","line":14,"in_reply_to":"7a016987_0406cbcd","updated":"2015-06-02 17:58:16.000000000","message":"Done in New Patch I will submit.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67a75d0db1f5829e4f43302969eeecfaa8cebb51","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from keystoneclient import exceptions"},{"line_number":20,"context_line":"from keystoneclient.i18n import _"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from HTMLParser import HTMLParser"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class OidcUnscopedTokenAuthMethod(v3.AuthMethod):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_a4ded73b","line":22,"updated":"2015-05-29 14:48:29.000000000","message":"This is stdlib and should be in the first import group. Also this is not Py3 friendly.\n\nmaybe...\n\ntry:\n    from HTMLParser import HTMLParser\nexcept ImportError:\n    from html.parser import HTMLParser","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from keystoneclient import exceptions"},{"line_number":20,"context_line":"from keystoneclient.i18n import _"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from HTMLParser import HTMLParser"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class OidcUnscopedTokenAuthMethod(v3.AuthMethod):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_f1b6463c","line":22,"in_reply_to":"7a016987_a4ded73b","updated":"2015-06-02 17:58:16.000000000","message":"Done in New Patch I will submit.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f46a471e255458d90b3a0588f16fafcd43e64c4a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                                                \u0027be called\u0027))"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class OidcUnscopedToken(v3.AuthConstructor):"},{"line_number":34,"context_line":"    \"\"\"Implement authentication plugin for OpenID Connect protocol."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    OIDC or OpenID Connect is a protocol for federated authentication."}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_e7ee2dec","line":33,"updated":"2015-05-28 22:30:50.000000000","message":"I don\u0027t think you want AuthConstructor. Have a look at v3.FederatedBaseAuth, you want to subclass that","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                                                \u0027be called\u0027))"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class OidcUnscopedToken(v3.AuthConstructor):"},{"line_number":34,"context_line":"    \"\"\"Implement authentication plugin for OpenID Connect protocol."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    OIDC or OpenID Connect is a protocol for federated authentication."}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_51de3a6e","line":33,"in_reply_to":"7a016987_e7ee2dec","updated":"2015-06-02 17:58:16.000000000","message":"Marking as TODO. Still need to look into what is required by/in this class.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67a75d0db1f5829e4f43302969eeecfaa8cebb51","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        :param password: User\u0027s password"},{"line_number":95,"context_line":"        :type password: string"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        :param form_username: form input name for username"},{"line_number":98,"context_line":"        :type form_username: string"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        :param form_password: form input name for password"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_44c5e359","line":97,"updated":"2015-05-29 14:48:29.000000000","message":"maybe mention the default is None?","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        :param password: User\u0027s password"},{"line_number":95,"context_line":"        :type password: string"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        :param form_username: form input name for username"},{"line_number":98,"context_line":"        :type form_username: string"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        :param form_password: form input name for password"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_f1e4063c","line":97,"in_reply_to":"7a016987_44c5e359","updated":"2015-06-02 17:58:16.000000000","message":"Done in New Patch I will submit.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67a75d0db1f5829e4f43302969eeecfaa8cebb51","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        :param form_username: form input name for username"},{"line_number":98,"context_line":"        :type form_username: string"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        :param form_password: form input name for password"},{"line_number":101,"context_line":"        :type form_password: string"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_24c2e753","line":100,"updated":"2015-05-29 14:48:29.000000000","message":"same","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        :param form_username: form input name for username"},{"line_number":98,"context_line":"        :type form_username: string"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        :param form_password: form input name for password"},{"line_number":101,"context_line":"        :type form_password: string"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_91ca72a0","line":100,"in_reply_to":"7a016987_24c2e753","updated":"2015-06-02 17:58:16.000000000","message":"Done in New Patch I will submit.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c6e33528a08d104c7c4a4b66483d25252296aaf8","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_unscoped_token(self):"},{"line_number":111,"context_line":"        \"\"\"Present OpenID Connect authn assertion to the Service Provider.\"\"\""},{"line_number":112,"context_line":"        # create requests session"},{"line_number":113,"context_line":"        session \u003d requests.Session()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        # grab the login page from the redirects in authorization url"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_076026ce","line":112,"updated":"2015-05-28 23:51:13.000000000","message":"Does this need a comment?","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_unscoped_token(self):"},{"line_number":111,"context_line":"        \"\"\"Present OpenID Connect authn assertion to the Service Provider.\"\"\""},{"line_number":112,"context_line":"        # create requests session"},{"line_number":113,"context_line":"        session \u003d requests.Session()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        # grab the login page from the redirects in authorization url"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_115682d2","line":112,"in_reply_to":"7a016987_04b7ebd8","updated":"2015-06-02 17:58:16.000000000","message":"Comment Removed in New Patch I will submit.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_unscoped_token(self):"},{"line_number":111,"context_line":"        \"\"\"Present OpenID Connect authn assertion to the Service Provider.\"\"\""},{"line_number":112,"context_line":"        # create requests session"},{"line_number":113,"context_line":"        session \u003d requests.Session()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        # grab the login page from the redirects in authorization url"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_31497e32","line":112,"in_reply_to":"7a016987_076026ce","updated":"2015-06-02 17:58:16.000000000","message":"Comment Removed in New Patch I will submit.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67a75d0db1f5829e4f43302969eeecfaa8cebb51","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_unscoped_token(self):"},{"line_number":111,"context_line":"        \"\"\"Present OpenID Connect authn assertion to the Service Provider.\"\"\""},{"line_number":112,"context_line":"        # create requests session"},{"line_number":113,"context_line":"        session \u003d requests.Session()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        # grab the login page from the redirects in authorization url"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_04b7ebd8","line":112,"in_reply_to":"7a016987_076026ce","updated":"2015-05-29 14:48:29.000000000","message":"nope","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67a75d0db1f5829e4f43302969eeecfaa8cebb51","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            # grab the unnscoped token"},{"line_number":134,"context_line":"            try:"},{"line_number":135,"context_line":"                x_subject_token \u003d auth_response.headers[\u0027x-subject-token\u0027]"},{"line_number":136,"context_line":"            except:"},{"line_number":137,"context_line":"                pass"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"            return x_subject_token"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_64f69f90","line":136,"updated":"2015-05-29 14:48:29.000000000","message":"What exception are you expecting? Also you need a default of x_subject_token or the return below will fail with an UnboundLocalError","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            # grab the unnscoped token"},{"line_number":134,"context_line":"            try:"},{"line_number":135,"context_line":"                x_subject_token \u003d auth_response.headers[\u0027x-subject-token\u0027]"},{"line_number":136,"context_line":"            except:"},{"line_number":137,"context_line":"                pass"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"            return x_subject_token"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_9126f266","line":136,"in_reply_to":"7a016987_64f69f90","updated":"2015-06-02 17:58:16.000000000","message":"Marked as TODO. Will see what exception is being thrown if not found.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67a75d0db1f5829e4f43302969eeecfaa8cebb51","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        # grab the unnscoped token"},{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            x_subject_token \u003d auth_response.headers[\u0027x-subject-token\u0027]"},{"line_number":147,"context_line":"        except:"},{"line_number":148,"context_line":"            pass"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_e4304f58","line":146,"updated":"2015-05-29 14:48:29.000000000","message":"Same concern as above","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        # grab the unnscoped token"},{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            x_subject_token \u003d auth_response.headers[\u0027x-subject-token\u0027]"},{"line_number":147,"context_line":"        except:"},{"line_number":148,"context_line":"            pass"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_f11766eb","line":146,"in_reply_to":"7a016987_e4304f58","updated":"2015-06-02 17:58:16.000000000","message":"Marked as TODO. Will see what exception is being thrown if not found.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67a75d0db1f5829e4f43302969eeecfaa8cebb51","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        \"\"\""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        response \u003d self._get_unscoped_token(session)"},{"line_number":164,"context_line":"        #print response.headers"},{"line_number":165,"context_line":"        token \u003d response.headers[\u0027x-subject-token\u0027]"},{"line_number":166,"context_line":"        token_json \u003d response.json()[\u0027token\u0027]"},{"line_number":167,"context_line":"        return access.AccessInfoV3(token, **token_json)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_84407ba6","line":164,"updated":"2015-05-29 14:48:29.000000000","message":"remove debuging","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        \"\"\""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        response \u003d self._get_unscoped_token(session)"},{"line_number":164,"context_line":"        #print response.headers"},{"line_number":165,"context_line":"        token \u003d response.headers[\u0027x-subject-token\u0027]"},{"line_number":166,"context_line":"        token_json \u003d response.json()[\u0027token\u0027]"},{"line_number":167,"context_line":"        return access.AccessInfoV3(token, **token_json)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_31e5fe08","line":164,"in_reply_to":"7a016987_84407ba6","updated":"2015-06-02 17:58:16.000000000","message":"Whole Method Removed since not need.\nIt was an extra step.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f46a471e255458d90b3a0588f16fafcd43e64c4a","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"# Class used to parse html files"},{"line_number":171,"context_line":"class FormParser(HTMLParser):"},{"line_number":172,"context_line":"    def __init__(self):"},{"line_number":173,"context_line":"        HTMLParser.__init__(self)"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_c7ec51bd","line":171,"updated":"2015-05-28 22:30:50.000000000","message":"So i would like a really good reason why we are parsing HTML forms here. You\u0027re assuming that the form fields have a standard name - is that all implementations? \n\nIf this is the only way to handle this auth method then so be it but put in a really good explanation comment.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"# Class used to parse html files"},{"line_number":171,"context_line":"class FormParser(HTMLParser):"},{"line_number":172,"context_line":"    def __init__(self):"},{"line_number":173,"context_line":"        HTMLParser.__init__(self)"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_d188ea24","line":171,"in_reply_to":"7a016987_474dfe3c","updated":"2015-06-02 17:58:16.000000000","message":"That is true!!!","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":16046,"name":"Fernando Diaz","email":"diazjf@us.ibm.com","username":"diazjf"},"change_message_id":"3b76136aa448d8cfeebfc575cbb60912cf2a76a0","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"# Class used to parse html files"},{"line_number":171,"context_line":"class FormParser(HTMLParser):"},{"line_number":172,"context_line":"    def __init__(self):"},{"line_number":173,"context_line":"        HTMLParser.__init__(self)"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_f1c5265b","line":171,"in_reply_to":"7a016987_c7ec51bd","updated":"2015-06-02 17:58:16.000000000","message":"Comment added.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c6e33528a08d104c7c4a4b66483d25252296aaf8","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"# Class used to parse html files"},{"line_number":171,"context_line":"class FormParser(HTMLParser):"},{"line_number":172,"context_line":"    def __init__(self):"},{"line_number":173,"context_line":"        HTMLParser.__init__(self)"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_474dfe3c","line":171,"in_reply_to":"7a016987_c7ec51bd","updated":"2015-05-28 23:51:13.000000000","message":"OpenID is kind of terrible. I\u0027m not sure it can be helped.","commit_id":"4bd4b67eae4c0de6449f992f8a6b011171685f14"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"0aeefe5226adea6b092a42ad680063bcf56277de","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from keystoneclient.auth.identity.v3 import federated"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class OidcUnscopedToken(federated.FederatedBaseAuth):"},{"line_number":20,"context_line":"    \"\"\"Implement authentication plugin for OpenID Connect protocol."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    OIDC or OpenID Connect is a protocol for federated authentication."}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_4cca681c","line":19,"updated":"2015-06-11 06:33:38.000000000","message":"It\u0027d be probably easier to move this patch to keystoneauth repository and inherit from federation.FederationBaseAuth. Those base plugins have structure/interfaces for giving back unscoped or scoped token depending on scoping info (project, domain etc).","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a087424558b5d93218a2dff6a5768dc065e33c0b","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        super(OidcUnscopedToken, self).__init__(auth_url, identity_provider,"},{"line_number":80,"context_line":"                                                protocol)"},{"line_number":81,"context_line":"        self.auth_url \u003d auth_url"},{"line_number":82,"context_line":"        self.identity_provider, self.protocol \u003d identity_provider, protocol"},{"line_number":83,"context_line":"        self.username, self.password \u003d username, password"},{"line_number":84,"context_line":"        self.client_id, self.client_secret \u003d client_id, client_secret"},{"line_number":85,"context_line":"        self.access_token_endpoint \u003d access_token_endpoint"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_0c0b507e","line":82,"updated":"2015-06-11 06:30:28.000000000","message":"no need to save the above, it will be done by __init__","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4a54b323f68f391ef0a58c3f7a407c5d42e57a60","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        super(OidcUnscopedToken, self).__init__(auth_url, identity_provider,"},{"line_number":80,"context_line":"                                                protocol)"},{"line_number":81,"context_line":"        self.auth_url \u003d auth_url"},{"line_number":82,"context_line":"        self.identity_provider, self.protocol \u003d identity_provider, protocol"},{"line_number":83,"context_line":"        self.username, self.password \u003d username, password"},{"line_number":84,"context_line":"        self.client_id, self.client_secret \u003d client_id, client_secret"},{"line_number":85,"context_line":"        self.access_token_endpoint \u003d access_token_endpoint"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_2c9bac19","line":82,"in_reply_to":"3afb71cf_0c0b507e","updated":"2015-06-11 06:33:47.000000000","message":"Done","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a087424558b5d93218a2dff6a5768dc065e33c0b","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                                                protocol)"},{"line_number":81,"context_line":"        self.auth_url \u003d auth_url"},{"line_number":82,"context_line":"        self.identity_provider, self.protocol \u003d identity_provider, protocol"},{"line_number":83,"context_line":"        self.username, self.password \u003d username, password"},{"line_number":84,"context_line":"        self.client_id, self.client_secret \u003d client_id, client_secret"},{"line_number":85,"context_line":"        self.access_token_endpoint \u003d access_token_endpoint"},{"line_number":86,"context_line":"        self.scope \u003d scope"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_ec36b44f","line":83,"updated":"2015-06-11 06:30:28.000000000","message":"what? dont do the , assignment thing","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4a54b323f68f391ef0a58c3f7a407c5d42e57a60","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                                                protocol)"},{"line_number":81,"context_line":"        self.auth_url \u003d auth_url"},{"line_number":82,"context_line":"        self.identity_provider, self.protocol \u003d identity_provider, protocol"},{"line_number":83,"context_line":"        self.username, self.password \u003d username, password"},{"line_number":84,"context_line":"        self.client_id, self.client_secret \u003d client_id, client_secret"},{"line_number":85,"context_line":"        self.access_token_endpoint \u003d access_token_endpoint"},{"line_number":86,"context_line":"        self.scope \u003d scope"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_0c9eb006","line":83,"in_reply_to":"3afb71cf_ec36b44f","updated":"2015-06-11 06:33:47.000000000","message":"Done","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"88a6f5ca088dba748202ba8339802dafce276fd3","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        # exchange access token and send it to protected URL"},{"line_number":119,"context_line":"        headers \u003d {\u0027Authorization\u0027: \u0027Bearer \u0027 + access_token}"},{"line_number":120,"context_line":"        auth_response \u003d session.post(self.federated_token_url,"},{"line_number":121,"context_line":"                                     headers\u003dheaders, verify\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # grab the unscoped token"},{"line_number":124,"context_line":"        token \u003d auth_response.headers[\u0027X-Subject-Token\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_5271de0a","line":121,"updated":"2015-06-11 07:07:55.000000000","message":"don\u0027t forget to remove \u0027verify\u003dFalse\u0027 before merging. I think this can be handled as a session.Session() parameter.","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"88a6f5ca088dba748202ba8339802dafce276fd3","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        token_json \u003d auth_response.json()[\u0027token\u0027]"},{"line_number":126,"context_line":"        return access.AccessInfoV3(token, **token_json)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def get_auth_ref(self, session, **kwargs):"},{"line_number":129,"context_line":"        return super(OidcUnscopedToken, self).get_auth_ref(session, **kwargs)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_cc61b806","line":128,"updated":"2015-06-11 07:07:55.000000000","message":"remove this method.","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a087424558b5d93218a2dff6a5768dc065e33c0b","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return access.AccessInfoV3(token, **token_json)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def get_auth_ref(self, session, **kwargs):"},{"line_number":129,"context_line":"        return super(OidcUnscopedToken, self).get_auth_ref(session, **kwargs)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_ac243c0c","line":129,"updated":"2015-06-11 06:30:28.000000000","message":"redundant","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"0aeefe5226adea6b092a42ad680063bcf56277de","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return access.AccessInfoV3(token, **token_json)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def get_auth_ref(self, session, **kwargs):"},{"line_number":129,"context_line":"        return super(OidcUnscopedToken, self).get_auth_ref(session, **kwargs)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_ecd234d0","line":129,"updated":"2015-06-11 06:33:38.000000000","message":"why this?","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4a54b323f68f391ef0a58c3f7a407c5d42e57a60","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return access.AccessInfoV3(token, **token_json)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def get_auth_ref(self, session, **kwargs):"},{"line_number":129,"context_line":"        return super(OidcUnscopedToken, self).get_auth_ref(session, **kwargs)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_cc8c18dc","line":129,"in_reply_to":"3afb71cf_ac243c0c","updated":"2015-06-11 06:33:47.000000000","message":"Done","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"7ec3479a79c79ea42e3d8c5e2d76152df732134f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        ])"},{"line_number":41,"context_line":"        return options"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, auth_url, identity_provider, protocol,"},{"line_number":44,"context_line":"                 username, password, client_id, client_secret,"},{"line_number":45,"context_line":"                 access_token_endpoint, scope\u003d\u0027profile\u0027):"},{"line_number":46,"context_line":"        \"\"\"The OpenID Connect plugin expects the following:"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_a36052a6","line":43,"updated":"2015-06-17 08:00:24.000000000","message":"do @utils.positional(4)","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0ce3ff8fa526352f0bba58d6781b821a26894cbd","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        ])"},{"line_number":41,"context_line":"        return options"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, auth_url, identity_provider, protocol,"},{"line_number":44,"context_line":"                 username, password, client_id, client_secret,"},{"line_number":45,"context_line":"                 access_token_endpoint, scope\u003d\u0027profile\u0027):"},{"line_number":46,"context_line":"        \"\"\"The OpenID Connect plugin expects the following:"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_23542cfd","line":43,"in_reply_to":"fa32b979_a36052a6","updated":"2015-06-17 15:16:01.000000000","message":"Done","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"7ec3479a79c79ea42e3d8c5e2d76152df732134f","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":"        super(OidcToken, self).__init__(auth_url, identity_provider,"},{"line_number":80,"context_line":"                                        protocol)"},{"line_number":81,"context_line":"        self.auth_url \u003d auth_url"},{"line_number":82,"context_line":"        self.username \u003d username"},{"line_number":83,"context_line":"        self.password \u003d password"},{"line_number":84,"context_line":"        self.client_id \u003d client_id"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_234e823b","line":81,"updated":"2015-06-17 08:00:24.000000000","message":"don\u0027t need this, it will be saved by super()","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0ce3ff8fa526352f0bba58d6781b821a26894cbd","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":"        super(OidcToken, self).__init__(auth_url, identity_provider,"},{"line_number":80,"context_line":"                                        protocol)"},{"line_number":81,"context_line":"        self.auth_url \u003d auth_url"},{"line_number":82,"context_line":"        self.username \u003d username"},{"line_number":83,"context_line":"        self.password \u003d password"},{"line_number":84,"context_line":"        self.client_id \u003d client_id"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_632f9488","line":81,"in_reply_to":"fa32b979_234e823b","updated":"2015-06-17 15:16:01.000000000","message":"Done","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"7ec3479a79c79ea42e3d8c5e2d76152df732134f","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        # get an access token"},{"line_number":111,"context_line":"        client_auth \u003d (self.client_id, self.client_secret)"},{"line_number":112,"context_line":"        payload \u003d {\u0027grant_type\u0027: \u0027password\u0027, \u0027username\u0027: self.username,"},{"line_number":113,"context_line":"                   \u0027password\u0027: self.password, \u0027scope\u0027: self.scope}"},{"line_number":114,"context_line":"        response \u003d self._get_access_token(session, client_auth, payload,"},{"line_number":115,"context_line":"                                          self.access_token_endpoint)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_630d6ae7","line":112,"updated":"2015-06-17 08:00:24.000000000","message":"what\u0027s the chance you are going to what to do a different grant_type in the future? do you want to work that in now? or at least call this one OidcPassword or something so others can exist later?","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0ce3ff8fa526352f0bba58d6781b821a26894cbd","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        # get an access token"},{"line_number":111,"context_line":"        client_auth \u003d (self.client_id, self.client_secret)"},{"line_number":112,"context_line":"        payload \u003d {\u0027grant_type\u0027: \u0027password\u0027, \u0027username\u0027: self.username,"},{"line_number":113,"context_line":"                   \u0027password\u0027: self.password, \u0027scope\u0027: self.scope}"},{"line_number":114,"context_line":"        response \u003d self._get_access_token(session, client_auth, payload,"},{"line_number":115,"context_line":"                                          self.access_token_endpoint)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_a3391cd9","line":112,"in_reply_to":"fa32b979_630d6ae7","updated":"2015-06-17 15:16:01.000000000","message":"low chance, but I guess I can make it optional like scope, i also really like the suggestion of OidcPassword","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"7ec3479a79c79ea42e3d8c5e2d76152df732134f","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return access.AccessInfoV3(token, **token_json)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def _get_access_token(self, session, client_auth, payload,"},{"line_number":129,"context_line":"                          access_token_endpoint):"},{"line_number":130,"context_line":"        \"\"\"Exchange a variety of user supplied values for an access token."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        :param session: a session object to send out HTTP requests."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_a32e1241","line":129,"updated":"2015-06-17 08:00:24.000000000","message":"nit: not seeig the point of this being a standalone function. why not just use it inline and put a comment?","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0ce3ff8fa526352f0bba58d6781b821a26894cbd","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return access.AccessInfoV3(token, **token_json)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def _get_access_token(self, session, client_auth, payload,"},{"line_number":129,"context_line":"                          access_token_endpoint):"},{"line_number":130,"context_line":"        \"\"\"Exchange a variety of user supplied values for an access token."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        :param session: a session object to send out HTTP requests."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_a8249bc4","line":129,"in_reply_to":"fa32b979_a32e1241","updated":"2015-06-17 15:16:01.000000000","message":"I wanted to make it a standalone function so I could test it individually, there\u0027s also a lot of non-standard stuff going on, and I wanted to make sure future contributors knew what was going on in a lengthy docstring","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"7ec3479a79c79ea42e3d8c5e2d76152df732134f","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                                   authenticated\u003dFalse)"},{"line_number":152,"context_line":"        return op_response"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _get_keystone_token(self, session, headers, federated_token_url):"},{"line_number":155,"context_line":"        \"\"\"Exchange an acess token for a keystone token."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        By Sending the access token in an `Authorization: Bearer` header, to"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_83298e39","line":154,"updated":"2015-06-17 08:00:24.000000000","message":"nit: not seeig the point of this being a standalone function. why not just use it inline and put a comment?","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0ce3ff8fa526352f0bba58d6781b821a26894cbd","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                                   authenticated\u003dFalse)"},{"line_number":152,"context_line":"        return op_response"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _get_keystone_token(self, session, headers, federated_token_url):"},{"line_number":155,"context_line":"        \"\"\"Exchange an acess token for a keystone token."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        By Sending the access token in an `Authorization: Bearer` header, to"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_e846237a","line":154,"in_reply_to":"fa32b979_83298e39","updated":"2015-06-17 15:16:01.000000000","message":"I wanted to make it a standalone function so I could test it individually, there\u0027s also a lot of non-standard stuff going on, and I wanted to make sure future contributors knew what was going on in a lengthy docstring","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"}],"keystoneclient/tests/unit/v3/test_auth_oidc.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"50b4a7d5defde6e20fb0843c7cb7ca84302c9c24","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self.CLIENT_SECRET,"},{"line_number":87,"context_line":"            self.ACCESS_TOKEN_ENDPOINT)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @testtools.skip(\"test failing: __init__ unexpected \u0027project_domain_id\u0027\")"},{"line_number":90,"context_line":"    def test_conf_params(self):"},{"line_number":91,"context_line":"        \"\"\" Ensure OpenID Connect config options work.\"\"\""},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1af86dd1_52a0aa90","line":89,"updated":"2015-06-12 00:08:47.000000000","message":"now sure why this is failing...","commit_id":"12e4bef5f9962eac97a46b28e92df3ebdfd4e7f7"}],"setup.cfg":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"0aeefe5226adea6b092a42ad680063bcf56277de","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    v2token \u003d keystoneclient.auth.identity.v2:Token"},{"line_number":35,"context_line":"    v3password \u003d keystoneclient.auth.identity.v3:Password"},{"line_number":36,"context_line":"    v3token \u003d keystoneclient.auth.identity.v3:Token"},{"line_number":37,"context_line":"    v3unscopedoidc \u003d keystoneclient.contrib.auth.v3.oidc:OidcUnscopedToken"},{"line_number":38,"context_line":"    v3unscopedsaml \u003d keystoneclient.contrib.auth.v3.saml2:Saml2UnscopedToken"},{"line_number":39,"context_line":"    v3scopedsaml \u003d keystoneclient.contrib.auth.v3.saml2:Saml2ScopedToken"},{"line_number":40,"context_line":"    v3unscopedadfs \u003d keystoneclient.contrib.auth.v3.saml2:ADFSUnscopedToken"}],"source_content_type":"text/x-ttcn-cfg","patch_set":12,"id":"3afb71cf_cc053846","line":37,"updated":"2015-06-11 06:33:38.000000000","message":"let\u0027s try to avoid v3unscopedoidc and later v3scopedoidc. We now have a better way to handle this (see: https://github.com/openstack/keystoneauth/blob/master/keystoneauth/auth/identity/v3/federation.py#L25 )","commit_id":"1dca900338017ec765acdfcd5530613aeb97bc3c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"7ec3479a79c79ea42e3d8c5e2d76152df732134f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    v2token \u003d keystoneclient.auth.identity.v2:Token"},{"line_number":35,"context_line":"    v3password \u003d keystoneclient.auth.identity.v3:Password"},{"line_number":36,"context_line":"    v3token \u003d keystoneclient.auth.identity.v3:Token"},{"line_number":37,"context_line":"    v3oidc \u003d keystoneclient.contrib.auth.v3.oidc:OidcToken"},{"line_number":38,"context_line":"    v3unscopedsaml \u003d keystoneclient.contrib.auth.v3.saml2:Saml2UnscopedToken"},{"line_number":39,"context_line":"    v3scopedsaml \u003d keystoneclient.contrib.auth.v3.saml2:Saml2ScopedToken"},{"line_number":40,"context_line":"    v3unscopedadfs \u003d keystoneclient.contrib.auth.v3.saml2:ADFSUnscopedToken"}],"source_content_type":"text/x-ttcn-cfg","patch_set":19,"id":"fa32b979_0316def0","line":37,"updated":"2015-06-17 08:00:24.000000000","message":"similar do you want to call this v3oidcpassword or something so that future oidc grant methods might be allowed?","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0ce3ff8fa526352f0bba58d6781b821a26894cbd","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    v2token \u003d keystoneclient.auth.identity.v2:Token"},{"line_number":35,"context_line":"    v3password \u003d keystoneclient.auth.identity.v3:Password"},{"line_number":36,"context_line":"    v3token \u003d keystoneclient.auth.identity.v3:Token"},{"line_number":37,"context_line":"    v3oidc \u003d keystoneclient.contrib.auth.v3.oidc:OidcToken"},{"line_number":38,"context_line":"    v3unscopedsaml \u003d keystoneclient.contrib.auth.v3.saml2:Saml2UnscopedToken"},{"line_number":39,"context_line":"    v3scopedsaml \u003d keystoneclient.contrib.auth.v3.saml2:Saml2ScopedToken"},{"line_number":40,"context_line":"    v3unscopedadfs \u003d keystoneclient.contrib.auth.v3.saml2:ADFSUnscopedToken"}],"source_content_type":"text/x-ttcn-cfg","patch_set":19,"id":"fa32b979_f5a11bf9","line":37,"in_reply_to":"fa32b979_0316def0","updated":"2015-06-17 15:16:01.000000000","message":"Done","commit_id":"e9ca4c418a2d0f3cc309fd3412450225f2b41799"}]}
