)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"1c6291e8e626e07c82ef52bb378e8197a2c7fa60","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Backups list/detail does not support pagination now."},{"line_number":10,"context_line":"Add pagination support like volume does by using marker and limit."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Blueprint snapshots-and-bakcup-support-pagination-query"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a50d1a3_be06431e","line":12,"updated":"2015-07-27 15:10:46.000000000","message":"This blueprint is really a subset of vincents Bp https://blueprints.launchpad.net/cinder/+spec/extend-limit-implementations\nmaybe it should just partially implement that?\n\nhttps://github.com/openstack/cinder-specs/blob/master/specs/liberty/enhance-list-operations-pagination-keys.rst","commit_id":"2293e3b4fb7f1010dfd62271d2348f26b26599b3"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"42577a75e8738ad12eb11c1b95c7b39efd591c6c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Backups list/detail does not support pagination now."},{"line_number":10,"context_line":"Add pagination support like volume does by using marker and limit."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Blueprint snapshots-and-bakcup-support-pagination-query"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a50d1a3_f82606cd","line":12,"in_reply_to":"3a50d1a3_be06431e","updated":"2015-07-28 03:03:33.000000000","message":"yes, I told Vincent yesterday, I will change this point at his bp.","commit_id":"2293e3b4fb7f1010dfd62271d2348f26b26599b3"}],"cinder/api/common.py":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"bc8d127e62624c597e8323e989d0aeb889d5c08a","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    try:"},{"line_number":113,"context_line":"        limit \u003d int(request.GET.get(\u0027limit\u0027, max_limit))"},{"line_number":114,"context_line":"    except ValueError:"},{"line_number":115,"context_line":"        msg \u003d _(\u0027limit param must be an integer\u0027)"},{"line_number":116,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    if limit \u003c 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_f76229ac","line":115,"updated":"2015-07-29 20:35:00.000000000","message":"Capitalize \"limit\". \n\nMissing \".\" at EOL.","commit_id":"75c1472a61efa9f9867b383c2668930c12497d6b"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"4cb9a578c85598e472a77afcd32dcf0bfd18c272","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    try:"},{"line_number":113,"context_line":"        limit \u003d int(request.GET.get(\u0027limit\u0027, max_limit))"},{"line_number":114,"context_line":"    except ValueError:"},{"line_number":115,"context_line":"        msg \u003d _(\u0027limit param must be an integer\u0027)"},{"line_number":116,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    if limit \u003c 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_d0436c12","line":115,"in_reply_to":"3a50d1a3_f76229ac","updated":"2015-07-30 00:35:17.000000000","message":"Done","commit_id":"75c1472a61efa9f9867b383c2668930c12497d6b"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"bc8d127e62624c597e8323e989d0aeb889d5c08a","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    if limit \u003c 0:"},{"line_number":119,"context_line":"        msg \u003d _(\u0027limit param must be positive\u0027)"},{"line_number":120,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    limit \u003d min(max_limit, limit)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_57743d66","line":119,"updated":"2015-07-29 20:35:00.000000000","message":"Capitalize \"limit\". \n\nMissing \".\" at EOL.","commit_id":"75c1472a61efa9f9867b383c2668930c12497d6b"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"4cb9a578c85598e472a77afcd32dcf0bfd18c272","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    if limit \u003c 0:"},{"line_number":119,"context_line":"        msg \u003d _(\u0027limit param must be positive\u0027)"},{"line_number":120,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    limit \u003d min(max_limit, limit)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_70493832","line":119,"in_reply_to":"3a50d1a3_57743d66","updated":"2015-07-30 00:35:17.000000000","message":"Done","commit_id":"75c1472a61efa9f9867b383c2668930c12497d6b"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"bc8d127e62624c597e8323e989d0aeb889d5c08a","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    try:"},{"line_number":125,"context_line":"        offset \u003d int(request.GET.get(\u0027offset\u0027, 0))"},{"line_number":126,"context_line":"    except ValueError:"},{"line_number":127,"context_line":"        msg \u003d _(\u0027offset param must be an integer\u0027)"},{"line_number":128,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    if offset \u003c 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_970c05ed","line":127,"updated":"2015-07-29 20:35:00.000000000","message":"Capitalize \"offset\". \n\nMissing \".\" at EOL.","commit_id":"75c1472a61efa9f9867b383c2668930c12497d6b"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"4cb9a578c85598e472a77afcd32dcf0bfd18c272","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    try:"},{"line_number":125,"context_line":"        offset \u003d int(request.GET.get(\u0027offset\u0027, 0))"},{"line_number":126,"context_line":"    except ValueError:"},{"line_number":127,"context_line":"        msg \u003d _(\u0027offset param must be an integer\u0027)"},{"line_number":128,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    if offset \u003c 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_90464420","line":127,"in_reply_to":"3a50d1a3_970c05ed","updated":"2015-07-30 00:35:17.000000000","message":"Done","commit_id":"75c1472a61efa9f9867b383c2668930c12497d6b"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"bc8d127e62624c597e8323e989d0aeb889d5c08a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    if offset \u003c 0:"},{"line_number":131,"context_line":"        msg \u003d _(\u0027offset param must be positive\u0027)"},{"line_number":132,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    return limit, offset"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_57fbddc0","line":131,"updated":"2015-07-29 20:35:00.000000000","message":"Capitalize \"offset\". \n\nMissing \".\" at EOL.","commit_id":"75c1472a61efa9f9867b383c2668930c12497d6b"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"4cb9a578c85598e472a77afcd32dcf0bfd18c272","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    if offset \u003c 0:"},{"line_number":131,"context_line":"        msg \u003d _(\u0027offset param must be positive\u0027)"},{"line_number":132,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    return limit, offset"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_3053b0e4","line":131,"in_reply_to":"3a50d1a3_57fbddc0","updated":"2015-07-30 00:35:17.000000000","message":"Done","commit_id":"75c1472a61efa9f9867b383c2668930c12497d6b"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"098cf8dd038e4978f83ea330be6a278a4a8207ef","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    return request.GET[\u0027marker\u0027]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def get_limit_and_offset(request, max_limit\u003dCONF.osapi_max_limit):"},{"line_number":111,"context_line":"    \"\"\"get limited parameter from request.\"\"\""},{"line_number":112,"context_line":"    try:"},{"line_number":113,"context_line":"        limit \u003d int(request.GET.get(\u0027limit\u0027, max_limit))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_01c64549","line":110,"updated":"2015-08-14 12:11:36.000000000","message":"If you rebase your patch on top of https://review.openstack.org/#/c/212126 you can use get_pagination_params to get limit, marker and offset.","commit_id":"6cb52e21e5a7b956cc8bfd0b392b595286caa6ed"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2d964042fa609f07bca3fcf1042ebbb7616e12ce","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    return request.GET[\u0027marker\u0027]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def get_limit_and_offset(request, max_limit\u003dCONF.osapi_max_limit):"},{"line_number":111,"context_line":"    \"\"\"get limited parameter from request.\"\"\""},{"line_number":112,"context_line":"    try:"},{"line_number":113,"context_line":"        limit \u003d int(request.GET.get(\u0027limit\u0027, max_limit))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_e69774e9","line":110,"in_reply_to":"1a4dcd0f_01c64549","updated":"2015-08-17 03:47:12.000000000","message":"Sure, I saw your patch has been merged. Will update it.","commit_id":"6cb52e21e5a7b956cc8bfd0b392b595286caa6ed"}],"cinder/api/contrib/backups.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"098cf8dd038e4978f83ea330be6a278a4a8207ef","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        marker \u003d filters.pop(\u0027marker\u0027, None)"},{"line_number":213,"context_line":"        filters.pop(\u0027limit\u0027, None)"},{"line_number":214,"context_line":"        filters.pop(\u0027offset\u0027, None)"},{"line_number":215,"context_line":"        sort_keys, sort_dirs \u003d common.get_sort_params(filters)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        utils.remove_invalid_filter_options(context,"},{"line_number":218,"context_line":"                                            filters,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_81bfb55f","line":215,"updated":"2015-08-14 12:11:36.000000000","message":"If you rebase on top of  https://review.openstack.org/#/c/212126 this together with  line 227 could be simplified to:\n\n marker, limit, offset \u003d common.get_pagination_params(filters)","commit_id":"6cb52e21e5a7b956cc8bfd0b392b595286caa6ed"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2d964042fa609f07bca3fcf1042ebbb7616e12ce","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        marker \u003d filters.pop(\u0027marker\u0027, None)"},{"line_number":213,"context_line":"        filters.pop(\u0027limit\u0027, None)"},{"line_number":214,"context_line":"        filters.pop(\u0027offset\u0027, None)"},{"line_number":215,"context_line":"        sort_keys, sort_dirs \u003d common.get_sort_params(filters)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        utils.remove_invalid_filter_options(context,"},{"line_number":218,"context_line":"                                            filters,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_462508c0","line":215,"in_reply_to":"1a4dcd0f_81bfb55f","updated":"2015-08-17 03:47:12.000000000","message":"Done","commit_id":"6cb52e21e5a7b956cc8bfd0b392b595286caa6ed"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"098cf8dd038e4978f83ea330be6a278a4a8207ef","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                                          sort_keys\u003dsort_keys,"},{"line_number":230,"context_line":"                                          sort_dirs\u003dsort_dirs,"},{"line_number":231,"context_line":"                                          search_opts\u003dfilters)"},{"line_number":232,"context_line":"        # Decide whether to make next link. If limit \u003e len(backups.objects),"},{"line_number":233,"context_line":"        # then the next link will not be generated."},{"line_number":234,"context_line":"        # Otherwise, len(backups.objects) +1 in order to get next link."},{"line_number":235,"context_line":"        backup_count \u003d len(backups.objects) + 1"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_7c248cb1","line":232,"updated":"2015-08-14 12:11:36.000000000","message":"This is not correct, because if API caller gives a limit and it\u0027s limiting the number of entries we get from the DB then limit will be equal to len(backups.objects) and we\u0027ll have to generate the link.","commit_id":"6cb52e21e5a7b956cc8bfd0b392b595286caa6ed"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2d964042fa609f07bca3fcf1042ebbb7616e12ce","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                                          sort_keys\u003dsort_keys,"},{"line_number":230,"context_line":"                                          sort_dirs\u003dsort_dirs,"},{"line_number":231,"context_line":"                                          search_opts\u003dfilters)"},{"line_number":232,"context_line":"        # Decide whether to make next link. If limit \u003e len(backups.objects),"},{"line_number":233,"context_line":"        # then the next link will not be generated."},{"line_number":234,"context_line":"        # Otherwise, len(backups.objects) +1 in order to get next link."},{"line_number":235,"context_line":"        backup_count \u003d len(backups.objects) + 1"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_b12204a2","line":232,"in_reply_to":"1a4dcd0f_7c248cb1","updated":"2015-08-17 03:47:12.000000000","message":"This is for old logic, I saw you have refactored the \"_get_collection_links\", so this need to be updated.","commit_id":"6cb52e21e5a7b956cc8bfd0b392b595286caa6ed"}],"cinder/backup/api.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"237c9a3a5b3937eb3be52e94211fd6201c64a123","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            backups \u003d objects.BackupList.get_all(context, filters\u003dsearch_opts,"},{"line_number":111,"context_line":"                                                 marker\u003dmarker, limit\u003dlimit,"},{"line_number":112,"context_line":"                                                 offset\u003doffset,"},{"line_number":113,"context_line":"                                                 sort_keys\u003dsort_keys, "},{"line_number":114,"context_line":"                                                 sort_dirs\u003dsort_dirs)"},{"line_number":115,"context_line":"        else:"},{"line_number":116,"context_line":"            backups \u003d objects.BackupList.get_all_by_project("}],"source_content_type":"text/x-python","patch_set":14,"id":"fa1b9901_c275f663","line":113,"updated":"2015-08-21 07:37:39.000000000","message":"-1: Remove trailing space","commit_id":"60747a721749254cbf8c885f00dce1247836234a"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"127c5def2ca52ae7cc85bb3dca232a7f691390bd","unresolved":false,"context_lines":[{"line_number":3307,"context_line":"                    function for more information"},{"line_number":3308,"context_line":"    :param marker: the last item of the previous page; we returns the next"},{"line_number":3309,"context_line":"                    results after this value."},{"line_number":3310,"context_line":"    :param limit: maximum number of items to return"},{"line_number":3311,"context_line":"    :returns: updated query or None"},{"line_number":3312,"context_line":"    \"\"\""},{"line_number":3313,"context_line":"    sort_keys, sort_dirs \u003d process_sort_params(sort_keys,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_2f1a7118","line":3310,"updated":"2015-08-03 14:40:18.000000000","message":"Lack of param \"sort_keys\", \"sort_dirs\" and \"offset\"?","commit_id":"50a994e8a22fdc78ee20460c359b9c55c06a9dee"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"098cf8dd038e4978f83ea330be6a278a4a8207ef","unresolved":false,"context_lines":[{"line_number":3292,"context_line":"    return result"},{"line_number":3293,"context_line":""},{"line_number":3294,"context_line":""},{"line_number":3295,"context_line":"def _generate_backup_paginate_query(context, session, marker, limit, offset,"},{"line_number":3296,"context_line":"                                    sort_keys, sort_dirs, filters):"},{"line_number":3297,"context_line":"    \"\"\"Generate the query to include the filters and the paginate options."},{"line_number":3298,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_729915d0","line":3295,"updated":"2015-08-14 12:11:36.000000000","message":"This should use _generate_paginate_query instead, like I did for the snapshots: https://review.openstack.org/#/c/195071/9/cinder/db/sqlalchemy/api.py","commit_id":"6cb52e21e5a7b956cc8bfd0b392b595286caa6ed"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2d964042fa609f07bca3fcf1042ebbb7616e12ce","unresolved":false,"context_lines":[{"line_number":3292,"context_line":"    return result"},{"line_number":3293,"context_line":""},{"line_number":3294,"context_line":""},{"line_number":3295,"context_line":"def _generate_backup_paginate_query(context, session, marker, limit, offset,"},{"line_number":3296,"context_line":"                                    sort_keys, sort_dirs, filters):"},{"line_number":3297,"context_line":"    \"\"\"Generate the query to include the filters and the paginate options."},{"line_number":3298,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_d136b0b3","line":3295,"in_reply_to":"1a4dcd0f_729915d0","updated":"2015-08-17 03:47:12.000000000","message":"Great, it should keep consistent.","commit_id":"6cb52e21e5a7b956cc8bfd0b392b595286caa6ed"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"098cf8dd038e4978f83ea330be6a278a4a8207ef","unresolved":false,"context_lines":[{"line_number":3346,"context_line":"        if query is None:"},{"line_number":3347,"context_line":"            return []"},{"line_number":3348,"context_line":"        result \u003d query.all()"},{"line_number":3349,"context_line":"        if limit is None:"},{"line_number":3350,"context_line":"            limit \u003d len(result)"},{"line_number":3351,"context_line":"        return result[offset:(limit + offset)]"},{"line_number":3352,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_dc8b6067","line":3349,"updated":"2015-08-14 12:11:36.000000000","message":"Offset must be done in the DB, otherwise if we receive offset and limit this will not work.","commit_id":"6cb52e21e5a7b956cc8bfd0b392b595286caa6ed"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2d964042fa609f07bca3fcf1042ebbb7616e12ce","unresolved":false,"context_lines":[{"line_number":3346,"context_line":"        if query is None:"},{"line_number":3347,"context_line":"            return []"},{"line_number":3348,"context_line":"        result \u003d query.all()"},{"line_number":3349,"context_line":"        if limit is None:"},{"line_number":3350,"context_line":"            limit \u003d len(result)"},{"line_number":3351,"context_line":"        return result[offset:(limit + offset)]"},{"line_number":3352,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_7146bc22","line":3349,"in_reply_to":"1a4dcd0f_dc8b6067","updated":"2015-08-17 03:47:12.000000000","message":"Done","commit_id":"6cb52e21e5a7b956cc8bfd0b392b595286caa6ed"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3376820d2f4620a73fec4fda7bd34de0f99e360","unresolved":false,"context_lines":[{"line_number":3302,"context_line":"    return result"},{"line_number":3303,"context_line":""},{"line_number":3304,"context_line":""},{"line_number":3305,"context_line":"def _generate_backup_paginate_query(context, session, marker, limit, offset,"},{"line_number":3306,"context_line":"                                    sort_keys, sort_dirs, filters):"},{"line_number":3307,"context_line":"    \"\"\"Generate the query to include the filters and the paginate options."},{"line_number":3308,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_ee6c529e","line":3305,"updated":"2015-08-18 10:55:14.000000000","message":"This method should be removed","commit_id":"337e8936412178e0e2faf3d64059991d3578981a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"eacc5d3d068168f74b5b4e1d82a2b1a9b41cf038","unresolved":false,"context_lines":[{"line_number":3302,"context_line":"    return result"},{"line_number":3303,"context_line":""},{"line_number":3304,"context_line":""},{"line_number":3305,"context_line":"def _generate_backup_paginate_query(context, session, marker, limit, offset,"},{"line_number":3306,"context_line":"                                    sort_keys, sort_dirs, filters):"},{"line_number":3307,"context_line":"    \"\"\"Generate the query to include the filters and the paginate options."},{"line_number":3308,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_e0eb5dda","line":3305,"in_reply_to":"fa1b9901_ee6c529e","updated":"2015-08-21 03:51:39.000000000","message":"Yes, I forgot this one, sorry.","commit_id":"337e8936412178e0e2faf3d64059991d3578981a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"766e28227410a2db44ae0c7b6bcddbad308b97e4","unresolved":false,"context_lines":[{"line_number":3320,"context_line":"                       project_only\u003dproject_only)"},{"line_number":3321,"context_line":""},{"line_number":3322,"context_line":""},{"line_number":3323,"context_line":"def _process_backups_filters(query, filters):"},{"line_number":3324,"context_line":"    if filters:"},{"line_number":3325,"context_line":"        # Ensure that filters\u0027 keys exist on the model"},{"line_number":3326,"context_line":"        for key in filters:"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa1b9901_2115223f","line":3323,"updated":"2015-08-25 19:27:08.000000000","message":"Please, re-use is_valid_model_filters method to remove code duplication.","commit_id":"9f69aadd49b2b42b295a186301a17fa2bc00c9d4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d437c96f91daf0643567eae4f8a66996e45d033a","unresolved":false,"context_lines":[{"line_number":3320,"context_line":"                       project_only\u003dproject_only)"},{"line_number":3321,"context_line":""},{"line_number":3322,"context_line":""},{"line_number":3323,"context_line":"def _process_backups_filters(query, filters):"},{"line_number":3324,"context_line":"    if filters:"},{"line_number":3325,"context_line":"        # Ensure that filters\u0027 keys exist on the model"},{"line_number":3326,"context_line":"        for key in filters:"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa1b9901_0ef7e259","line":3323,"in_reply_to":"fa1b9901_2115223f","updated":"2015-08-26 00:38:23.000000000","message":"No problem","commit_id":"9f69aadd49b2b42b295a186301a17fa2bc00c9d4"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"2d9d95a742f4411290e04664179be2e98d7074d2","unresolved":false,"context_lines":[{"line_number":3411,"context_line":""},{"line_number":3412,"context_line":"    :param context: context to query under"},{"line_number":3413,"context_line":"    :param session: the session to use"},{"line_number":3414,"context_line":"    :param marker: the last item of the previous page; we returns the next"},{"line_number":3415,"context_line":"                    results after this value."},{"line_number":3416,"context_line":"    :param limit: maximum number of items to return"},{"line_number":3417,"context_line":"    :param offset: offset number of items to return"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_b2f3080a","line":3414,"updated":"2015-08-27 21:55:14.000000000","message":"returns -\u003e return","commit_id":"ef8dcd77a54b458df0826be75e53fd790137b069"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"81568bcc8f0c8e8d672b71bbdd950ed9f8639608","unresolved":false,"context_lines":[{"line_number":3411,"context_line":""},{"line_number":3412,"context_line":"    :param context: context to query under"},{"line_number":3413,"context_line":"    :param session: the session to use"},{"line_number":3414,"context_line":"    :param marker: the last item of the previous page; we returns the next"},{"line_number":3415,"context_line":"                    results after this value."},{"line_number":3416,"context_line":"    :param limit: maximum number of items to return"},{"line_number":3417,"context_line":"    :param offset: offset number of items to return"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_45a64011","line":3414,"in_reply_to":"da20952f_b2f3080a","updated":"2015-08-28 13:48:42.000000000","message":"Done","commit_id":"ef8dcd77a54b458df0826be75e53fd790137b069"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"2d9d95a742f4411290e04664179be2e98d7074d2","unresolved":false,"context_lines":[{"line_number":3412,"context_line":"    :param context: context to query under"},{"line_number":3413,"context_line":"    :param session: the session to use"},{"line_number":3414,"context_line":"    :param marker: the last item of the previous page; we returns the next"},{"line_number":3415,"context_line":"                    results after this value."},{"line_number":3416,"context_line":"    :param limit: maximum number of items to return"},{"line_number":3417,"context_line":"    :param offset: offset number of items to return"},{"line_number":3418,"context_line":"    :param sort_keys: list of attributes by which results should be sorted,"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_32e85810","line":3415,"updated":"2015-08-27 21:55:14.000000000","message":"results-\u003e result","commit_id":"ef8dcd77a54b458df0826be75e53fd790137b069"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"81568bcc8f0c8e8d672b71bbdd950ed9f8639608","unresolved":false,"context_lines":[{"line_number":3412,"context_line":"    :param context: context to query under"},{"line_number":3413,"context_line":"    :param session: the session to use"},{"line_number":3414,"context_line":"    :param marker: the last item of the previous page; we returns the next"},{"line_number":3415,"context_line":"                    results after this value."},{"line_number":3416,"context_line":"    :param limit: maximum number of items to return"},{"line_number":3417,"context_line":"    :param offset: offset number of items to return"},{"line_number":3418,"context_line":"    :param sort_keys: list of attributes by which results should be sorted,"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_05b12847","line":3415,"in_reply_to":"da20952f_32e85810","updated":"2015-08-28 13:48:42.000000000","message":"Done","commit_id":"ef8dcd77a54b458df0826be75e53fd790137b069"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e301e75d4e469e93075a8aaeae70f1de3a73ed26","unresolved":false,"context_lines":[{"line_number":3420,"context_line":"    return _backup_get(context, backup_id)"},{"line_number":3421,"context_line":""},{"line_number":3422,"context_line":""},{"line_number":3423,"context_line":"@require_context"},{"line_number":3424,"context_line":"def _backup_get(context, backup_id, session\u003dNone):"},{"line_number":3425,"context_line":"    result \u003d model_query(context, models.Backup, session\u003dsession,"},{"line_number":3426,"context_line":"                         project_only\u003dTrue).filter_by(id\u003dbackup_id).first()"}],"source_content_type":"text/x-python","patch_set":23,"id":"da20952f_8d2f5f87","line":3423,"updated":"2015-08-31 08:08:41.000000000","message":"nit: No need for this context check, all callers of this method already check for the context.  Like you do in _gackup_get_all","commit_id":"80d0051fca31b23c800f6ba8ad2404ce56648b38"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"886e8c581f14d9ed7e51f9feb4ef1a5edcc62ba9","unresolved":false,"context_lines":[{"line_number":3420,"context_line":"    return _backup_get(context, backup_id)"},{"line_number":3421,"context_line":""},{"line_number":3422,"context_line":""},{"line_number":3423,"context_line":"@require_context"},{"line_number":3424,"context_line":"def _backup_get(context, backup_id, session\u003dNone):"},{"line_number":3425,"context_line":"    result \u003d model_query(context, models.Backup, session\u003dsession,"},{"line_number":3426,"context_line":"                         project_only\u003dTrue).filter_by(id\u003dbackup_id).first()"}],"source_content_type":"text/x-python","patch_set":23,"id":"da20952f_9af1c96d","line":3423,"in_reply_to":"da20952f_8d2f5f87","updated":"2015-08-31 13:42:04.000000000","message":"Okay.","commit_id":"80d0051fca31b23c800f6ba8ad2404ce56648b38"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e301e75d4e469e93075a8aaeae70f1de3a73ed26","unresolved":false,"context_lines":[{"line_number":3431,"context_line":"    return result"},{"line_number":3432,"context_line":""},{"line_number":3433,"context_line":""},{"line_number":3434,"context_line":"def _generate_backup_paginate_query(context, session, marker, limit, offset,"},{"line_number":3435,"context_line":"                                    sort_keys, sort_dirs, filters):"},{"line_number":3436,"context_line":"    \"\"\"Generate the query to include the filters and the paginate options."},{"line_number":3437,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da20952f_ad4d833f","line":3434,"updated":"2015-08-31 08:08:41.000000000","message":"-1: This method is not needed/used","commit_id":"80d0051fca31b23c800f6ba8ad2404ce56648b38"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"886e8c581f14d9ed7e51f9feb4ef1a5edcc62ba9","unresolved":false,"context_lines":[{"line_number":3431,"context_line":"    return result"},{"line_number":3432,"context_line":""},{"line_number":3433,"context_line":""},{"line_number":3434,"context_line":"def _generate_backup_paginate_query(context, session, marker, limit, offset,"},{"line_number":3435,"context_line":"                                    sort_keys, sort_dirs, filters):"},{"line_number":3436,"context_line":"    \"\"\"Generate the query to include the filters and the paginate options."},{"line_number":3437,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da20952f_ba9b6d17","line":3434,"in_reply_to":"da20952f_ad4d833f","updated":"2015-08-31 13:42:04.000000000","message":"..... I have removed this once, it\u0027s weird .....","commit_id":"80d0051fca31b23c800f6ba8ad2404ce56648b38"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"0a2e5c0cd70f2f0d50b4fe8066cab53e1b26860c","unresolved":false,"context_lines":[{"line_number":3431,"context_line":"    return result"},{"line_number":3432,"context_line":""},{"line_number":3433,"context_line":""},{"line_number":3434,"context_line":"def _generate_backup_paginate_query(context, session, marker, limit, offset,"},{"line_number":3435,"context_line":"                                    sort_keys, sort_dirs, filters):"},{"line_number":3436,"context_line":"    \"\"\"Generate the query to include the filters and the paginate options."},{"line_number":3437,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da20952f_e4185fd5","line":3434,"in_reply_to":"da20952f_ba9b6d17","updated":"2015-08-31 16:28:04.000000000","message":"I know you have, I saw it  :-)","commit_id":"80d0051fca31b23c800f6ba8ad2404ce56648b38"}],"cinder/objects/backup.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3376820d2f4620a73fec4fda7bd34de0f99e360","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    }"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    @base.remotable_classmethod"},{"line_number":127,"context_line":"    def get_all(cls, context, marker\u003dNone, limit\u003dNone, offset\u003dNone,"},{"line_number":128,"context_line":"                sort_keys\u003dNone, sort_dirs\u003dNone, filters\u003dNone):"},{"line_number":129,"context_line":"        backups \u003d db.backup_get_all(context, filters, marker, limit, offset,"},{"line_number":130,"context_line":"                                    sort_keys, sort_dirs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_aed3ba37","line":127,"range":{"start_line":127,"start_character":36,"end_line":127,"end_character":37},"updated":"2015-08-18 10:55:14.000000000","message":"You must add new parameters after old ones","commit_id":"337e8936412178e0e2faf3d64059991d3578981a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"eacc5d3d068168f74b5b4e1d82a2b1a9b41cf038","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    }"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    @base.remotable_classmethod"},{"line_number":127,"context_line":"    def get_all(cls, context, marker\u003dNone, limit\u003dNone, offset\u003dNone,"},{"line_number":128,"context_line":"                sort_keys\u003dNone, sort_dirs\u003dNone, filters\u003dNone):"},{"line_number":129,"context_line":"        backups \u003d db.backup_get_all(context, filters, marker, limit, offset,"},{"line_number":130,"context_line":"                                    sort_keys, sort_dirs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_4081e9f9","line":127,"in_reply_to":"fa1b9901_aed3ba37","updated":"2015-08-21 03:51:39.000000000","message":"Done","commit_id":"337e8936412178e0e2faf3d64059991d3578981a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3376820d2f4620a73fec4fda7bd34de0f99e360","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                                  backups)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @base.remotable_classmethod"},{"line_number":141,"context_line":"    def get_all_by_project(cls, context, project_id, marker\u003dNone,"},{"line_number":142,"context_line":"                           limit\u003dNone, offset\u003dNone, sort_keys\u003dNone,"},{"line_number":143,"context_line":"                           sort_dirs\u003dNone, filters\u003dNone):"},{"line_number":144,"context_line":"        backups \u003d db.backup_get_all_by_project(context, project_id, filters,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_4e1e9e0d","line":141,"range":{"start_line":141,"start_character":53,"end_line":141,"end_character":59},"updated":"2015-08-18 10:55:14.000000000","message":"You must add new parameters after old ones","commit_id":"337e8936412178e0e2faf3d64059991d3578981a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"eacc5d3d068168f74b5b4e1d82a2b1a9b41cf038","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                                  backups)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @base.remotable_classmethod"},{"line_number":141,"context_line":"    def get_all_by_project(cls, context, project_id, marker\u003dNone,"},{"line_number":142,"context_line":"                           limit\u003dNone, offset\u003dNone, sort_keys\u003dNone,"},{"line_number":143,"context_line":"                           sort_dirs\u003dNone, filters\u003dNone):"},{"line_number":144,"context_line":"        backups \u003d db.backup_get_all_by_project(context, project_id, filters,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_60842d0a","line":141,"in_reply_to":"fa1b9901_4e1e9e0d","updated":"2015-08-21 03:51:39.000000000","message":"Done","commit_id":"337e8936412178e0e2faf3d64059991d3578981a"}],"cinder/tests/unit/api/contrib/test_backups.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3376820d2f4620a73fec4fda7bd34de0f99e360","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        db.backup_destroy(context.get_admin_context(), backup_id1)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def test_list_backups_with_limit(self):"},{"line_number":198,"context_line":"        backup_id1 \u003d self._create_backup()"},{"line_number":199,"context_line":"        backup_id2 \u003d self._create_backup()"},{"line_number":200,"context_line":"        backup_id3 \u003d self._create_backup()"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_2ecb2a55","line":198,"updated":"2015-08-18 10:55:14.000000000","message":"It would be better to create the backups with different names","commit_id":"337e8936412178e0e2faf3d64059991d3578981a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"eacc5d3d068168f74b5b4e1d82a2b1a9b41cf038","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        db.backup_destroy(context.get_admin_context(), backup_id1)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def test_list_backups_with_limit(self):"},{"line_number":198,"context_line":"        backup_id1 \u003d self._create_backup()"},{"line_number":199,"context_line":"        backup_id2 \u003d self._create_backup()"},{"line_number":200,"context_line":"        backup_id3 \u003d self._create_backup()"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_7b294289","line":198,"in_reply_to":"fa1b9901_2ecb2a55","updated":"2015-08-21 03:51:39.000000000","message":"Done","commit_id":"337e8936412178e0e2faf3d64059991d3578981a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3376820d2f4620a73fec4fda7bd34de0f99e360","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    def test_list_backups_with_marker(self):"},{"line_number":222,"context_line":"        backup_id1 \u003d self._create_backup()"},{"line_number":223,"context_line":"        backup_id2 \u003d self._create_backup()"},{"line_number":224,"context_line":"        backup_id3 \u003d self._create_backup()"},{"line_number":225,"context_line":"        url \u003d (\u0027/v2/fake/backups?marker\u003d%s\u0027 % backup_id3)"},{"line_number":226,"context_line":"        req \u003d webob.Request.blank(url)"},{"line_number":227,"context_line":"        req.method \u003d \u0027GET\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_eec45241","line":224,"updated":"2015-08-18 10:55:14.000000000","message":"Same here","commit_id":"337e8936412178e0e2faf3d64059991d3578981a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b3376820d2f4620a73fec4fda7bd34de0f99e360","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    def test_list_backups_with_limit_and_marker(self):"},{"line_number":246,"context_line":"        backup_id1 \u003d self._create_backup()"},{"line_number":247,"context_line":"        backup_id2 \u003d self._create_backup()"},{"line_number":248,"context_line":"        backup_id3 \u003d self._create_backup()"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        url \u003d (\u0027/v2/fake/backups?limit\u003d1\u0026marker\u003d%s\u0027 % backup_id3)"},{"line_number":251,"context_line":"        req \u003d webob.Request.blank(url)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_0ec2e633","line":248,"range":{"start_line":248,"start_character":26,"end_line":248,"end_character":40},"updated":"2015-08-18 10:55:14.000000000","message":"And here","commit_id":"337e8936412178e0e2faf3d64059991d3578981a"}]}
