)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"32c921546016bbf9a34842b66db2dc34750a8712","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Since pagination\u0027s slicing is done at API level instead of at DB level,"},{"line_number":20,"context_line":"same as it was done before this patch when using limit and reaching"},{"line_number":21,"context_line":"osapi_max_limit, this is as efficient as it could be, but that will be"},{"line_number":22,"context_line":"left for another patch."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Snapshots need refactoring to use _view_builder like the rest of the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa32b979_2acdbc65","line":21,"updated":"2015-06-24 19:00:37.000000000","message":"/is/isn\u0027t/","commit_id":"84d16f44b93432d0a3246587d23fb465b0dfb9b9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"74f94ea30343bbfef1932439510d79142edd8f27","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Since pagination\u0027s slicing is done at API level instead of at DB level,"},{"line_number":20,"context_line":"same as it was done before this patch when using limit and reaching"},{"line_number":21,"context_line":"osapi_max_limit, this is as efficient as it could be, but that will be"},{"line_number":22,"context_line":"left for another patch."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Snapshots need refactoring to use _view_builder like the rest of the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa32b979_cda8ce8e","line":21,"in_reply_to":"fa32b979_2acdbc65","updated":"2015-06-25 10:22:32.000000000","message":"Ooops, that \"litle\" mistake makes the whole sentence weird.   XD","commit_id":"84d16f44b93432d0a3246587d23fb465b0dfb9b9"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"8c3c7e1fdca3457c02a2516456153d390c64e24d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add pagination to snapshots"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently snapshot list does not provide pagination like volume does."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch adds pagination for snapshots in the same way that volume"},{"line_number":12,"context_line":"does, using marker, limit, sort_keys and sort_dirs."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1a4dcd0f_94db6c4f","line":9,"updated":"2015-08-14 13:23:35.000000000","message":"Suggest: \"Currently, the snapshot list command doesn\u0027t provide..\"","commit_id":"2d9ee99518f9094e824fe11f5d480636dcde623d"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"93feceade7f6b3655e51ac3afabd7605cef29f8c","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":"APIImpact: Use marker, limit, sort_keys and sort_dirs"},{"line_number":16,"context_line":"Implements: snapshots-and-bakcup-support-pagination-query"},{"line_number":17,"context_line":"Implements: blueprint extend-limit-implementations"},{"line_number":18,"context_line":"Change-Id: I21edac6d29abf7fc2f446111a7d6888db9ab6eba"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"fa1b9901_42d0511f","line":16,"updated":"2015-08-25 22:00:48.000000000","message":"Implements: blueprint snapshots-and-bakcup-support-pagination-query","commit_id":"e0e73a534a892cfce54715c3e9f8c00e4c39f7c4"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"93feceade7f6b3655e51ac3afabd7605cef29f8c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":"APIImpact: Use marker, limit, sort_keys and sort_dirs"},{"line_number":16,"context_line":"Implements: snapshots-and-bakcup-support-pagination-query"},{"line_number":17,"context_line":"Implements: blueprint extend-limit-implementations"},{"line_number":18,"context_line":"Change-Id: I21edac6d29abf7fc2f446111a7d6888db9ab6eba"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"fa1b9901_82a8a98d","line":17,"updated":"2015-08-25 22:00:48.000000000","message":"Partially implements?\n\nThat bp calls for pagination for other stuff like qos-specs too.","commit_id":"e0e73a534a892cfce54715c3e9f8c00e4c39f7c4"}],"cinder/api/v2/snapshots.py":[{"author":{"_account_id":13636,"name":"Anton A","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"4ffc2fc64a92308562a78e27da9ad81e6d8fb7cd","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":"from oslo_utils import strutils"},{"line_number":21,"context_line":"from six.moves.urllib import parse as urllib"},{"line_number":22,"context_line":"import webob"},{"line_number":23,"context_line":"from webob import exc"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_fa38edef","line":21,"updated":"2015-06-25 09:33:56.000000000","message":"\u0027urllib\u0027 seems confusing here, maybe something like \u0027urlparse\u0027 is better?","commit_id":"84d16f44b93432d0a3246587d23fb465b0dfb9b9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"74f94ea30343bbfef1932439510d79142edd8f27","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":"from oslo_utils import strutils"},{"line_number":21,"context_line":"from six.moves.urllib import parse as urllib"},{"line_number":22,"context_line":"import webob"},{"line_number":23,"context_line":"from webob import exc"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_5bd8fb52","line":21,"in_reply_to":"fa32b979_fa38edef","updated":"2015-06-25 10:22:32.000000000","message":"I don\u0027t usually do it this way, but I was working to do the Tempests tests at the same time and it just rubbed:\n\n https://github.com/openstack/tempest/blob/master/tempest/services/compute/json/agents_client.py#L17\n https://github.com/openstack/tempest/blob/master/tempest/services/compute/json/images_client.py#L18\n https://github.com/openstack/tempest/blob/master/tempest/services/compute/json/volumes_extensions_client.py#L19\n\nI\u0027ll import it without renaming.","commit_id":"84d16f44b93432d0a3246587d23fb465b0dfb9b9"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"89f10f5e6d9a373484ca9963118bda9f992e4150","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                                                      marker\u003dmarker,"},{"line_number":135,"context_line":"                                                      limit\u003dlimit,"},{"line_number":136,"context_line":"                                                      sort_keys\u003dsort_keys,"},{"line_number":137,"context_line":"                                                      sort_dirs\u003dsort_dirs)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        limited_list \u003d common.limited(snapshots.objects, req)"},{"line_number":140,"context_line":"        req.cache_db_snapshots(limited_list)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_386694bb","line":137,"updated":"2015-08-12 07:10:52.000000000","message":"Gorka, I think we shouldn\u0027t get all snapshots and then handle the limit. Because if we have mass snapshots, and limit is none, it will get all snapshots from db, that will take a lot of memory. Volume and backup also need to be noticed. See this bug: https://bugs.launchpad.net/cinder/+bug/1483165","commit_id":"28354e2c892425fffde85b04627362305436f5a9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"0d4bb9d44291d335c0fe88344280112624ceae73","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                                                      marker\u003dmarker,"},{"line_number":135,"context_line":"                                                      limit\u003dlimit,"},{"line_number":136,"context_line":"                                                      sort_keys\u003dsort_keys,"},{"line_number":137,"context_line":"                                                      sort_dirs\u003dsort_dirs)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        limited_list \u003d common.limited(snapshots.objects, req)"},{"line_number":140,"context_line":"        req.cache_db_snapshots(limited_list)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_e2561b29","line":137,"in_reply_to":"1a4dcd0f_386694bb","updated":"2015-08-12 18:01:49.000000000","message":"Done","commit_id":"28354e2c892425fffde85b04627362305436f5a9"}],"cinder/db/api.py":[{"author":{"_account_id":17718,"name":"Lallana","email":"gaozhiqiang2@huawei.com","username":"Lallana"},"change_message_id":"738c4b27a9113f3a371982de7909224395245794","unresolved":false,"context_lines":[{"line_number":350,"context_line":"    \"\"\""},{"line_number":351,"context_line":"    return IMPL.snapshot_get_active_by_window(context, begin, end, project_id)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"####################"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa1b9901_5718fcd2","line":353,"updated":"2015-08-26 10:11:08.000000000","message":"Maybe this line need to remove.","commit_id":"e0e73a534a892cfce54715c3e9f8c00e4c39f7c4"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"30cf5e4be8122ab1c0bfb763cd7d04a626c26002","unresolved":false,"context_lines":[{"line_number":2048,"context_line":""},{"line_number":2049,"context_line":""},{"line_number":2050,"context_line":"def _generate_snapshot_paginate_query(context, session, marker, limit,"},{"line_number":2051,"context_line":"                                      sort_keys, sort_dirs, filters):"},{"line_number":2052,"context_line":"    \"\"\"Generate query to include filters and paginate options for snapshots."},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"    Returns a query with sorting / pagination criteria added or None"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_1f3883ed","line":2051,"updated":"2015-08-11 14:38:34.000000000","message":"Wonder if there\u0027s a simple way to refactor paginate_query into a true general paginate method?\n\nThis is almost an exact duplicate of what we use on volumes, just a resource change (and the list of keys of course, but those are already parametrized).  May be worth considering some enhancements here to avoid the duplication?  Pass in a resource type, add a couple helper methods to handle said resources?","commit_id":"1410c1ff024faac980949037717a12145ca68069"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9a19887ba91391719d97cea8570adcbc586393bb","unresolved":false,"context_lines":[{"line_number":2048,"context_line":""},{"line_number":2049,"context_line":""},{"line_number":2050,"context_line":"def _generate_snapshot_paginate_query(context, session, marker, limit,"},{"line_number":2051,"context_line":"                                      sort_keys, sort_dirs, filters):"},{"line_number":2052,"context_line":"    \"\"\"Generate query to include filters and paginate options for snapshots."},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"    Returns a query with sorting / pagination criteria added or None"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_4aeac675","line":2051,"in_reply_to":"1a4dcd0f_1f3883ed","updated":"2015-08-11 15:54:35.000000000","message":"I had the same idea, and discarded it because I thought it would look less clean, but I must have been a little muddled, because it would actually not look cleaner.\n\nI\u0027ll change it now, thanks.","commit_id":"1410c1ff024faac980949037717a12145ca68069"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"30cf5e4be8122ab1c0bfb763cd7d04a626c26002","unresolved":false,"context_lines":[{"line_number":2150,"context_line":"                      paired with corresponding item in sort_keys"},{"line_number":2151,"context_line":"    :returns: list of matching snapshots"},{"line_number":2152,"context_line":"    \"\"\""},{"line_number":2153,"context_line":"    authorize_project_context(context, project_id)"},{"line_number":2154,"context_line":""},{"line_number":2155,"context_line":"    # Add project_id to filters"},{"line_number":2156,"context_line":"    filters \u003d filters.copy() if filters else {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_bf14efe8","line":2153,"updated":"2015-08-11 14:38:34.000000000","message":"I think you should at least move the authorize down into the session block... might as well move the filters as well just for consistency and clarity IMHO.","commit_id":"1410c1ff024faac980949037717a12145ca68069"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9a19887ba91391719d97cea8570adcbc586393bb","unresolved":false,"context_lines":[{"line_number":2150,"context_line":"                      paired with corresponding item in sort_keys"},{"line_number":2151,"context_line":"    :returns: list of matching snapshots"},{"line_number":2152,"context_line":"    \"\"\""},{"line_number":2153,"context_line":"    authorize_project_context(context, project_id)"},{"line_number":2154,"context_line":""},{"line_number":2155,"context_line":"    # Add project_id to filters"},{"line_number":2156,"context_line":"    filters \u003d filters.copy() if filters else {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_eac5d28d","line":2153,"in_reply_to":"1a4dcd0f_bf14efe8","updated":"2015-08-11 15:54:35.000000000","message":"I moved it out on purpose, because I don\u0027t see the point of creating a new DB session if this fails and I see the filters part as preparations that have nothing to do with the session itself.\n\nBut I don\u0027t have strong feelings about this, so I\u0027ll change it if you think it\u0027s really more clear.","commit_id":"1410c1ff024faac980949037717a12145ca68069"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"8c3c7e1fdca3457c02a2516456153d390c64e24d","unresolved":false,"context_lines":[{"line_number":2028,"context_line":"                     sort_keys\u003dNone, sort_dirs\u003dNone, offset\u003dNone):"},{"line_number":2029,"context_line":"    \"\"\"Retrieves all snapshots."},{"line_number":2030,"context_line":""},{"line_number":2031,"context_line":"    If no sort parameters are specified then returned snapshots are sorted"},{"line_number":2032,"context_line":"    first by the \u0027created_at\u0027 key and then by the \u0027id\u0027 key in descending"},{"line_number":2033,"context_line":"    order."},{"line_number":2034,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_54dc0474","line":2031,"updated":"2015-08-14 13:23:35.000000000","message":"sort-\u003esorting","commit_id":"2d9ee99518f9094e824fe11f5d480636dcde623d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"af0714b0aa8a06770567de39bbeeda2d7d69d183","unresolved":false,"context_lines":[{"line_number":2028,"context_line":"                     sort_keys\u003dNone, sort_dirs\u003dNone, offset\u003dNone):"},{"line_number":2029,"context_line":"    \"\"\"Retrieves all snapshots."},{"line_number":2030,"context_line":""},{"line_number":2031,"context_line":"    If no sort parameters are specified then returned snapshots are sorted"},{"line_number":2032,"context_line":"    first by the \u0027created_at\u0027 key and then by the \u0027id\u0027 key in descending"},{"line_number":2033,"context_line":"    order."},{"line_number":2034,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa1b9901_404b02b1","line":2031,"in_reply_to":"1a4dcd0f_54dc0474","updated":"2015-08-17 11:31:25.000000000","message":"Is sort as in the prefix of the function arguments (sort_keys and sort_dirs) that are being passed, not as in the verb.  But I\u0027ll change it as it seems to be hurting your eyes.","commit_id":"2d9ee99518f9094e824fe11f5d480636dcde623d"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"8c3c7e1fdca3457c02a2516456153d390c64e24d","unresolved":false,"context_lines":[{"line_number":2111,"context_line":"                                offset\u003dNone):"},{"line_number":2112,"context_line":"    \"\"\"\"Retrieves all snapshots in a project."},{"line_number":2113,"context_line":""},{"line_number":2114,"context_line":"    If no sort parameters are specified then returned snapshots are sorted"},{"line_number":2115,"context_line":"    first by the \u0027created_at\u0027 key and then by the \u0027id\u0027 key in descending"},{"line_number":2116,"context_line":"    order."},{"line_number":2117,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_94f12c04","line":2114,"updated":"2015-08-14 13:23:35.000000000","message":"sort-\u003esorting","commit_id":"2d9ee99518f9094e824fe11f5d480636dcde623d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"63815a3c1ede267fe4ba80ed41833547ed614457","unresolved":false,"context_lines":[{"line_number":2065,"context_line":"        options(joinedload(\u0027snapshot_metadata\u0027))"},{"line_number":2066,"context_line":""},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":"def _process_snaps_filters(query, filters):"},{"line_number":2069,"context_line":"    if filters:"},{"line_number":2070,"context_line":"        # Ensure that filters\u0027 keys exist on the model"},{"line_number":2071,"context_line":"        for key in filters:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_7e85fbcc","line":2068,"updated":"2015-08-25 19:19:26.000000000","message":"Please, re-use is_valid_model_filter method.","commit_id":"f10abc459fc6c441e07fb2bc9b3176889786d2ad"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d597eaac58c2ad0cd6f5c844ab292fe8691a23ad","unresolved":false,"context_lines":[{"line_number":2065,"context_line":"        options(joinedload(\u0027snapshot_metadata\u0027))"},{"line_number":2066,"context_line":""},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":"def _process_snaps_filters(query, filters):"},{"line_number":2069,"context_line":"    if filters:"},{"line_number":2070,"context_line":"        # Ensure that filters\u0027 keys exist on the model"},{"line_number":2071,"context_line":"        for key in filters:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_4cb3ad9a","line":2068,"in_reply_to":"fa1b9901_7e85fbcc","updated":"2015-08-25 20:07:36.000000000","message":"Done","commit_id":"f10abc459fc6c441e07fb2bc9b3176889786d2ad"}],"cinder/tests/unit/api/v2/test_snapshots.py":[{"author":{"_account_id":13636,"name":"Anton A","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"4ffc2fc64a92308562a78e27da9ad81e6d8fb7cd","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                stubs.stub_snapshot(2, display_name\u003d\u0027snap2\u0027),"},{"line_number":468,"context_line":"            ]"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        self.stubs.Set(db, \u0027snapshot_get_all_by_project\u0027,"},{"line_number":471,"context_line":"                       stub_snapshot_get_all_by_project)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        # Negative limit"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_7a74dd34","line":470,"updated":"2015-06-25 09:33:56.000000000","message":"Please don\u0027t introduce new mox stubs to tests, we are trying to avoid this: https://wiki.openstack.org/wiki/Cinder/how-to-contribute-a-driver#Writing_Code","commit_id":"84d16f44b93432d0a3246587d23fb465b0dfb9b9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"74f94ea30343bbfef1932439510d79142edd8f27","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                stubs.stub_snapshot(2, display_name\u003d\u0027snap2\u0027),"},{"line_number":468,"context_line":"            ]"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        self.stubs.Set(db, \u0027snapshot_get_all_by_project\u0027,"},{"line_number":471,"context_line":"                       stub_snapshot_get_all_by_project)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        # Negative limit"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_fb41cf63","line":470,"in_reply_to":"fa32b979_7a74dd34","updated":"2015-06-25 10:22:32.000000000","message":"I don\u0027t usually use mox stubs, but in this case I did it on purpose for consistency with the rest of the tests in this file.  More than happy to change it.","commit_id":"84d16f44b93432d0a3246587d23fb465b0dfb9b9"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"cbf1cc22c1a06cb870076908ad7db42d556e532e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                       stubs.stub_snapshot_get_all_by_project)"},{"line_number":85,"context_line":"        self.stubs.Set(db, \u0027snapshot_get_all\u0027,"},{"line_number":86,"context_line":"                       stubs.stub_snapshot_get_all)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.ctx \u003d context.RequestContext(\u0027admin\u0027, \u0027fakeproject\u0027, True)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    @mock.patch("}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_f2edec25","line":87,"updated":"2015-08-19 05:03:00.000000000","message":"Are you intentional to leave an empty line?","commit_id":"f10abc459fc6c441e07fb2bc9b3176889786d2ad"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dbcb1e5af9eac9755ccc006c2b08ca5eabd1e5a8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                       stubs.stub_snapshot_get_all_by_project)"},{"line_number":85,"context_line":"        self.stubs.Set(db, \u0027snapshot_get_all\u0027,"},{"line_number":86,"context_line":"                       stubs.stub_snapshot_get_all)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.ctx \u003d context.RequestContext(\u0027admin\u0027, \u0027fakeproject\u0027, True)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    @mock.patch("}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_e835f8d9","line":87,"in_reply_to":"fa1b9901_f2edec25","updated":"2015-08-19 07:49:21.000000000","message":"I\u0027ll fix this if I need to upload another patch","commit_id":"f10abc459fc6c441e07fb2bc9b3176889786d2ad"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"cbf1cc22c1a06cb870076908ad7db42d556e532e","unresolved":false,"context_lines":[{"line_number":355,"context_line":"            req \u003d fakes.HTTPRequest.blank(\u0027/v2/snapshots?limit\u003d1\u0026offset\u003d3\u0027)"},{"line_number":356,"context_line":"            self.assertEqual({\u0027snapshots\u0027: []}, self.controller.index(req))"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        self.stubs.UnsetAll()"},{"line_number":359,"context_line":"        volume, snaps \u003d self._create_db_snapshots(3)"},{"line_number":360,"context_line":"        # admin case"},{"line_number":361,"context_line":"        list_snapshots_with_limit_and_offset(snaps, is_admin\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_72931ca4","line":358,"updated":"2015-08-19 05:03:00.000000000","message":"I am afraid that we do not expect changes on self.stubs any more.\nI think you have already got @mock to cover everything you need, right?","commit_id":"f10abc459fc6c441e07fb2bc9b3176889786d2ad"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5c234569f9d5f77bb4f76c3fb40ef3507677e0ea","unresolved":false,"context_lines":[{"line_number":355,"context_line":"            req \u003d fakes.HTTPRequest.blank(\u0027/v2/snapshots?limit\u003d1\u0026offset\u003d3\u0027)"},{"line_number":356,"context_line":"            self.assertEqual({\u0027snapshots\u0027: []}, self.controller.index(req))"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        self.stubs.UnsetAll()"},{"line_number":359,"context_line":"        volume, snaps \u003d self._create_db_snapshots(3)"},{"line_number":360,"context_line":"        # admin case"},{"line_number":361,"context_line":"        list_snapshots_with_limit_and_offset(snaps, is_admin\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_2141fb39","line":358,"in_reply_to":"fa1b9901_4ea0de90","updated":"2015-08-24 09:39:16.000000000","message":"There are tests still using them.","commit_id":"f10abc459fc6c441e07fb2bc9b3176889786d2ad"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dbcb1e5af9eac9755ccc006c2b08ca5eabd1e5a8","unresolved":false,"context_lines":[{"line_number":355,"context_line":"            req \u003d fakes.HTTPRequest.blank(\u0027/v2/snapshots?limit\u003d1\u0026offset\u003d3\u0027)"},{"line_number":356,"context_line":"            self.assertEqual({\u0027snapshots\u0027: []}, self.controller.index(req))"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        self.stubs.UnsetAll()"},{"line_number":359,"context_line":"        volume, snaps \u003d self._create_db_snapshots(3)"},{"line_number":360,"context_line":"        # admin case"},{"line_number":361,"context_line":"        list_snapshots_with_limit_and_offset(snaps, is_admin\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_a82700b5","line":358,"in_reply_to":"fa1b9901_72931ca4","updated":"2015-08-19 07:49:21.000000000","message":"You do realize that this is not using stubs? This is actually removing the stubs set in setUp so I can use mock and real DB access instead","commit_id":"f10abc459fc6c441e07fb2bc9b3176889786d2ad"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"5bde07aa2d4b5c676b001fd67f77ab0eadc25aef","unresolved":false,"context_lines":[{"line_number":355,"context_line":"            req \u003d fakes.HTTPRequest.blank(\u0027/v2/snapshots?limit\u003d1\u0026offset\u003d3\u0027)"},{"line_number":356,"context_line":"            self.assertEqual({\u0027snapshots\u0027: []}, self.controller.index(req))"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        self.stubs.UnsetAll()"},{"line_number":359,"context_line":"        volume, snaps \u003d self._create_db_snapshots(3)"},{"line_number":360,"context_line":"        # admin case"},{"line_number":361,"context_line":"        list_snapshots_with_limit_and_offset(snaps, is_admin\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_4ea0de90","line":358,"in_reply_to":"fa1b9901_a82700b5","updated":"2015-08-24 09:30:17.000000000","message":"If no other tests are still using the lines in setup, why not just remove the lines in setUp? If there are tests using it, you can tentatively leave it like this.","commit_id":"f10abc459fc6c441e07fb2bc9b3176889786d2ad"}]}
