)]}'
{"trove/common/context.py":[{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"45c1fa91e7b9833428e5da29a771caef97cf1f3f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        parent_dict \u003d super(TroveContext, self).to_dict()"},{"line_number":52,"context_line":"        parent_dict.update({\u0027limit\u0027: self.limit,"},{"line_number":53,"context_line":"                            \u0027marker\u0027: self.marker,"},{"line_number":54,"context_line":"                            \u0027user_id\u0027: self.user_id"},{"line_number":55,"context_line":"                            })"},{"line_number":56,"context_line":"        return parent_dict"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2F3a0%3D","line":54,"updated":"2013-10-08 19:09:19.000000000","message":"context.RequestContext already has a \u0027user\u0027 as a key in the parent_dict.  Is there a reason to set user_id instead of just using the parent user?","commit_id":"beb69342d513a78dcc2f9abb74919a80d40f1671"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"4f5914787dfe86d1fa0ccefb408a6c57eec84a5f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        val \u003d kwargs.get(attr)"},{"line_number":37,"context_line":"        if attr in kwargs:"},{"line_number":38,"context_line":"            del kwargs[attr]"},{"line_number":39,"context_line":"        return val"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def __init__(self, **kwargs):"},{"line_number":42,"context_line":"        self.limit \u003d self._get_extra_arg(kwargs, \u0027limit\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATH%2F%2FRjI%3D","line":39,"updated":"2013-10-18 15:36:40.000000000","message":"Great minds think alike- this method can be replaced with the dictionary method \"pop\" which has an identical interface. :)","commit_id":"977602692555e7ba53792f3a16e7e0d4a4b65f70"}],"trove/common/wsgi.py":[{"author":{"_account_id":7593,"name":"Haomai Wang","email":"haomaiwang@gmail.com","username":"HaomaiWang"},"change_message_id":"577f19b8874baaf9426e20e8f3f012a442cf1f9d","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        tenant_id \u003d request.headers.get(\u0027X-Tenant-Id\u0027, None)"},{"line_number":689,"context_line":"        auth_token \u003d request.headers[\"X-Auth-Token\"]"},{"line_number":690,"context_line":"        user \u003d request.headers.get(\u0027X-User\u0027, None)"},{"line_number":691,"context_line":"        user_id \u003d request.headers.get(\u0027X-User-ID\u0027, None)"},{"line_number":692,"context_line":"        roles \u003d request.headers.get(\u0027X-Role\u0027, \u0027\u0027).split(\u0027,\u0027)"},{"line_number":693,"context_line":"        is_admin \u003d False"},{"line_number":694,"context_line":"        for role in roles:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FDvY%3D","line":691,"updated":"2013-10-05 14:06:29.000000000","message":"X-User-Id? see X-Tenant-Id","commit_id":"c3e6bebbb2988e2a4293500012f92292afac536b"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c667d0a5ce4ca9f95bfdfa39bdaa7c5ad1494433","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        tenant_id \u003d request.headers.get(\u0027X-Tenant-Id\u0027, None)"},{"line_number":689,"context_line":"        auth_token \u003d request.headers[\"X-Auth-Token\"]"},{"line_number":690,"context_line":"        user \u003d request.headers.get(\u0027X-User\u0027, None)"},{"line_number":691,"context_line":"        user_id \u003d request.headers.get(\u0027X-User-ID\u0027, None)"},{"line_number":692,"context_line":"        roles \u003d request.headers.get(\u0027X-Role\u0027, \u0027\u0027).split(\u0027,\u0027)"},{"line_number":693,"context_line":"        is_admin \u003d False"},{"line_number":694,"context_line":"        for role in roles:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2F%2Fz8%3D","line":691,"in_reply_to":"AAAAS3%2F%2FDvY%3D","updated":"2013-10-05 18:56:29.000000000","message":"Does X-Tenant-ID is retrieved few lines above ?\nAlthogh in one tenant could be more than one user per tenant.","commit_id":"c3e6bebbb2988e2a4293500012f92292afac536b"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"e2dec52077ad9817cb313c66b809d6400bf12b15","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        tenant_id \u003d request.headers.get(\u0027X-Tenant-Id\u0027, None)"},{"line_number":689,"context_line":"        auth_token \u003d request.headers[\"X-Auth-Token\"]"},{"line_number":690,"context_line":"        user \u003d request.headers.get(\u0027X-User\u0027, None)"},{"line_number":691,"context_line":"        user_id \u003d request.headers.get(\u0027X-User-ID\u0027, None)"},{"line_number":692,"context_line":"        roles \u003d request.headers.get(\u0027X-Role\u0027, \u0027\u0027).split(\u0027,\u0027)"},{"line_number":693,"context_line":"        is_admin \u003d False"},{"line_number":694,"context_line":"        for role in roles:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2F%2FcA%3D","line":691,"in_reply_to":"AAAAS3%2F%2FDvY%3D","updated":"2013-10-06 08:07:37.000000000","message":"For purposes of billing we need to send User-ID not Tenant ID.  This provides a finer level of information as to which person actually created/deleted instances.  From Users billing can always work backwards to find the tenant.","commit_id":"c3e6bebbb2988e2a4293500012f92292afac536b"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"e2dec52077ad9817cb313c66b809d6400bf12b15","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        tenant_id \u003d request.headers.get(\u0027X-Tenant-Id\u0027, None)"},{"line_number":689,"context_line":"        auth_token \u003d request.headers[\"X-Auth-Token\"]"},{"line_number":690,"context_line":"        user \u003d request.headers.get(\u0027X-User\u0027, None)"},{"line_number":691,"context_line":"        user_id \u003d request.headers.get(\u0027X-User-ID\u0027, None)"},{"line_number":692,"context_line":"        roles \u003d request.headers.get(\u0027X-Role\u0027, \u0027\u0027).split(\u0027,\u0027)"},{"line_number":693,"context_line":"        is_admin \u003d False"},{"line_number":694,"context_line":"        for role in roles:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2F%2Fb4%3D","line":691,"in_reply_to":"AAAATH%2F%2F%2Fz8%3D","updated":"2013-10-06 08:07:37.000000000","message":"Yes - exactly! :)","commit_id":"c3e6bebbb2988e2a4293500012f92292afac536b"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"45c1fa91e7b9833428e5da29a771caef97cf1f3f","unresolved":false,"context_lines":[{"line_number":687,"context_line":"    def process_request(self, request):"},{"line_number":688,"context_line":"        tenant_id \u003d request.headers.get(\u0027X-Tenant-Id\u0027, None)"},{"line_number":689,"context_line":"        auth_token \u003d request.headers[\"X-Auth-Token\"]"},{"line_number":690,"context_line":"        user \u003d request.headers.get(\u0027X-User\u0027, None)"},{"line_number":691,"context_line":"        user_id \u003d request.headers.get(\u0027X-User-ID\u0027, None)"},{"line_number":692,"context_line":"        roles \u003d request.headers.get(\u0027X-Role\u0027, \u0027\u0027).split(\u0027,\u0027)"},{"line_number":693,"context_line":"        is_admin \u003d False"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2F3ZM%3D","line":690,"updated":"2013-10-08 19:09:19.000000000","message":"This one is deprecated according to https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/middleware/auth_token.py\n\nSo you should be assigning user_id to context.user (see comment in other file)","commit_id":"beb69342d513a78dcc2f9abb74919a80d40f1671"}],"trove/tests/api/instances_actions.py":[{"author":{"_account_id":7593,"name":"Haomai Wang","email":"haomaiwang@gmail.com","username":"HaomaiWang"},"change_message_id":"577f19b8874baaf9426e20e8f3f012a442cf1f9d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from trove.tests.util.check import Checker"},{"line_number":27,"context_line":"from troveclient.exceptions import BadRequest"},{"line_number":28,"context_line":"from troveclient.exceptions import HTTPNotImplemented"},{"line_number":29,"context_line":"from trove.tests.api.instances import GROUP as INSTANCE_GROUP, instance_info"},{"line_number":30,"context_line":"from trove.tests.api.instances import GROUP_START"},{"line_number":31,"context_line":"from trove.tests.api.instances import assert_unprocessable"},{"line_number":32,"context_line":"from trove.tests.api.instances import VOLUME_SUPPORT"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FDvQ%3D","line":29,"updated":"2013-10-05 14:06:29.000000000","message":"I hope instance_info can be separate to another line","commit_id":"c3e6bebbb2988e2a4293500012f92292afac536b"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"e2dec52077ad9817cb313c66b809d6400bf12b15","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from trove.tests.util.check import Checker"},{"line_number":27,"context_line":"from troveclient.exceptions import BadRequest"},{"line_number":28,"context_line":"from troveclient.exceptions import HTTPNotImplemented"},{"line_number":29,"context_line":"from trove.tests.api.instances import GROUP as INSTANCE_GROUP, instance_info"},{"line_number":30,"context_line":"from trove.tests.api.instances import GROUP_START"},{"line_number":31,"context_line":"from trove.tests.api.instances import assert_unprocessable"},{"line_number":32,"context_line":"from trove.tests.api.instances import VOLUME_SUPPORT"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2F%2Fb0%3D","line":29,"in_reply_to":"AAAAS3%2F%2FDvQ%3D","updated":"2013-10-06 08:07:37.000000000","message":"Done","commit_id":"c3e6bebbb2988e2a4293500012f92292afac536b"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c667d0a5ce4ca9f95bfdfa39bdaa7c5ad1494433","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from trove.tests.util.check import Checker"},{"line_number":27,"context_line":"from troveclient.exceptions import BadRequest"},{"line_number":28,"context_line":"from troveclient.exceptions import HTTPNotImplemented"},{"line_number":29,"context_line":"from trove.tests.api.instances import GROUP as INSTANCE_GROUP, instance_info"},{"line_number":30,"context_line":"from trove.tests.api.instances import GROUP_START"},{"line_number":31,"context_line":"from trove.tests.api.instances import assert_unprocessable"},{"line_number":32,"context_line":"from trove.tests.api.instances import VOLUME_SUPPORT"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2F%2F0Q%3D","line":29,"in_reply_to":"AAAAS3%2F%2FDvQ%3D","updated":"2013-10-05 18:56:29.000000000","message":"Exactly","commit_id":"c3e6bebbb2988e2a4293500012f92292afac536b"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"ff61b3e2d61fab29dc2385923d919ac4901c4785","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from trove.tests.util.check import Checker"},{"line_number":27,"context_line":"from troveclient.exceptions import BadRequest"},{"line_number":28,"context_line":"from troveclient.exceptions import HTTPNotImplemented"},{"line_number":29,"context_line":"from trove.tests.api.instances import GROUP as INSTANCE_GROUP, instance_info"},{"line_number":30,"context_line":"from trove.tests.api.instances import GROUP_START"},{"line_number":31,"context_line":"from trove.tests.api.instances import assert_unprocessable"},{"line_number":32,"context_line":"from trove.tests.api.instances import VOLUME_SUPPORT"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2F8Lc%3D","line":29,"in_reply_to":"AAAATH%2F%2F%2Fb0%3D","updated":"2013-10-07 18:27:19.000000000","message":"liar!","commit_id":"c3e6bebbb2988e2a4293500012f92292afac536b"}]}
