)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9261be49b939c2d4ee245ad509d6113667559f7c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow loading auth plugins via overrides"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Swift configures auth_token purely by paste options, not oslo.config."},{"line_number":10,"context_line":"This means that we cannot rely on purely using the keystoneclient"},{"line_number":11,"context_line":"load_from_config_options for auth plugins."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a80dd14_746068a5","line":9,"updated":"2015-03-08 16:04:55.000000000","message":"swift should use oslo.config like everyone else. They\u0027ve got config files.","commit_id":"d0e9eb1f67f1d448f6fe464b6bdc8e5f21948f88"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"8d56dbceeab0271d5856c68993804e7f64d36926","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow loading auth plugins via overrides"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Swift configures auth_token purely by paste options, not oslo.config."},{"line_number":10,"context_line":"This means that we cannot rely on purely using the keystoneclient"},{"line_number":11,"context_line":"load_from_config_options for auth plugins."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a80dd14_da713ba9","line":9,"in_reply_to":"9a80dd14_746068a5","updated":"2015-03-08 22:01:49.000000000","message":"I raised this in #openstack-swift. Apparently they never have and don\u0027t see the need to and that it would be a lot of work. Even the workers they have get configured by paste.\n\nI think they should do it - but if you look at swift requirements you see a remarkable lack of ... well everything: https://github.com/openstack/swift/blob/master/requirements.txt \n\nNo oslo.* no standard wsgi, not even like webob. If we want this to happen i think it\u0027s going to be on us to change.","commit_id":"d0e9eb1f67f1d448f6fe464b6bdc8e5f21948f88"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"809f84b8f9e81997f08184ac34c30a5ac98a6f47","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Copy the logic from keystoneclient regarding auth plugin loading from"},{"line_number":14,"context_line":"config files and make it specific to the _conf_get that auth_token"},{"line_number":15,"context_line":"middleware uses so that the auth plugin options obey options from paste"},{"line_number":16,"context_line":"as other options do."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I54ac4c566cb798196ea18e24d4ce868450f269f3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a80dd14_f4c5388e","line":15,"updated":"2015-03-08 15:57:17.000000000","message":"why are we supporting loading options from paste?","commit_id":"d0e9eb1f67f1d448f6fe464b6bdc8e5f21948f88"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"8d56dbceeab0271d5856c68993804e7f64d36926","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Copy the logic from keystoneclient regarding auth plugin loading from"},{"line_number":14,"context_line":"config files and make it specific to the _conf_get that auth_token"},{"line_number":15,"context_line":"middleware uses so that the auth plugin options obey options from paste"},{"line_number":16,"context_line":"as other options do."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I54ac4c566cb798196ea18e24d4ce868450f269f3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a80dd14_1a6753ea","line":15,"in_reply_to":"9a80dd14_f4c5388e","updated":"2015-03-08 22:01:49.000000000","message":"swift are not the only ones but they are the only ones i\u0027ve seen that can\u0027t be deprecated.","commit_id":"d0e9eb1f67f1d448f6fe464b6bdc8e5f21948f88"}],"keystonemiddleware/auth_token/__init__.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9261be49b939c2d4ee245ad509d6113667559f7c","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"        # function provided by keystoneclient. Unfortunately we can\u0027t because"},{"line_number":1023,"context_line":"        # of the way services mix and match between providing the CONF object"},{"line_number":1024,"context_line":"        # and paste options. This should be kept up to date with the logic in"},{"line_number":1025,"context_line":"        # keystoneclient.auth.load_from_conf_options. DO NOT COPY THIS."},{"line_number":1026,"context_line":"        group \u003d self._conf_get(\u0027auth_section\u0027) or _base.AUTHTOKEN_GROUP"},{"line_number":1027,"context_line":"        plugin_name \u003d self._conf_get(\u0027auth_plugin\u0027, group\u003dgroup)"},{"line_number":1028,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_b45660cc","line":1025,"updated":"2015-03-08 16:04:55.000000000","message":"keystoneclient.auth.load_from_conf_options should be updated so that it can work this way (e.g., passing in an argument or something) rather than copy-pasting and hoping that we can keep it in sync. Trying to keep code in sync hasn\u0027t worked in the past.","commit_id":"d0e9eb1f67f1d448f6fe464b6bdc8e5f21948f88"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"8d56dbceeab0271d5856c68993804e7f64d36926","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"        # function provided by keystoneclient. Unfortunately we can\u0027t because"},{"line_number":1023,"context_line":"        # of the way services mix and match between providing the CONF object"},{"line_number":1024,"context_line":"        # and paste options. This should be kept up to date with the logic in"},{"line_number":1025,"context_line":"        # keystoneclient.auth.load_from_conf_options. DO NOT COPY THIS."},{"line_number":1026,"context_line":"        group \u003d self._conf_get(\u0027auth_section\u0027) or _base.AUTHTOKEN_GROUP"},{"line_number":1027,"context_line":"        plugin_name \u003d self._conf_get(\u0027auth_plugin\u0027, group\u003dgroup)"},{"line_number":1028,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_baa3a7fe","line":1025,"in_reply_to":"9a80dd14_b45660cc","updated":"2015-03-08 22:01:49.000000000","message":"I don\u0027t know what to add here on the ksc side. The only generic way i can see is \nload_from_conf_options_with_getter or something and pass _conf_get as a getter function. This is pretty ugly. \n\nI really want something that will work with swift to be in the Kilo release. If we do it like this then even though the exact mechanisms may diverge over time it can only end up that auth_token is slower to update than ksc. So long as they both don\u0027t break compatibility going forward if auth_token doesn\u0027t have the same features as ksc immediately that\u0027s annoying but can be dealt with.","commit_id":"d0e9eb1f67f1d448f6fe464b6bdc8e5f21948f88"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ac765e555c400f9ff74abe5308e391307d508d27","unresolved":false,"context_lines":[{"line_number":1038,"context_line":"            plugin_class \u003d auth.get_plugin_class(plugin_name)"},{"line_number":1039,"context_line":"        else:"},{"line_number":1040,"context_line":"            plugin_class \u003d _auth.AuthTokenPlugin"},{"line_number":1041,"context_line":"            plugin_kwargs[\u0027log\u0027] \u003d self._LOG"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"        plugin_opts \u003d plugin_class.get_options()"},{"line_number":1044,"context_line":"        CONF.register_opts(plugin_opts, group\u003dgroup)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_4ddc5b19","line":1041,"updated":"2015-03-10 20:44:26.000000000","message":"a comment why this is different would be useful... maybe it\u0027s not worth it, or do all the other plugins not work well?","commit_id":"de26c279bb3cb16e629f035e4f035fc332fb159d"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"11a6b70ed4db7f851d4adec787bc7a76d388dd23","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"        else:"},{"line_number":1040,"context_line":"            plugin_class \u003d _auth.AuthTokenPlugin"},{"line_number":1041,"context_line":"            # logger object is a required parameter of the default plugin"},{"line_number":1042,"context_line":"            plugin_kwargs[\u0027log\u0027] \u003d self._LOG"},{"line_number":1043,"context_line":""},{"line_number":1044,"context_line":"        plugin_opts \u003d plugin_class.get_options()"},{"line_number":1045,"context_line":"        CONF.register_opts(plugin_opts, group\u003dgroup)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_fb114054","line":1042,"updated":"2015-03-10 23:29:05.000000000","message":"Would there be a benefit to always passing LOG to every plugin?\n\nI\u0027m fine with this as is.","commit_id":"64d81c8dabf234d416132082a7a8257c3a824932"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fc35f5bcfb68fa2653a4733f6aa6d5276413b3d3","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"        else:"},{"line_number":1040,"context_line":"            plugin_class \u003d _auth.AuthTokenPlugin"},{"line_number":1041,"context_line":"            # logger object is a required parameter of the default plugin"},{"line_number":1042,"context_line":"            plugin_kwargs[\u0027log\u0027] \u003d self._LOG"},{"line_number":1043,"context_line":""},{"line_number":1044,"context_line":"        plugin_opts \u003d plugin_class.get_options()"},{"line_number":1045,"context_line":"        CONF.register_opts(plugin_opts, group\u003dgroup)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_1bca946e","line":1042,"in_reply_to":"9a80dd14_fb114054","updated":"2015-03-10 23:37:36.000000000","message":"In a way probably - however that would require all plugins to know how to accept a log object which they don\u0027t now.","commit_id":"64d81c8dabf234d416132082a7a8257c3a824932"}],"keystonemiddleware/tests/auth_token/test_auth_token_middleware.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ac765e555c400f9ff74abe5308e391307d508d27","unresolved":false,"context_lines":[{"line_number":2628,"context_line":"        # then we use the url returned from discovery to actually auth"},{"line_number":2629,"context_line":"        self.requests.post(self.DISC_URL + \u0027/v3/auth/tokens\u0027,"},{"line_number":2630,"context_line":"                           json\u003dadmin_token,"},{"line_number":2631,"context_line":"                           headers\u003d{\u0027X-Subject-Token\u0027: self.admin_token_id})"},{"line_number":2632,"context_line":""},{"line_number":2633,"context_line":"        # user_token is the data from the user\u0027s inputted token"},{"line_number":2634,"context_line":"        self.user_token_id \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_ad3f97d5","line":2631,"updated":"2015-03-10 20:44:26.000000000","message":"why is this all happening in setUp?","commit_id":"de26c279bb3cb16e629f035e4f035fc332fb159d"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"11a6b70ed4db7f851d4adec787bc7a76d388dd23","unresolved":false,"context_lines":[{"line_number":2632,"context_line":""},{"line_number":2633,"context_line":"    def good_request(self, app):"},{"line_number":2634,"context_line":"        # admin_token is the token that the service will get back from auth"},{"line_number":2635,"context_line":"        self.admin_token_id \u003d uuid.uuid4().hex"},{"line_number":2636,"context_line":"        admin_token \u003d fixture.V3Token(project_id\u003dself.project_id)"},{"line_number":2637,"context_line":"        s \u003d admin_token.add_service(\u0027identity\u0027, name\u003d\u0027keystone\u0027)"},{"line_number":2638,"context_line":"        s.add_standard_endpoints(admin\u003dself.KEYSTONE_URL)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_1bc0d47b","line":2635,"updated":"2015-03-10 23:29:05.000000000","message":"Is there a benefit to storing this in the process of the request? This looks to be only used in this method, and could be a local variable vs an instance variable.","commit_id":"64d81c8dabf234d416132082a7a8257c3a824932"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fc35f5bcfb68fa2653a4733f6aa6d5276413b3d3","unresolved":false,"context_lines":[{"line_number":2632,"context_line":""},{"line_number":2633,"context_line":"    def good_request(self, app):"},{"line_number":2634,"context_line":"        # admin_token is the token that the service will get back from auth"},{"line_number":2635,"context_line":"        self.admin_token_id \u003d uuid.uuid4().hex"},{"line_number":2636,"context_line":"        admin_token \u003d fixture.V3Token(project_id\u003dself.project_id)"},{"line_number":2637,"context_line":"        s \u003d admin_token.add_service(\u0027identity\u0027, name\u003d\u0027keystone\u0027)"},{"line_number":2638,"context_line":"        s.add_standard_endpoints(admin\u003dself.KEYSTONE_URL)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_bbdc2848","line":2635,"in_reply_to":"9a80dd14_1bc0d47b","updated":"2015-03-10 23:37:36.000000000","message":"they used to exist in setUp and then were required in other sections, looks like that is no longer the case.","commit_id":"64d81c8dabf234d416132082a7a8257c3a824932"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"11a6b70ed4db7f851d4adec787bc7a76d388dd23","unresolved":false,"context_lines":[{"line_number":2642,"context_line":"                           headers\u003d{\u0027X-Subject-Token\u0027: self.admin_token_id})"},{"line_number":2643,"context_line":""},{"line_number":2644,"context_line":"        # user_token is the data from the user\u0027s inputted token"},{"line_number":2645,"context_line":"        self.user_token_id \u003d uuid.uuid4().hex"},{"line_number":2646,"context_line":"        user_token \u003d fixture.V3Token()"},{"line_number":2647,"context_line":"        user_token.set_project_scope()"},{"line_number":2648,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_fbc22085","line":2645,"updated":"2015-03-10 23:29:05.000000000","message":"Same as above","commit_id":"64d81c8dabf234d416132082a7a8257c3a824932"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fc35f5bcfb68fa2653a4733f6aa6d5276413b3d3","unresolved":false,"context_lines":[{"line_number":2642,"context_line":"                           headers\u003d{\u0027X-Subject-Token\u0027: self.admin_token_id})"},{"line_number":2643,"context_line":""},{"line_number":2644,"context_line":"        # user_token is the data from the user\u0027s inputted token"},{"line_number":2645,"context_line":"        self.user_token_id \u003d uuid.uuid4().hex"},{"line_number":2646,"context_line":"        user_token \u003d fixture.V3Token()"},{"line_number":2647,"context_line":"        user_token.set_project_scope()"},{"line_number":2648,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_dbe1dcff","line":2645,"in_reply_to":"9a80dd14_fbc22085","updated":"2015-03-10 23:37:36.000000000","message":"Done","commit_id":"64d81c8dabf234d416132082a7a8257c3a824932"}]}
