)]}'
{"oslo_middleware/opts.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5aea02e9b7ced25de9ce020c77d8b261d8b0bed3","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    :returns: a list of (group_name, opts) tuples"},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":"    return ["},{"line_number":48,"context_line":"        (\u0027oslo_middleware\u0027, copy.deepcopy(sizelimit._opts)),"},{"line_number":49,"context_line":"        (\u0027oslo_middleware\u0027, copy.deepcopy(ssl.OPTS)),"},{"line_number":50,"context_line":"        (\u0027cors\u0027, copy.deepcopy(cors.CORS_OPTS)),"},{"line_number":51,"context_line":"        (\u0027cors.subdomain\u0027, copy.deepcopy(cors.CORS_OPTS))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_c168ea89","line":48,"updated":"2015-05-04 15:34:41.000000000","message":"you can do something similar to this: https://github.com/openstack/ceilometer/blob/master/ceilometer/opts.py to list them both under oslo_middleware section","commit_id":"8fbd1a8cd2eb2b915653a74011603ca515fadc1d"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"cb58aee26d225632ecd28ff31c8fa82f7f02b1ac","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    :returns: a list of (group_name, opts) tuples"},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":"    return ["},{"line_number":48,"context_line":"        (\u0027oslo_middleware\u0027, copy.deepcopy(sizelimit._opts)),"},{"line_number":49,"context_line":"        (\u0027oslo_middleware\u0027, copy.deepcopy(ssl.OPTS)),"},{"line_number":50,"context_line":"        (\u0027cors\u0027, copy.deepcopy(cors.CORS_OPTS)),"},{"line_number":51,"context_line":"        (\u0027cors.subdomain\u0027, copy.deepcopy(cors.CORS_OPTS))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_39e112ff","line":48,"in_reply_to":"3acd31a7_c168ea89","updated":"2015-05-04 15:57:41.000000000","message":"Done","commit_id":"8fbd1a8cd2eb2b915653a74011603ca515fadc1d"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"5d96dd999397bc8fdebcabd5fc9147686e1e53af","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    :returns: a list of (group_name, opts) tuples"},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":"    return ["},{"line_number":49,"context_line":"        (\u0027oslo_middleware\u0027, itertools.chain(sizelimit._opts, ssl.OPTS)),"},{"line_number":50,"context_line":"        (\u0027cors\u0027, copy.deepcopy(cors.CORS_OPTS)),"},{"line_number":51,"context_line":"        (\u0027cors.subdomain\u0027, copy.deepcopy(cors.CORS_OPTS))"},{"line_number":52,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":4,"id":"5afe65bd_a7e3de04","line":49,"updated":"2015-06-03 01:44:07.000000000","message":"I think this breaks the list_opts expectations by returning a thing that can only be iterated once. E.g. wrap a list() around it or use +.","commit_id":"f1b5c8f15e9d5996b52fded5b795f32ad5d7bb5a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"5963dbd72677e9c3af40d51d97b51800525ac8a8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    :returns: a list of (group_name, opts) tuples"},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":"    return ["},{"line_number":49,"context_line":"        (\u0027oslo_middleware\u0027, itertools.chain(sizelimit._opts, ssl.OPTS)),"},{"line_number":50,"context_line":"        (\u0027cors\u0027, copy.deepcopy(cors.CORS_OPTS)),"},{"line_number":51,"context_line":"        (\u0027cors.subdomain\u0027, copy.deepcopy(cors.CORS_OPTS))"},{"line_number":52,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_741f8d6c","line":49,"in_reply_to":"5afe65bd_a7e3de04","updated":"2015-06-09 11:49:54.000000000","message":"Done","commit_id":"f1b5c8f15e9d5996b52fded5b795f32ad5d7bb5a"}],"oslo_middleware/ssl.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5aea02e9b7ced25de9ce020c77d8b261d8b0bed3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# implied. See the License for the specific language governing permissions and"},{"line_number":11,"context_line":"# limitations under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Default allowed headers"},{"line_number":14,"context_line":"from oslo.config import cfg"},{"line_number":15,"context_line":"from oslo_middleware import base"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_2c22f552","line":13,"updated":"2015-05-04 15:34:41.000000000","message":"i\u0027m not sure what this comment is referencing?","commit_id":"8fbd1a8cd2eb2b915653a74011603ca515fadc1d"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"21cc3d73fda8ab6566b547830ec0da075c2ea393","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# implied. See the License for the specific language governing permissions and"},{"line_number":11,"context_line":"# limitations under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Default allowed headers"},{"line_number":14,"context_line":"from oslo.config import cfg"},{"line_number":15,"context_line":"from oslo_middleware import base"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_27fa0e76","line":13,"in_reply_to":"3acd31a7_2c22f552","updated":"2015-05-04 15:57:28.000000000","message":"nothing :)\n\n\u003d\u003e Done","commit_id":"8fbd1a8cd2eb2b915653a74011603ca515fadc1d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5aea02e9b7ced25de9ce020c77d8b261d8b0bed3","unresolved":false,"context_lines":[{"line_number":18,"context_line":"OPTS \u003d ["},{"line_number":19,"context_line":"    cfg.StrOpt(\u0027secure_proxy_ssl_header\u0027,"},{"line_number":20,"context_line":"               default\u003d\u0027X-Forwarded-Proto\u0027,"},{"line_number":21,"context_line":"               help\u003d\"The HTTP Header that will be used to determine which \""},{"line_number":22,"context_line":"                    \"the original request protocol scheme was, even if it was \""},{"line_number":23,"context_line":"                    \"hidden by an SSL termination proxy.\")"},{"line_number":24,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_6127d664","line":21,"updated":"2015-05-04 15:34:41.000000000","message":"s/which/what/","commit_id":"8fbd1a8cd2eb2b915653a74011603ca515fadc1d"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"21cc3d73fda8ab6566b547830ec0da075c2ea393","unresolved":false,"context_lines":[{"line_number":18,"context_line":"OPTS \u003d ["},{"line_number":19,"context_line":"    cfg.StrOpt(\u0027secure_proxy_ssl_header\u0027,"},{"line_number":20,"context_line":"               default\u003d\u0027X-Forwarded-Proto\u0027,"},{"line_number":21,"context_line":"               help\u003d\"The HTTP Header that will be used to determine which \""},{"line_number":22,"context_line":"                    \"the original request protocol scheme was, even if it was \""},{"line_number":23,"context_line":"                    \"hidden by an SSL termination proxy.\")"},{"line_number":24,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_c7d7daeb","line":21,"in_reply_to":"3acd31a7_6127d664","updated":"2015-05-04 15:57:28.000000000","message":"Done","commit_id":"8fbd1a8cd2eb2b915653a74011603ca515fadc1d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e6686a55df056f47c03d96cd57f2cda8ea3f215a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"cfg.CONF.register_opts(OPTS, group\u003d\u0027oslo_middleware\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class SSLMiddleware(base.Middleware):"},{"line_number":28,"context_line":"    \"\"\"SSL termination proxies middleware."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    This middleware overloads wsgi.url_scheme with the one provided in"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aca2d91_a6906244","line":27,"updated":"2015-05-08 14:36:09.000000000","message":"we\u0027ve generally suggested to not use Middleware in name to avoid redundancy (ie. it\u0027s already in oslo.middleware) that said, i\u0027m ok with this considering it\u0027s not too long with it included.","commit_id":"f1b5c8f15e9d5996b52fded5b795f32ad5d7bb5a"}],"oslo_middleware/tests/test_ssl.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5aea02e9b7ced25de9ce020c77d8b261d8b0bed3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def _test_scheme(self, expected, headers):"},{"line_number":31,"context_line":"        middleware \u003d ssl.SSLMiddleware(None)"},{"line_number":32,"context_line":"        request \u003d webob.Request.blank(\u0027http://example.com/\u0027, headers\u003dheaders)"},{"line_number":33,"context_line":"        self.assertIsNone(middleware.process_request(request))"},{"line_number":34,"context_line":"        self.assertEqual(expected, request.scheme)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_without_forwarded_protocol(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_47ce2ab5","line":33,"updated":"2015-05-04 15:34:41.000000000","message":"not sure what this assertion is for.","commit_id":"8fbd1a8cd2eb2b915653a74011603ca515fadc1d"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"21cc3d73fda8ab6566b547830ec0da075c2ea393","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def _test_scheme(self, expected, headers):"},{"line_number":31,"context_line":"        middleware \u003d ssl.SSLMiddleware(None)"},{"line_number":32,"context_line":"        request \u003d webob.Request.blank(\u0027http://example.com/\u0027, headers\u003dheaders)"},{"line_number":33,"context_line":"        self.assertIsNone(middleware.process_request(request))"},{"line_number":34,"context_line":"        self.assertEqual(expected, request.scheme)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_without_forwarded_protocol(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_a7b73ed7","line":33,"in_reply_to":"3acd31a7_47ce2ab5","updated":"2015-05-04 15:57:28.000000000","message":"from https://github.com/openstack/oslo.middleware/blob/master/oslo_middleware/base.py:\n\n\"\"\"If this [the middleware] returns None, the next application down the stack will be executed. If it returns a response then that response will be returned and execution will stop here.\"\"\"\n\nSo this assertion ensures the middleware doesn\u0027t stop the execution.\n\nI will clarify with a comment.","commit_id":"8fbd1a8cd2eb2b915653a74011603ca515fadc1d"}]}
