)]}'
{"cinder/api/v1/snapshots.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"eda955ce6ebc38c7ac7e876ca8bf324a112965f4","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        offset \u003d params.pop(\u0027offset\u0027, None)"},{"line_number":146,"context_line":"        search_opts \u003d params"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        #filter out invalit option"},{"line_number":149,"context_line":"        allowed_search_options \u003d (\u0027status\u0027, \u0027volume_id\u0027, \u0027display_name\u0027)"},{"line_number":150,"context_line":"        volumes.remove_invalid_options(context, search_opts,"},{"line_number":151,"context_line":"                                       allowed_search_options)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2Fjww%3D","line":148,"updated":"2013-07-29 10:46:25.000000000","message":"s/invalit/invalid/","commit_id":"2710db7565b7c055970cbe6180365a6024acf366"},{"author":{"_account_id":6939,"name":"Xiaoxi Chen","email":"superdebuger@gmail.com","username":"xiaoxi-chen"},"change_message_id":"67ce23875f5eceea8aedfb9078acb122bb1036fe","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        offset \u003d params.pop(\u0027offset\u0027, None)"},{"line_number":146,"context_line":"        search_opts \u003d params"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        #filter out invalit option"},{"line_number":149,"context_line":"        allowed_search_options \u003d (\u0027status\u0027, \u0027volume_id\u0027, \u0027display_name\u0027)"},{"line_number":150,"context_line":"        volumes.remove_invalid_options(context, search_opts,"},{"line_number":151,"context_line":"                                       allowed_search_options)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2Fjd0%3D","line":148,"in_reply_to":"AAAAQn%2F%2Fjww%3D","updated":"2013-07-29 11:02:03.000000000","message":"Done","commit_id":"2710db7565b7c055970cbe6180365a6024acf366"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"eda955ce6ebc38c7ac7e876ca8bf324a112965f4","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        #filter out invalit option"},{"line_number":149,"context_line":"        allowed_search_options \u003d (\u0027status\u0027, \u0027volume_id\u0027, \u0027display_name\u0027)"},{"line_number":150,"context_line":"        volumes.remove_invalid_options(context, search_opts,"},{"line_number":151,"context_line":"                                       allowed_search_options)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        snapshots \u003d self.volume_api.get_all_snapshots(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FjfE%3D","line":150,"updated":"2013-07-29 10:46:25.000000000","message":"This issue also affects volumes API when using offset/limit as admin.  So it\u0027d better place the fix in the share piece which is remove_invalid_options(),  you can pop limit/offset there to make sure those two options won\u0027t affect db query.","commit_id":"2710db7565b7c055970cbe6180365a6024acf366"},{"author":{"_account_id":6939,"name":"Xiaoxi Chen","email":"superdebuger@gmail.com","username":"xiaoxi-chen"},"change_message_id":"67ce23875f5eceea8aedfb9078acb122bb1036fe","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        #filter out invalit option"},{"line_number":149,"context_line":"        allowed_search_options \u003d (\u0027status\u0027, \u0027volume_id\u0027, \u0027display_name\u0027)"},{"line_number":150,"context_line":"        volumes.remove_invalid_options(context, search_opts,"},{"line_number":151,"context_line":"                                       allowed_search_options)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        snapshots \u003d self.volume_api.get_all_snapshots(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FjdI%3D","line":150,"in_reply_to":"AAAAQn%2F%2FjfE%3D","updated":"2013-07-29 11:02:03.000000000","message":"The volumes api did the same thing that pop out the limit and offset before it do the db query.\nDo you think it\u0027s a good idea to pop out limit and offset in the share piece?  since volumes api need to pop out more(marker,sort_key,etc),and in future snapshot list api may also need to pop out something more. it  looks a bit strange to put the pop in two different space.","commit_id":"2710db7565b7c055970cbe6180365a6024acf366"},{"author":{"_account_id":6939,"name":"Xiaoxi Chen","email":"superdebuger@gmail.com","username":"xiaoxi-chen"},"change_message_id":"d0c74d771599cc3f8fc02d639dac8da296e6fb59","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        snapshots \u003d self.volume_api.get_all_snapshots(context,"},{"line_number":149,"context_line":"                                                      search_opts\u003dsearch_opts)"},{"line_number":150,"context_line":"        limited_list \u003d common.limited(snapshots, req)"},{"line_number":151,"context_line":"        res \u003d [entity_maker(context, snapshot) for snapshot in limited_list]"},{"line_number":152,"context_line":"        return {\u0027snapshots\u0027: res}"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2FgyQ%3D","side":"PARENT","line":150,"updated":"2013-07-30 00:47:58.000000000","message":"A bit strange if we do not want to support pagination in v1, why we need to use the common.limit?\nThis line is also appear in api/v1/volumes.py (https://github.com/openstack/cinder/blob/master/cinder/api/v1/volumes.py#L267).","commit_id":"7df656ff0be9fef34a4e19f7b83a0cae554db1e7"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"6f12e8be5de6c37562390a3812c43598925d0601","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        \"\"\"Returns a list of snapshots, transformed through entity_maker.\"\"\""},{"line_number":140,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        #pop out limit and offset , they are not search_opts"},{"line_number":143,"context_line":"        params \u003d req.params.copy()"},{"line_number":144,"context_line":"        limit \u003d params.pop(\u0027limit\u0027, None)"},{"line_number":145,"context_line":"        offset \u003d params.pop(\u0027offset\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2Fhio%3D","line":142,"updated":"2013-07-29 20:42:52.000000000","message":"i recall pagination is v2 feature. maybe we should leave v1 alone.","commit_id":"22154945fda07da8b3c4cd18c6933afdd9b9030a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f222bd38c71114550d2a43f13be76a866852a30b","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        params \u003d req.params.copy()"},{"line_number":144,"context_line":"        limit \u003d params.pop(\u0027limit\u0027, None)"},{"line_number":145,"context_line":"        offset \u003d params.pop(\u0027offset\u0027, None)"},{"line_number":146,"context_line":"        search_opts \u003d params"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        #filter out invalid option"},{"line_number":149,"context_line":"        allowed_search_options \u003d (\u0027status\u0027, \u0027volume_id\u0027, \u0027display_name\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2FgW8%3D","line":146,"updated":"2013-07-30 03:55:08.000000000","message":"how about:\n\n    search_opts \u003d req.GET.copy()\n    search_opts.pop(\u0027limit\u0027, None)\n    search_opts.pop(\u0027offset\u0027, None)\n\nSince limit/offset is not used afterwards.","commit_id":"97b8b3eecd8dc0625372b3eae18d39056e18a56a"}],"cinder/tests/api/v1/test_snapshots.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"eda955ce6ebc38c7ac7e876ca8bf324a112965f4","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        self.stubs.Set(db, \u0027snapshot_get_all_by_project\u0027,"},{"line_number":325,"context_line":"                       stub_snapshot_get_all_by_project)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/snapshots?limit\u003d1\u0026offset\u003d1\u0027,"},{"line_number":328,"context_line":"                                      use_admin_context\u003dTrue)"},{"line_number":329,"context_line":"        res \u003d self.controller.index(req)"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2Fje8%3D","line":327,"updated":"2013-07-29 10:46:25.000000000","message":"s/v2/v1/","commit_id":"2710db7565b7c055970cbe6180365a6024acf366"},{"author":{"_account_id":6939,"name":"Xiaoxi Chen","email":"superdebuger@gmail.com","username":"xiaoxi-chen"},"change_message_id":"67ce23875f5eceea8aedfb9078acb122bb1036fe","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        self.stubs.Set(db, \u0027snapshot_get_all_by_project\u0027,"},{"line_number":325,"context_line":"                       stub_snapshot_get_all_by_project)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/snapshots?limit\u003d1\u0026offset\u003d1\u0027,"},{"line_number":328,"context_line":"                                      use_admin_context\u003dTrue)"},{"line_number":329,"context_line":"        res \u003d self.controller.index(req)"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FjdA%3D","line":327,"in_reply_to":"AAAAQn%2F%2Fje8%3D","updated":"2013-07-29 11:02:03.000000000","message":"Done","commit_id":"2710db7565b7c055970cbe6180365a6024acf366"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f222bd38c71114550d2a43f13be76a866852a30b","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        self.assertTrue(\u0027snapshots\u0027 in res)"},{"line_number":315,"context_line":"        self.assertEqual(1, len(res[\u0027snapshots\u0027]))"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def test_admin_list_snapshots_with_limit_and_offset(self):"},{"line_number":318,"context_line":"        def stub_snapshot_get_all_by_project(context, project_id):"},{"line_number":319,"context_line":"            return ["},{"line_number":320,"context_line":"                stubs.stub_snapshot(1, display_name\u003d\u0027backup1\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2FgW0%3D","line":317,"updated":"2013-07-30 03:55:08.000000000","message":"I\u0027m thinking adding a non_admin test case as well.","commit_id":"97b8b3eecd8dc0625372b3eae18d39056e18a56a"}]}
