)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"ae115280b6e910c9eaca94a000644ac46c16bbbd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Adam Young \u003cayoung@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-12-03 21:18:56 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use oslo-context"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Up now, keystone was emulating the values of"},{"line_number":10,"context_line":"oslo-context directly pulled out of the token."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"df87a7cf_b56cef08","line":7,"updated":"2017-12-04 13:15:54.000000000","message":"This is confusing. We were using oslo.context before. Could you add more detail about what is changing and why? This is part of keystone that some of us have the least understanding about.","commit_id":"ae914e4c4f5a2988a2bbca7f8cdd2c01e8f3cbe5"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc8f83bc081afd89723731ad1f8236e022364ab9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Adam Young \u003cayoung@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-12-03 21:18:56 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use oslo-context"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Up now, keystone was emulating the values of"},{"line_number":10,"context_line":"oslo-context directly pulled out of the token."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"df87a7cf_ab132c66","line":7,"in_reply_to":"df87a7cf_b56cef08","updated":"2017-12-04 15:01:27.000000000","message":"While we included it, we were not using it to enforce policy;  the custom one overwrote the oslo-context created by middleware.  I\u0027ll make this clearer.","commit_id":"ae914e4c4f5a2988a2bbca7f8cdd2c01e8f3cbe5"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"72ea79bcf2864226ffe5343f10d0d166b7c2f5ed","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enforce policy on oslo-context"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Up now, middleware/auth.py was overwriting the oslo"},{"line_number":10,"context_line":"context generated from keystonemiddleware with a"},{"line_number":11,"context_line":"dictionary that simoliulated the values of"},{"line_number":12,"context_line":"oslo-context directly pulled out of the token."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"df87a7cf_3930c856","line":9,"range":{"start_line":9,"start_character":2,"end_line":9,"end_character":3},"updated":"2017-12-05 01:41:52.000000000","message":"Up to now*","commit_id":"b5faf63511b188c19548ca01e6d87d0d2047ece3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"72ea79bcf2864226ffe5343f10d0d166b7c2f5ed","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Up now, middleware/auth.py was overwriting the oslo"},{"line_number":10,"context_line":"context generated from keystonemiddleware with a"},{"line_number":11,"context_line":"dictionary that simoliulated the values of"},{"line_number":12,"context_line":"oslo-context directly pulled out of the token."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"As oslo-context gains logic, Keystone has started"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"df87a7cf_59482ccb","line":11,"range":{"start_line":11,"start_character":16,"end_line":11,"end_character":28},"updated":"2017-12-05 01:41:52.000000000","message":"simulated*","commit_id":"b5faf63511b188c19548ca01e6d87d0d2047ece3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"72ea79bcf2864226ffe5343f10d0d166b7c2f5ed","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"As oslo-context gains logic, Keystone has started"},{"line_number":15,"context_line":"to diverge from the rest of the projects that use"},{"line_number":16,"context_line":"oslo-context."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ie93392f8aabddf8c963b9cb08aaa006d28d37e22"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"df87a7cf_1914e49f","line":16,"updated":"2017-12-05 01:41:52.000000000","message":"++ \n\nLet\u0027s use this as an opportunity to converge on a consistent approach.","commit_id":"b5faf63511b188c19548ca01e6d87d0d2047ece3"}],"keystone/common/context.py":[{"author":{"_account_id":19853,"name":"Nguyen Hung Phuong","email":"phuongnh@vn.fujitsu.com","username":"phuongnh"},"change_message_id":"5adeb165e3c29a80227aef684d2c5a788b755798","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @property"},{"line_number":38,"context_line":"    def username(self):"},{"line_number":39,"context_line":"        #TODO(jamielennox): this should be able to be removed and use user_name"},{"line_number":40,"context_line":"        return self.user_name"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_d5ac65a0","line":39,"updated":"2017-11-29 02:35:37.000000000","message":"should be \"# TODO\"","commit_id":"9d71f379dd1ce6151808a91829bdfcabe64e986b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"44f4bf385390065ab7d98cf1ab92563a80b7f263","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.project_name \u003d kwargs.pop(\u0027project_name\u0027, None)"},{"line_number":33,"context_line":"        self.username \u003d kwargs.pop(\u0027username\u0027, None)"},{"line_number":34,"context_line":"        self.user_domain_name \u003d kwargs.pop(\u0027user_domain_name\u0027, None)"},{"line_number":35,"context_line":"        self.project_domain_name \u003d kwargs.pop(\u0027project_domain_name\u0027, None)"},{"line_number":36,"context_line":"        self.project_tag_name \u003d kwargs.pop(\u0027project_tag_name\u0027, None)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.is_delegated_auth \u003d kwargs.pop(\u0027is_delegated_auth\u0027, False)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_bd1384b8","line":35,"updated":"2017-12-03 23:44:16.000000000","message":"pretty much everything above here will be handled in super.__init__. Check username though, i think it\u0027s user_name in oslo.context.","commit_id":"9decc1a8212cb47394a14eb8e5305e02698c91e4"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"44f4bf385390065ab7d98cf1ab92563a80b7f263","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        with additional attributes used by that are not enforced"},{"line_number":66,"context_line":"        in other services"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        return oslo_context._DeprecatedPolicyValues({"},{"line_number":69,"context_line":"            \u0027user_id\u0027: self.user_id,"},{"line_number":70,"context_line":"            \u0027user_domain_id\u0027: self.user_domain_id,"},{"line_number":71,"context_line":"            \u0027project_id\u0027: self.project_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_7d0dfc8e","line":68,"updated":"2017-12-03 23:44:16.000000000","message":"whoa - what? chain up to super. I\u0027m guessing you\u0027re trying to avoid the deprecation warnings. We can discuss how to do this but the whole point here is to standardize as much as possible and most things here are correct.","commit_id":"9decc1a8212cb47394a14eb8e5305e02698c91e4"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"1add3b6e1e1345af5f5b20fa5278a8a69dc2f24a","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        with additional attributes used by that are not enforced"},{"line_number":66,"context_line":"        in other services"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        return oslo_context._DeprecatedPolicyValues({"},{"line_number":69,"context_line":"            \u0027user_id\u0027: self.user_id,"},{"line_number":70,"context_line":"            \u0027user_domain_id\u0027: self.user_domain_id,"},{"line_number":71,"context_line":"            \u0027project_id\u0027: self.project_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_bd306409","line":68,"in_reply_to":"df87a7cf_7d0dfc8e","updated":"2017-12-04 01:09:07.000000000","message":"Done","commit_id":"9decc1a8212cb47394a14eb8e5305e02698c91e4"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9860589ae26ac4f3c03a4b30b50b54657a8cac1e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.user_id \u003d kwargs.pop(\u0027user_id \u0027, None)"},{"line_number":28,"context_line":"        self.project_id \u003d kwargs.pop(\u0027project_id \u0027, None)"},{"line_number":29,"context_line":"        self.user_domain_id \u003d kwargs.pop(\u0027user_domain_id \u0027, None)"},{"line_number":30,"context_line":"        self.project_domain_id \u003d kwargs.pop(\u0027project_domain_id \u0027, None)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        self.project_name \u003d kwargs.pop(\u0027project_name\u0027, None)"},{"line_number":33,"context_line":"        self.username \u003d kwargs.pop(\u0027username\u0027, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_7ddc1b74","line":30,"updated":"2017-12-04 01:13:17.000000000","message":"delete all these. there are spaces in the string so it doesn\u0027t do anything and it\u0027ll get picked up in super()","commit_id":"1384a07b49918e7266ccd47f34979e249d8c8152"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc8f83bc081afd89723731ad1f8236e022364ab9","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.oauth_access_token_id \u003d kwargs.pop(\u0027oauth_access_token_id\u0027, None)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.authenticated \u003d kwargs.pop(\u0027authenticated\u0027, False)"},{"line_number":48,"context_line":"        self.group_ids \u003d kwargs.pop(\u0027group_ids\u0027, None)"},{"line_number":49,"context_line":"        super(RequestContext, self).__init__(**kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_ddf767f5","line":48,"updated":"2017-12-04 15:01:27.000000000","message":"missed this one.  This can be externalized","commit_id":"1384a07b49918e7266ccd47f34979e249d8c8152"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"ae115280b6e910c9eaca94a000644ac46c16bbbd","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    def __init__(self, **kwargs):"},{"line_number":27,"context_line":"        self.user_id \u003d kwargs.pop(\u0027user_id \u0027, None)"},{"line_number":28,"context_line":"        self.project_id \u003d kwargs.pop(\u0027project_id \u0027, None)"},{"line_number":29,"context_line":"        self.domain_id \u003d kwargs.pop(\u0027domain_id \u0027, None)"},{"line_number":30,"context_line":"        self.user_domain_id \u003d kwargs.pop(\u0027user_domain_id \u0027, None)"},{"line_number":31,"context_line":"        self.project_domain_id \u003d kwargs.pop(\u0027project_domain_id \u0027, None)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_d54ad37e","side":"PARENT","line":29,"updated":"2017-12-04 13:15:54.000000000","message":"Why don\u0027t we need these anymore? Is this because it\u0027s already part of oslo.context? If that is the case why do we need to keep things like project_name, which is also in oslo.context?","commit_id":"fd8f42448119f313225659a32d1c044ec6c1b241"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc8f83bc081afd89723731ad1f8236e022364ab9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    def __init__(self, **kwargs):"},{"line_number":27,"context_line":"        self.user_id \u003d kwargs.pop(\u0027user_id \u0027, None)"},{"line_number":28,"context_line":"        self.project_id \u003d kwargs.pop(\u0027project_id \u0027, None)"},{"line_number":29,"context_line":"        self.domain_id \u003d kwargs.pop(\u0027domain_id \u0027, None)"},{"line_number":30,"context_line":"        self.user_domain_id \u003d kwargs.pop(\u0027user_domain_id \u0027, None)"},{"line_number":31,"context_line":"        self.project_domain_id \u003d kwargs.pop(\u0027project_domain_id \u0027, None)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_0b36d804","side":"PARENT","line":29,"in_reply_to":"df87a7cf_d54ad37e","updated":"2017-12-04 15:01:27.000000000","message":"It has to do with how the Request was expected to be used versus how it is actually used.  Most, if not all, of the values in here can be removed, since they are not typically passed in via the kwargs.  I had stuck a few of my own values in here, and then removed them, and looks like I removed a couple too many.  Jamie and I agreed that we should clean this up, but in a follow on commit.  I\u0027ll put them back here to keep this patch simpler.","commit_id":"fd8f42448119f313225659a32d1c044ec6c1b241"}],"keystone/middleware/auth.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"688c3216e9072cb0e97540c7fdcd0cec58b115e2","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def fill_context(self, request):"},{"line_number":168,"context_line":"        # The request context stores itself in thread-local memory for logging."},{"line_number":169,"context_line":"        request_context \u003d context.RequestContext.from_environ("},{"line_number":170,"context_line":"            request.environ,"},{"line_number":171,"context_line":"            authenticated\u003dFalse,"},{"line_number":172,"context_line":"            overwrite\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_92657d20","line":169,"updated":"2017-11-29 18:51:57.000000000","message":"The base class does not add the headers; that is done by the AuthTOekn subclass.  In order to get the headers, you need code like this:\n\n  request.set_user_headers(request.token_auth.user)\n\nBut request.token_auth.user_auth is not always set.\n\nThe unit tests also seem to be giving a differently formatted value for the request ID:  mine is failing with:\n\n   testtools.matchers._impl.MismatchError: !\u003d:\n    reference \u003d \u00279779bb0f54654361a7b4ec0e05412d0b\u0027\n    actual    \u003d \u0027req-3fbeb1f1-fd56-4434-97f3-010ee67878bc\u0027","commit_id":"9d71f379dd1ce6151808a91829bdfcabe64e986b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"44f4bf385390065ab7d98cf1ab92563a80b7f263","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"            request_context \u003d context.RequestContext.from_environ("},{"line_number":219,"context_line":"                request.environ, **kwargs)"},{"line_number":220,"context_line":"            request.environ[context.REQUEST_CONTEXT_ENV] \u003d request_context"},{"line_number":221,"context_line":"            request_context.auth_token \u003d request.user_token"},{"line_number":222,"context_line":"            auth_context \u003d request_context.to_policy_values()"},{"line_number":223,"context_line":"            auth_context[\u0027token\u0027] \u003d token"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_7d82dcca","line":220,"updated":"2017-12-03 23:44:16.000000000","message":"nit: something about this logic feels wrong? why test all this and set kwargs before creating the context? \n\nCan\u0027t we create the context first and then just add the stuff we need after. It doesn\u0027t feel like there should be logic before the from_environ that influences what gets created.","commit_id":"9decc1a8212cb47394a14eb8e5305e02698c91e4"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"1add3b6e1e1345af5f5b20fa5278a8a69dc2f24a","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"            request_context \u003d context.RequestContext.from_environ("},{"line_number":219,"context_line":"                request.environ, **kwargs)"},{"line_number":220,"context_line":"            request.environ[context.REQUEST_CONTEXT_ENV] \u003d request_context"},{"line_number":221,"context_line":"            request_context.auth_token \u003d request.user_token"},{"line_number":222,"context_line":"            auth_context \u003d request_context.to_policy_values()"},{"line_number":223,"context_line":"            auth_context[\u0027token\u0027] \u003d token"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_fdfeeb03","line":220,"in_reply_to":"df87a7cf_7d82dcca","updated":"2017-12-04 01:09:07.000000000","message":"Done","commit_id":"9decc1a8212cb47394a14eb8e5305e02698c91e4"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9860589ae26ac4f3c03a4b30b50b54657a8cac1e","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            request_context.trust_id \u003d token.trust_id"},{"line_number":184,"context_line":"        if token.is_federated_user:"},{"line_number":185,"context_line":"            request_context.group_ids \u003d token.federation_group_ids"},{"line_number":186,"context_line":"        "},{"line_number":187,"context_line":"    def fill_context(self, request):"},{"line_number":188,"context_line":"        # The request context stores itself in thread-local memory for logging."},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_9dd9df84","line":186,"updated":"2017-12-04 01:13:17.000000000","message":"whitesapce","commit_id":"1384a07b49918e7266ccd47f34979e249d8c8152"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9860589ae26ac4f3c03a4b30b50b54657a8cac1e","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                                              token_data\u003drequest.token_info)"},{"line_number":220,"context_line":"            self._keystone_specific_values(token, request_context)"},{"line_number":221,"context_line":"            request_context.auth_token \u003d request.user_token"},{"line_number":222,"context_line":"            auth_context \u003d request_context.to_policy_values()"},{"line_number":223,"context_line":"            auth_context[\u0027token\u0027] \u003d token"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        elif self._validate_trusted_issuer(request):"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_fdd10b59","line":222,"updated":"2017-12-04 01:13:17.000000000","message":"this is a bit odd? why use to_policy_values for this? this is a huge dictionary today.","commit_id":"1384a07b49918e7266ccd47f34979e249d8c8152"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"ae115280b6e910c9eaca94a000644ac46c16bbbd","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        # The attributes of request_context are put into the logs. This is a"},{"line_number":239,"context_line":"        # common pattern for all the OpenStack services. In all the other"},{"line_number":240,"context_line":"        # projects these are IDs, so set the attributes to IDs here rather than"},{"line_number":241,"context_line":"        # the name."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        LOG.debug(\u0027RBAC: auth_context: %s\u0027, auth_context)"},{"line_number":244,"context_line":"        request.environ[authorization.AUTH_CONTEXT_ENV] \u003d auth_context"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_f5efd784","line":241,"updated":"2017-12-04 13:15:54.000000000","message":"It looks like you removed everything this comment applied to","commit_id":"ae914e4c4f5a2988a2bbca7f8cdd2c01e8f3cbe5"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc8f83bc081afd89723731ad1f8236e022364ab9","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        # The attributes of request_context are put into the logs. This is a"},{"line_number":239,"context_line":"        # common pattern for all the OpenStack services. In all the other"},{"line_number":240,"context_line":"        # projects these are IDs, so set the attributes to IDs here rather than"},{"line_number":241,"context_line":"        # the name."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        LOG.debug(\u0027RBAC: auth_context: %s\u0027, auth_context)"},{"line_number":244,"context_line":"        request.environ[authorization.AUTH_CONTEXT_ENV] \u003d auth_context"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_cb71d0e2","line":241,"in_reply_to":"df87a7cf_f5efd784","updated":"2017-12-04 15:01:27.000000000","message":"Ah, good point.  The context.py constructor does all this work now, and has for a long time.  But now this was overwriting values.\n\nRemoved the comment in the next revision","commit_id":"ae914e4c4f5a2988a2bbca7f8cdd2c01e8f3cbe5"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d7c1735586eb0f4c1674c128908f768bf30ad3d9","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        if token.domain_scoped:"},{"line_number":171,"context_line":"            # Domain scoped tokens should never have is_admin_project set"},{"line_number":172,"context_line":"            # Even if KSA defaults it otherwise.  The two mechanisms are"},{"line_number":173,"context_line":"            # parallel; only ione or the other should be used for access."},{"line_number":174,"context_line":"            request_context.is_admin_project \u003d False"},{"line_number":175,"context_line":"            request_context.domain_id \u003d token.domain_id"},{"line_number":176,"context_line":"            request_context.domain_name \u003d token.domain_name"}],"source_content_type":"text/x-python","patch_set":11,"id":"df87a7cf_bfb81c2a","line":173,"range":{"start_line":173,"start_character":29,"end_line":173,"end_character":33},"updated":"2017-12-05 22:10:21.000000000","message":"one*","commit_id":"f71a78db86632dccb391782e62da69a4627c7cad"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d7c1735586eb0f4c1674c128908f768bf30ad3d9","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        elif request.token_auth.has_user_token:"},{"line_number":217,"context_line":"            # Keystone enforces policy on some values that other services"},{"line_number":218,"context_line":"            # do not, and should not, use.  This adds them in to the context."},{"line_number":219,"context_line":"            token \u003d token_model.KeystoneToken(token_id\u003drequest.user_token,"},{"line_number":220,"context_line":"                                              token_data\u003drequest.token_info)"},{"line_number":221,"context_line":"            self._keystone_specific_values(token, request_context)"}],"source_content_type":"text/x-python","patch_set":11,"id":"df87a7cf_bf91fc9b","line":218,"range":{"start_line":218,"start_character":36,"end_line":218,"end_character":37},"updated":"2017-12-05 22:10:21.000000000","message":"s/,//","commit_id":"f71a78db86632dccb391782e62da69a4627c7cad"}]}
