)]}'
{"ceilometer/objectstore/swift_middleware.py":[{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"0d6b7323e24fa8d3503d0bcd7bb5c8336a684a98","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from swift.common.swob import Request"},{"line_number":30,"context_line":"from swift.common.utils import split_path"},{"line_number":31,"context_line":"from swift.common.middleware.proxy_logging import InputProxy"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class CeilometerMiddleware(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F7O0%3D","line":31,"updated":"2012-12-20 14:25:56.000000000","message":"This should probably go to common but that\u0027s out of scope of this review.","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e58221621a0c760af8ea0189e91fc55aea161891","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from swift.common.swob import Request"},{"line_number":30,"context_line":"from swift.common.utils import split_path"},{"line_number":31,"context_line":"from swift.common.middleware.proxy_logging import InputProxy"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class CeilometerMiddleware(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F7N0%3D","line":31,"in_reply_to":"AAAAM3%2F%2F7O0%3D","updated":"2012-12-20 14:32:23.000000000","message":"I was thinking about this too. I\u0027ll send a patch to Swift then.","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"85dc36711d0369a35d1718aad6ffbdbe27807f00","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from swift.common.swob import Request"},{"line_number":30,"context_line":"from swift.common.utils import split_path"},{"line_number":31,"context_line":"from swift.common.middleware.proxy_logging import InputProxy"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class CeilometerMiddleware(object):"},{"line_number":35,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F7NY%3D","line":32,"updated":"2012-12-20 14:42:58.000000000","message":"thanks that would be useful.","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a13060d48cb3f21a9922718544b2b305f619d6ac","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from swift.common.swob import Request"},{"line_number":30,"context_line":"from swift.common.utils import split_path"},{"line_number":31,"context_line":"from swift.common.middleware.proxy_logging import InputProxy"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class CeilometerMiddleware(object):"},{"line_number":35,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F7NM%3D","line":32,"in_reply_to":"AAAAM3%2F%2F7NY%3D","updated":"2012-12-20 15:05:38.000000000","message":"Done","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"0d6b7323e24fa8d3503d0bcd7bb5c8336a684a98","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                                        user_id\u003denv.get(\u0027HTTP_X_USER_ID\u0027),"},{"line_number":86,"context_line":"                                        project_id\u003denv.get(\u0027HTTP_X_TENANT_ID\u0027),"},{"line_number":87,"context_line":"                                        resource_id\u003daccount.partition("},{"line_number":88,"context_line":"                                            \u0027AUTH_\u0027)[2],"},{"line_number":89,"context_line":"                                        timestamp\u003dnow,"},{"line_number":90,"context_line":"                                        resource_metadata\u003d{"},{"line_number":91,"context_line":"                                            \"path\": req.path,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F7OU%3D","line":88,"updated":"2012-12-20 14:25:56.000000000","message":"will fail when there is multiple resellers a configuration variable?","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e58221621a0c760af8ea0189e91fc55aea161891","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                                        user_id\u003denv.get(\u0027HTTP_X_USER_ID\u0027),"},{"line_number":86,"context_line":"                                        project_id\u003denv.get(\u0027HTTP_X_TENANT_ID\u0027),"},{"line_number":87,"context_line":"                                        resource_id\u003daccount.partition("},{"line_number":88,"context_line":"                                            \u0027AUTH_\u0027)[2],"},{"line_number":89,"context_line":"                                        timestamp\u003dnow,"},{"line_number":90,"context_line":"                                        resource_metadata\u003d{"},{"line_number":91,"context_line":"                                            \"path\": req.path,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F7Nw%3D","line":88,"in_reply_to":"AAAAM3%2F%2F7OU%3D","updated":"2012-12-20 14:32:23.000000000","message":"Not sure what you mean?","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"85dc36711d0369a35d1718aad6ffbdbe27807f00","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                        project_id\u003denv.get(\u0027HTTP_X_TENANT_ID\u0027),"},{"line_number":87,"context_line":"                                        resource_id\u003daccount.partition("},{"line_number":88,"context_line":"                                            \u0027AUTH_\u0027)[2],"},{"line_number":89,"context_line":"                                        timestamp\u003dnow,"},{"line_number":90,"context_line":"                                        resource_metadata\u003d{"},{"line_number":91,"context_line":"                                            \"path\": req.path,"},{"line_number":92,"context_line":"                                            \"version\": version,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F7NU%3D","line":89,"updated":"2012-12-20 14:42:58.000000000","message":"In swift we have the concept of having different auth servers mixed together. For example on a large public cloud you may want keystone for your users and have tempauth for the admin and another keystone for a reseller that use the ressource of your cloud (i.e: a dropbox kind of reseller). You do that by having different prefixes. See tempauth middleware code that may explain how it works.","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a13060d48cb3f21a9922718544b2b305f619d6ac","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                        project_id\u003denv.get(\u0027HTTP_X_TENANT_ID\u0027),"},{"line_number":87,"context_line":"                                        resource_id\u003daccount.partition("},{"line_number":88,"context_line":"                                            \u0027AUTH_\u0027)[2],"},{"line_number":89,"context_line":"                                        timestamp\u003dnow,"},{"line_number":90,"context_line":"                                        resource_metadata\u003d{"},{"line_number":91,"context_line":"                                            \"path\": req.path,"},{"line_number":92,"context_line":"                                            \"version\": version,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F7NA%3D","line":89,"in_reply_to":"AAAAM3%2F%2F7NU%3D","updated":"2012-12-20 15:05:38.000000000","message":"Got it.\n\nI think the idea would be to use the reseller_admin option to strip it out of resource_id, and store reseller_admin into the metadata.\n\nWhat would be your suggestion about this?","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"0d6b7323e24fa8d3503d0bcd7bb5c8336a684a98","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                                        user_id\u003denv.get(\u0027HTTP_X_USER_ID\u0027),"},{"line_number":107,"context_line":"                                        project_id\u003denv.get(\u0027HTTP_X_TENANT_ID\u0027),"},{"line_number":108,"context_line":"                                        resource_id\u003daccount.partition("},{"line_number":109,"context_line":"                                            \u0027AUTH_\u0027)[2],"},{"line_number":110,"context_line":"                                        timestamp\u003dnow,"},{"line_number":111,"context_line":"                                        resource_metadata\u003d{"},{"line_number":112,"context_line":"                                            \"path\": req.path,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F7OQ%3D","line":109,"updated":"2012-12-20 14:25:56.000000000","message":"same as above.","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"}],"doc/source/install.rst":[{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"0d6b7323e24fa8d3503d0bcd7bb5c8336a684a98","unresolved":false,"context_lines":[{"line_number":105,"context_line":"     [filter:ceilometer]"},{"line_number":106,"context_line":"     use \u003d egg:ceilometer#swift"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"   And adding ``ceilometer`` in the ``pipeline`` of that same file."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"4. Install MongoDB."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAM3%2F%2F7O4%3D","line":108,"updated":"2012-12-20 14:25:56.000000000","message":"You probably want to mention that the ceilometer middleware should get at the beginning of the pipeline before the auth_server (i.e: keystone/tempauth or swauth).","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e58221621a0c760af8ea0189e91fc55aea161891","unresolved":false,"context_lines":[{"line_number":105,"context_line":"     [filter:ceilometer]"},{"line_number":106,"context_line":"     use \u003d egg:ceilometer#swift"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"   And adding ``ceilometer`` in the ``pipeline`` of that same file."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"4. Install MongoDB."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAM3%2F%2F7Ns%3D","line":108,"in_reply_to":"AAAAM3%2F%2F7O4%3D","updated":"2012-12-20 14:32:23.000000000","message":"You mean after right? Since we need to have the keystone credentials set up actually. I don\u0027t think it would work with tempauth, since the headers wouldn\u0027t be the same.","commit_id":"c5edcbe7d997bdbdaf3210154ed09e3b8343aa65"}]}
