)]}'
{"keystone/common/config.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"8a3cac9180cd9ec63a6f9a91979e36b767352936","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        cfg.StrOpt(\u0027assertion_prefix\u0027, default\u003d\u0027\u0027,"},{"line_number":464,"context_line":"                   help\u003d\u0027Value to be used when filtering assertion parameters \u0027"},{"line_number":465,"context_line":"                        \u0027from the environment.\u0027),"},{"line_number":466,"context_line":"        cfg.StrOpt(\u0027websso_return_url\u0027, default\u003d\u0027\u0027,"},{"line_number":467,"context_line":"                   help\u003d\u0027Url for postback after websso authentication\u0027)],"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    \u0027policy\u0027: ["}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_d002d03c","line":466,"updated":"2014-12-04 19:25:18.000000000","message":"I suspect that we will need this to be a list of URLs. I wonder if we could use the service catalog for this.","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"764811cbbce1c40d7a435fdc5f730b647fd189b4","unresolved":false,"context_lines":[{"line_number":464,"context_line":"                   help\u003d\u0027Value to be used when filtering assertion parameters \u0027"},{"line_number":465,"context_line":"                        \u0027from the environment.\u0027),"},{"line_number":466,"context_line":"        cfg.StrOpt(\u0027websso_return_url\u0027, default\u003d\u0027\u0027,"},{"line_number":467,"context_line":"                   help\u003d\u0027Url for postback after websso authentication\u0027)],"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    \u0027policy\u0027: ["},{"line_number":470,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_5c78b78e","line":467,"updated":"2014-12-04 21:12:51.000000000","message":"URL*","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"}],"keystone/contrib/federation/controllers.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"8a3cac9180cd9ec63a6f9a91979e36b767352936","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                                    headers\u003d[(\u0027Content-Type\u0027, \u0027text/xml\u0027)])"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    def federated_authentication_from_assertion(self, context):"},{"line_number":295,"context_line":"        protocol \u003d \u0027saml2\u0027"},{"line_number":296,"context_line":"        try:"},{"line_number":297,"context_line":"            identity_provider \u003d context[\u0027environment\u0027][\u0027Shib-Identity-Provider\u0027]"},{"line_number":298,"context_line":"        except KeyError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_5096e0f0","line":295,"updated":"2014-12-04 19:25:18.000000000","message":"lets try to not hardcode the protocol to saml2","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"764811cbbce1c40d7a435fdc5f730b647fd189b4","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                                    headers\u003d[(\u0027Content-Type\u0027, \u0027text/xml\u0027)])"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    def federated_authentication_from_assertion(self, context):"},{"line_number":295,"context_line":"        protocol \u003d \u0027saml2\u0027"},{"line_number":296,"context_line":"        try:"},{"line_number":297,"context_line":"            identity_provider \u003d context[\u0027environment\u0027][\u0027Shib-Identity-Provider\u0027]"},{"line_number":298,"context_line":"        except KeyError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_1c88ef69","line":295,"in_reply_to":"5a890539_5096e0f0","updated":"2014-12-04 21:12:51.000000000","message":"++","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"}],"keystone/contrib/federation/routers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"764811cbbce1c40d7a435fdc5f730b647fd189b4","unresolved":false,"context_lines":[{"line_number":230,"context_line":"#            action\u003d\u0027list_projects_for_groups\u0027,"},{"line_number":231,"context_line":"#            conditions\u003ddict(method\u003d[\u0027GET\u0027]))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        mapper.connect("},{"line_number":234,"context_line":"            self._construct_url(\u0027websso\u0027),"},{"line_number":235,"context_line":"            controller\u003dauth_controller,"},{"line_number":236,"context_line":"            action\u003d\u0027federated_authentication_from_assertion\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_fc47a349","line":233,"updated":"2014-12-04 21:12:51.000000000","message":"clearly needs to use the new json home friendly format and the new helpers","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"}],"keystone/middleware/core.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"8a3cac9180cd9ec63a6f9a91979e36b767352936","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def process_response(self, request, response):"},{"line_number":178,"context_line":"        \"\"\"Transform the response from JSON to XML.\"\"\""},{"line_number":179,"context_line":"        if \u0027text/html\u0027 in str(response.content_type):"},{"line_number":180,"context_line":"            return response"},{"line_number":181,"context_line":"        outgoing_xml \u003d \u0027application/xml\u0027 in str(request.accept)"},{"line_number":182,"context_line":"        if outgoing_xml and response.body:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_b0d1c4cd","line":179,"updated":"2014-12-04 19:25:18.000000000","message":"I have a cleaner version of this somewhere.","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"764811cbbce1c40d7a435fdc5f730b647fd189b4","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def process_response(self, request, response):"},{"line_number":178,"context_line":"        \"\"\"Transform the response from JSON to XML.\"\"\""},{"line_number":179,"context_line":"        if \u0027text/html\u0027 in str(response.content_type):"},{"line_number":180,"context_line":"            return response"},{"line_number":181,"context_line":"        outgoing_xml \u003d \u0027application/xml\u0027 in str(request.accept)"},{"line_number":182,"context_line":"        if outgoing_xml and response.body:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_3c4e8b6f","line":179,"in_reply_to":"5a890539_b0d1c4cd","updated":"2014-12-04 21:12:51.000000000","message":"also, to make the tests pass, I had to put this at the end of the function.","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"}],"keystone/token/providers/common.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"764811cbbce1c40d7a435fdc5f730b647fd189b4","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        roles \u003d self.assignment_api.get_roles_for_groups(group_ids,"},{"line_number":210,"context_line":"                                                         project_id,"},{"line_number":211,"context_line":"                                                         domain_id)"},{"line_number":212,"context_line":"        uroles \u003d self.assignment_api.get_roles_for_user_and_project(user_id,"},{"line_number":213,"context_line":"                                                                    project_id)"},{"line_number":214,"context_line":"        roles +\u003d [self.assignment_api.get_role(id) for id in uroles]"},{"line_number":215,"context_line":"        _check_roles(roles, user_id, project_id, domain_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_9c205f9b","line":212,"updated":"2014-12-04 21:12:51.000000000","message":"we can drop this too i believe","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"8a3cac9180cd9ec63a6f9a91979e36b767352936","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        idp \u003d auth_context[federation.IDENTITY_PROVIDER]"},{"line_number":472,"context_line":"        protocol \u003d auth_context[federation.PROTOCOL]"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"# WebSSO patch"},{"line_number":475,"context_line":"#        group_ids\u003d[]"},{"line_number":476,"context_line":"#        if \u0027group_ids\u0027 in auth_context:"},{"line_number":477,"context_line":"#            group_ids \u003d auth_context[\u0027group_ids\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_50c8a021","line":474,"updated":"2014-12-04 19:25:18.000000000","message":"drop","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"8a3cac9180cd9ec63a6f9a91979e36b767352936","unresolved":false,"context_lines":[{"line_number":494,"context_line":"            token_data[\u0027user\u0027][federation.FEDERATION].update({"},{"line_number":495,"context_line":"                \u0027groups\u0027: [{\u0027id\u0027: x} for x in group_ids]"},{"line_number":496,"context_line":"            })"},{"line_number":497,"context_line":"# WEBSSO"},{"line_number":498,"context_line":"#           if federation.IDENTITY_PROVIDER in auth_context:"},{"line_number":499,"context_line":"#                idp \u003d auth_context[federation.IDENTITY_PROVIDER]"},{"line_number":500,"context_line":"#                protocol \u003d auth_context[federation.PROTOCOL]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_90576859","line":497,"updated":"2014-12-04 19:25:18.000000000","message":"remove","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"8a3cac9180cd9ec63a6f9a91979e36b767352936","unresolved":false,"context_lines":[{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    def validate_v2_token(self, token_ref):"},{"line_number":562,"context_line":"        try:"},{"line_number":563,"context_line":"            if not \u0027saml2\u0027 in token_ref[\u0027token_data\u0027][\u0027token\u0027][\u0027methods\u0027]:"},{"line_number":564,"context_line":"                self._assert_default_domain(token_ref)"},{"line_number":565,"context_line":"            # FIXME(gyee): performance or correctness? Should we return the"},{"line_number":566,"context_line":"            # cached token or reconstruct it? Obviously if we are going with"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_3046b4a7","line":563,"updated":"2014-12-04 19:25:18.000000000","message":"We just got rid of this logic elsewhere in the provider.","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"764811cbbce1c40d7a435fdc5f730b647fd189b4","unresolved":false,"context_lines":[{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    def validate_v2_token(self, token_ref):"},{"line_number":562,"context_line":"        try:"},{"line_number":563,"context_line":"            if not \u0027saml2\u0027 in token_ref[\u0027token_data\u0027][\u0027token\u0027][\u0027methods\u0027]:"},{"line_number":564,"context_line":"                self._assert_default_domain(token_ref)"},{"line_number":565,"context_line":"            # FIXME(gyee): performance or correctness? Should we return the"},{"line_number":566,"context_line":"            # cached token or reconstruct it? Obviously if we are going with"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_7c1d7361","line":563,"in_reply_to":"5a890539_3046b4a7","updated":"2014-12-04 21:12:51.000000000","message":"yeah this wasn\u0027t necessary when i played around with it","commit_id":"99ee58c8b5eb87d3bdd1a957cc31d22ab0907f93"}]}
