)]}'
{"etc/keystone-paste.ini":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"5fd31fc147d05d66a783541ca187ceafe34b4110","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5f7c97a3_45dff1d5","updated":"2018-06-05 14:01:40.000000000","message":"PLease keep this file but with a comment explaining that it is no longer used and any changes to it will be ignored.  That way the package maintainers can remove it in a future release without breaking things, and customizations that no longer work have a reason easy to find.","commit_id":"28b7c9957c7a0dfce6d2d28f03c2cc9f32e718d8"}],"keystone/catalog/backends/templated.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7b63bfa11b9a82d7220175c20544b3e4aa74b99d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    values to be interpolated by standard python string interpolation that look"},{"line_number":67,"context_line":"    like (the % is replaced by a $:"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"      http://localhost:$(public_port)s/"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    When expanding the template it will pass in a dict made up of the conf"},{"line_number":72,"context_line":"    instance plus a few additional key-values, notably project_id and user_id."}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_a6170655","line":69,"updated":"2018-06-04 15:47:28.000000000","message":"nit: add a ) for completeness?","commit_id":"28b7c9957c7a0dfce6d2d28f03c2cc9f32e718d8"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"b4add23b76c648ae419093b6f2d304a13a59c48f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    values to be interpolated by standard python string interpolation that look"},{"line_number":67,"context_line":"    like (the % is replaced by a $:"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"      http://localhost:$(public_port)s/"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    When expanding the template it will pass in a dict made up of the conf"},{"line_number":72,"context_line":"    instance plus a few additional key-values, notably project_id and user_id."}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_b79732ec","line":69,"in_reply_to":"5f7c97a3_a6170655","updated":"2018-06-04 17:42:12.000000000","message":"In next patch.","commit_id":"28b7c9957c7a0dfce6d2d28f03c2cc9f32e718d8"}],"keystone/conf/paste_deploy.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7b63bfa11b9a82d7220175c20544b3e4aa74b99d","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"config_file \u003d cfg.StrOpt("},{"line_number":19,"context_line":"    \u0027config_file\u0027,"},{"line_number":20,"context_line":"    default\u003d\u0027keystone-paste.ini\u0027,"},{"line_number":21,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":22,"context_line":"Name of (or absolute path to) the Paste Deploy configuration file that composes"},{"line_number":23,"context_line":"middleware and the keystone application itself into actual WSGI entry points."}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_a9fcb70c","side":"PARENT","line":20,"range":{"start_line":20,"start_character":13,"end_line":20,"end_character":31},"updated":"2018-06-04 15:47:28.000000000","message":"What happens if someone has deployed a custom paste file that breaks when they convert to using flask?","commit_id":"edbd8484882ddf79b5d2876c56035d60128e43ae"}],"keystone/middleware/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7b63bfa11b9a82d7220175c20544b3e4aa74b99d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    @versionutils.deprecated("},{"line_number":29,"context_line":"        as_of\u003dversionutils.deprecated.ROCKY,"},{"line_number":30,"context_line":"        what\u003d\u0027TokenAuthMiddleware in the paste-ini pipeline.\u0027,"},{"line_number":31,"context_line":"        remove_in\u003d+2)"},{"line_number":32,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":33,"context_line":"        super(TokenAuthMiddleware, self).__init__(*args, **kwargs)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_0917eb47","side":"PARENT","line":31,"updated":"2018-06-04 15:47:28.000000000","message":"According to this, we can\u0027t remove this bit of middleware until T?","commit_id":"edbd8484882ddf79b5d2876c56035d60128e43ae"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"786115801242c76e17244cdb4430d7d742d83916","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    @versionutils.deprecated("},{"line_number":29,"context_line":"        as_of\u003dversionutils.deprecated.ROCKY,"},{"line_number":30,"context_line":"        what\u003d\u0027TokenAuthMiddleware in the paste-ini pipeline.\u0027,"},{"line_number":31,"context_line":"        remove_in\u003d+2)"},{"line_number":32,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":33,"context_line":"        super(TokenAuthMiddleware, self).__init__(*args, **kwargs)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_ecedddf0","side":"PARENT","line":31,"in_reply_to":"5f7c97a3_0917eb47","updated":"2018-06-04 16:31:00.000000000","message":"With flask, we aren\u0027t loading the middleware and someone can\u0027t be using it by accidnet, we don\u0027t break anyone. This is only kept around for that specific case.","commit_id":"edbd8484882ddf79b5d2876c56035d60128e43ae"}],"keystone/server/flask/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7b63bfa11b9a82d7220175c20544b3e4aa74b99d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    _Middleware(namespace\u003d\u0027keystone.server_middleware\u0027,"},{"line_number":66,"context_line":"                ep\u003d\u0027build_auth_context\u0027,"},{"line_number":67,"context_line":"                conf\u003d{}),"},{"line_number":68,"context_line":"    _Middleware(namespace\u003d\u0027keystone.server_middleware\u0027,"},{"line_number":69,"context_line":"                ep\u003d\u0027token_auth\u0027,"},{"line_number":70,"context_line":"                conf\u003d{}),"},{"line_number":71,"context_line":")"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_493643ea","side":"PARENT","line":69,"range":{"start_line":68,"start_character":0,"end_line":69,"end_character":32},"updated":"2018-06-04 15:47:28.000000000","message":"We have to keep this around until T according to the deprecation message.","commit_id":"edbd8484882ddf79b5d2876c56035d60128e43ae"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"b4add23b76c648ae419093b6f2d304a13a59c48f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    _Middleware(namespace\u003d\u0027keystone.server_middleware\u0027,"},{"line_number":66,"context_line":"                ep\u003d\u0027build_auth_context\u0027,"},{"line_number":67,"context_line":"                conf\u003d{}),"},{"line_number":68,"context_line":"    _Middleware(namespace\u003d\u0027keystone.server_middleware\u0027,"},{"line_number":69,"context_line":"                ep\u003d\u0027token_auth\u0027,"},{"line_number":70,"context_line":"                conf\u003d{}),"},{"line_number":71,"context_line":")"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_57b57e7d","side":"PARENT","line":69,"range":{"start_line":68,"start_character":0,"end_line":69,"end_character":32},"in_reply_to":"5f7c97a3_493643ea","updated":"2018-06-04 17:42:12.000000000","message":"Nope, see other comment. The only reason we kept it around was to avoid breaking someone\u0027s un-updated paste-ini. This skirts the issue completely.","commit_id":"edbd8484882ddf79b5d2876c56035d60128e43ae"}],"keystone/server/wsgi.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7b63bfa11b9a82d7220175c20544b3e4aa74b99d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"# import core and call it directly, eventually keystone_flask will not"},{"line_number":20,"context_line":"# export all the symbols from keystone.flask.core only specific ones that"},{"line_number":21,"context_line":"# are meant for public consumption"},{"line_number":22,"context_line":"def initialize_admin_application():"},{"line_number":23,"context_line":"    \"\"\"Utilized by the WSGI file entry points generated via PBR.\"\"\""},{"line_number":24,"context_line":"    return keystone_flask.initialize_application("},{"line_number":25,"context_line":"        name\u003d\u0027admin\u0027, config_files\u003dcore._get_config_files())"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_8959bb36","line":22,"updated":"2018-06-04 15:47:28.000000000","message":"_way_ cleaner!","commit_id":"28b7c9957c7a0dfce6d2d28f03c2cc9f32e718d8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7b63bfa11b9a82d7220175c20544b3e4aa74b99d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"def initialize_public_application():"},{"line_number":29,"context_line":"    \"\"\"Utilized by the WSGI file entry points generated via PBR.\"\"\""},{"line_number":30,"context_line":"    return keystone_flask.initialize_application("},{"line_number":31,"context_line":"        name\u003d\u0027public\u0027, config_files\u003dcore._get_config_files())"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_e9b5cf33","line":31,"updated":"2018-06-04 15:47:28.000000000","message":"We could reduce duplication here, too:\n\n  def _initialize_application(app_name):\n      return keystone_flask.initialize_application(\n          name\u003dapp_name, config_files\u003dcore._get_config_files())\n\n\n  def initialize_admin_application():\n      return _initialize_application(\u0027admin\u0027)\n\n  def initialize_public_application():\n      return _initialize_application(\u0027public\u0027)","commit_id":"28b7c9957c7a0dfce6d2d28f03c2cc9f32e718d8"}],"keystone/tests/unit/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7b63bfa11b9a82d7220175c20544b3e4aa74b99d","unresolved":false,"context_lines":[{"line_number":129,"context_line":"# favor of using entry points. This caused tests to slow to a crawl"},{"line_number":130,"context_line":"# since we reload the application object for each RESTful test. This"},{"line_number":131,"context_line":"# monkey-patching adds caching to paste deploy\u0027s egg lookup."},{"line_number":132,"context_line":"loadwsgi.EggLoader \u003d EggLoader"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"@atexit.register"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_4992c3a1","side":"PARENT","line":132,"updated":"2018-06-04 15:47:28.000000000","message":"Do we still have the slow down?","commit_id":"edbd8484882ddf79b5d2876c56035d60128e43ae"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c0779fc7ea3d2fc5f451abea101bd20eae84ca30","unresolved":false,"context_lines":[{"line_number":129,"context_line":"# favor of using entry points. This caused tests to slow to a crawl"},{"line_number":130,"context_line":"# since we reload the application object for each RESTful test. This"},{"line_number":131,"context_line":"# monkey-patching adds caching to paste deploy\u0027s egg lookup."},{"line_number":132,"context_line":"loadwsgi.EggLoader \u003d EggLoader"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"@atexit.register"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_a99ef766","side":"PARENT","line":132,"in_reply_to":"5f7c97a3_4992c3a1","updated":"2018-06-04 15:48:16.000000000","message":"Apparently not? I ran keystone unit tests without this series of changes and the tests execute in ~100 seconds. With this change they\u0027re running about 7 seconds faster.","commit_id":"edbd8484882ddf79b5d2876c56035d60128e43ae"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"b4add23b76c648ae419093b6f2d304a13a59c48f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"# favor of using entry points. This caused tests to slow to a crawl"},{"line_number":130,"context_line":"# since we reload the application object for each RESTful test. This"},{"line_number":131,"context_line":"# monkey-patching adds caching to paste deploy\u0027s egg lookup."},{"line_number":132,"context_line":"loadwsgi.EggLoader \u003d EggLoader"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"@atexit.register"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_17af062c","side":"PARENT","line":132,"in_reply_to":"5f7c97a3_a99ef766","updated":"2018-06-04 17:42:12.000000000","message":"Less paste-loading, more direct!","commit_id":"edbd8484882ddf79b5d2876c56035d60128e43ae"}]}
