)]}'
{"openstack_dashboard/api/cinder.py":[{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"b5e4ecea33da9e4dae301ba1892cd0cdbe8de364","unresolved":false,"context_lines":[{"line_number":42,"context_line":"DEFAULT_QUOTA_NAME \u003d \u0027default\u0027"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"VERSIONS \u003d base.APIVersionManager(\"volume\", preferred_version\u003d2)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"PAGE_SIZE \u003d getattr(settings, \"API_RESULT_PAGE_SIZE\", 20)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_0259cf8d","line":45,"updated":"2014-09-03 06:44:45.000000000","message":"Bumping up preferred_version is just because only v2 API support pagination?","commit_id":"9f255e444bacabe600a53b899a8fd369e552092a"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"c946eef551b11c17ba15f7517baa44dc64e65dfe","unresolved":false,"context_lines":[{"line_number":42,"context_line":"DEFAULT_QUOTA_NAME \u003d \u0027default\u0027"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"VERSIONS \u003d base.APIVersionManager(\"volume\", preferred_version\u003d2)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"PAGE_SIZE \u003d getattr(settings, \"API_RESULT_PAGE_SIZE\", 20)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_dca5dc47","line":45,"in_reply_to":"fa98f980_0259cf8d","updated":"2014-09-03 15:54:04.000000000","message":"Yes, pagination is the reason that I bumped the version here.","commit_id":"9f255e444bacabe600a53b899a8fd369e552092a"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"b5e4ecea33da9e4dae301ba1892cd0cdbe8de364","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"VERSIONS \u003d base.APIVersionManager(\"volume\", preferred_version\u003d2)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"PAGE_SIZE \u003d getattr(settings, \"API_RESULT_PAGE_SIZE\", 20)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"try:"},{"line_number":50,"context_line":"    from cinderclient.v1 import client as cinder_client_v1"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_b7f04a68","line":47,"updated":"2014-09-03 06:44:45.000000000","message":"what\u0027s the purpose of this? seems PAGE_SIZE isn\u0027t used anywhere.","commit_id":"9f255e444bacabe600a53b899a8fd369e552092a"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"c946eef551b11c17ba15f7517baa44dc64e65dfe","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"VERSIONS \u003d base.APIVersionManager(\"volume\", preferred_version\u003d2)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"PAGE_SIZE \u003d getattr(settings, \"API_RESULT_PAGE_SIZE\", 20)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"try:"},{"line_number":50,"context_line":"    from cinderclient.v1 import client as cinder_client_v1"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_7c6f902b","line":47,"in_reply_to":"fa98f980_b7f04a68","updated":"2014-09-03 15:54:04.000000000","message":"you are right. I need to remove this.","commit_id":"9f255e444bacabe600a53b899a8fd369e552092a"},{"author":{"_account_id":12355,"name":"Vlad Okhrimenko","email":"vokhrimenko@mirantis.com","username":"vokhrimenko"},"change_message_id":"4dc1e411c8fb9c3182bb3c84e66157bbb8804239","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    search option: {\u0027all_tenants\u0027: 1}"},{"line_number":195,"context_line":"    \"\"\""},{"line_number":196,"context_line":"    volumes, has_more, has_prev \u003d volume_list_paginate(request\u003drequest,"},{"line_number":197,"context_line":"        search_opts\u003dsearch_opts, marker\u003dNone, paginate\u003dFalse)"},{"line_number":198,"context_line":"    return volumes"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da9df570_41dcc273","line":197,"updated":"2014-09-25 08:26:31.000000000","message":"Sorry, explain me  please --- why we use marker\u003dNone ? (i think we not need use it)","commit_id":"88b45f6e47a4a9c08042283d363129116fdd27d8"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"84322e96b2b7374eeb27d6b2077dfe233fec218d","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    search option: {\u0027all_tenants\u0027: 1}"},{"line_number":195,"context_line":"    \"\"\""},{"line_number":196,"context_line":"    volumes, has_more, has_prev \u003d volume_list_paginate(request\u003drequest,"},{"line_number":197,"context_line":"        search_opts\u003dsearch_opts, marker\u003dNone, paginate\u003dFalse)"},{"line_number":198,"context_line":"    return volumes"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da9df570_5ecc946a","line":197,"in_reply_to":"da9df570_41dcc273","updated":"2014-09-25 15:55:33.000000000","message":"You are right that logically the code flow doesn\u0027t need it. It\u0027s here as a safe guard... defensive programming if you will.\n\nThis will make sure that if the volume_list_paginate method parameter defaults change in the future, volume_list will still work as intended.\n\nAlso it serves as a reminder to others who might be touching the code in the future that the volume_list method should not use marker at all.","commit_id":"88b45f6e47a4a9c08042283d363129116fdd27d8"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"014bc818ad60995adf17b37108c637fabd251171","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    \"\"\"To see all volumes in the cloud as an admin you can pass in a special"},{"line_number":194,"context_line":"    search option: {\u0027all_tenants\u0027: 1}"},{"line_number":195,"context_line":"    \"\"\""},{"line_number":196,"context_line":"    volumes, has_more, has_prev \u003d volume_list_paginate(request\u003drequest,"},{"line_number":197,"context_line":"        search_opts\u003dsearch_opts, marker\u003dNone, paginate\u003dFalse)"},{"line_number":198,"context_line":"    return volumes"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_1b5c7118","line":196,"updated":"2014-10-09 02:13:25.000000000","message":"same thoughts as vlad on patch 4: not sure why we don\u0027t just keep have one method: volume_list.  sure we may have to alter many test cases, but it seems like what is done elsewhere (nova, glance, etc.)","commit_id":"eb59a67ece8fb106301f6bdee62b7fb8b5930c0e"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"5e65d5563936e4edc973e548b0e8ca3c52b87896","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    \"\"\"To see all volumes in the cloud as an admin you can pass in a special"},{"line_number":194,"context_line":"    search option: {\u0027all_tenants\u0027: 1}"},{"line_number":195,"context_line":"    \"\"\""},{"line_number":196,"context_line":"    volumes, has_more, has_prev \u003d volume_list_paginate(request\u003drequest,"},{"line_number":197,"context_line":"        search_opts\u003dsearch_opts, marker\u003dNone, paginate\u003dFalse)"},{"line_number":198,"context_line":"    return volumes"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_c66fbf90","line":196,"in_reply_to":"baa201ad_1b5c7118","updated":"2014-10-15 23:27:46.000000000","message":"Done","commit_id":"eb59a67ece8fb106301f6bdee62b7fb8b5930c0e"},{"author":{"_account_id":12355,"name":"Vlad Okhrimenko","email":"vokhrimenko@mirantis.com","username":"vokhrimenko"},"change_message_id":"e7a70073ce7ebf56fec15d69c61e8c8d35c829aa","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    search option: {\u0027all_tenants\u0027: 1}"},{"line_number":195,"context_line":"    \"\"\""},{"line_number":196,"context_line":"    volumes, has_more, has_prev \u003d volume_list_paginate(request\u003drequest,"},{"line_number":197,"context_line":"        search_opts\u003dsearch_opts, marker\u003dNone, paginate\u003dFalse)"},{"line_number":198,"context_line":"    return volumes"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_fc4240a9","line":197,"updated":"2014-10-09 08:33:25.000000000","message":"Agree with Cindy","commit_id":"eb59a67ece8fb106301f6bdee62b7fb8b5930c0e"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"5e65d5563936e4edc973e548b0e8ca3c52b87896","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    search option: {\u0027all_tenants\u0027: 1}"},{"line_number":195,"context_line":"    \"\"\""},{"line_number":196,"context_line":"    volumes, has_more, has_prev \u003d volume_list_paginate(request\u003drequest,"},{"line_number":197,"context_line":"        search_opts\u003dsearch_opts, marker\u003dNone, paginate\u003dFalse)"},{"line_number":198,"context_line":"    return volumes"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_865a17f0","line":197,"in_reply_to":"baa201ad_fc4240a9","updated":"2014-10-15 23:27:46.000000000","message":"Done","commit_id":"eb59a67ece8fb106301f6bdee62b7fb8b5930c0e"},{"author":{"_account_id":12355,"name":"Vlad Okhrimenko","email":"vokhrimenko@mirantis.com","username":"vokhrimenko"},"change_message_id":"e7a70073ce7ebf56fec15d69c61e8c8d35c829aa","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"def volume_list_paginate(request, search_opts\u003dNone, marker\u003dNone, paginate\u003dTrue,"},{"line_number":202,"context_line":"                sort_dir\u003d\"desc\"):"},{"line_number":203,"context_line":"    \"\"\"To see all volumes in the cloud as an admin you can pass in a special"},{"line_number":204,"context_line":"    search option: {\u0027all_tenants\u0027: 1}"},{"line_number":205,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_fcdec0d8","line":202,"updated":"2014-10-09 08:33:25.000000000","message":"strange alignment","commit_id":"eb59a67ece8fb106301f6bdee62b7fb8b5930c0e"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"5e65d5563936e4edc973e548b0e8ca3c52b87896","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"def volume_list_paginate(request, search_opts\u003dNone, marker\u003dNone, paginate\u003dTrue,"},{"line_number":202,"context_line":"                sort_dir\u003d\"desc\"):"},{"line_number":203,"context_line":"    \"\"\"To see all volumes in the cloud as an admin you can pass in a special"},{"line_number":204,"context_line":"    search option: {\u0027all_tenants\u0027: 1}"},{"line_number":205,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_e668438a","line":202,"in_reply_to":"baa201ad_fcdec0d8","updated":"2014-10-15 23:27:46.000000000","message":"Done","commit_id":"eb59a67ece8fb106301f6bdee62b7fb8b5930c0e"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"014bc818ad60995adf17b37108c637fabd251171","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return [Volume(v) for v in volumes], has_more_data, has_prev_data"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    volumes \u003d c_client.volumes.list(search_opts\u003dsearch_opts)"},{"line_number":232,"context_line":"    return [Volume(v) for v in volumes], False, False"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"def volume_get(request, volume_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_7bf2dd06","line":232,"updated":"2014-10-09 02:13:25.000000000","message":"it seems weird to declare it False, False.  should just have one return statement at the end here since has_more_data, has_prev_data are False by default","commit_id":"eb59a67ece8fb106301f6bdee62b7fb8b5930c0e"},{"author":{"_account_id":12355,"name":"Vlad Okhrimenko","email":"vokhrimenko@mirantis.com","username":"vokhrimenko"},"change_message_id":"e7a70073ce7ebf56fec15d69c61e8c8d35c829aa","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return [Volume(v) for v in volumes], has_more_data, has_prev_data"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    volumes \u003d c_client.volumes.list(search_opts\u003dsearch_opts)"},{"line_number":232,"context_line":"    return [Volume(v) for v in volumes], False, False"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"def volume_get(request, volume_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_fc708009","line":232,"updated":"2014-10-09 08:33:25.000000000","message":"maybe should like this:\ndef volume_list_paginate(request, search_opts\u003dNone, marker\u003dNone, paginate\u003dTrue,\n                         sort_dir\u003d\"desc\"):\n......\n    has_more_data \u003d False\n    has_prev_data \u003d False\n\n    c_client \u003d cinderclient(request)\n    if c_client is None:\n        return [], has_more_data, has_prev_data\n........\n    volumes \u003d c_client.volumes.list(search_opts\u003dsearch_opts)\n    return [Volume(v) for v in volumes], has_more_data, has_prev_data","commit_id":"eb59a67ece8fb106301f6bdee62b7fb8b5930c0e"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"5e65d5563936e4edc973e548b0e8ca3c52b87896","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return [Volume(v) for v in volumes], has_more_data, has_prev_data"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    volumes \u003d c_client.volumes.list(search_opts\u003dsearch_opts)"},{"line_number":232,"context_line":"    return [Volume(v) for v in volumes], False, False"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"def volume_get(request, volume_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_660c53ed","line":232,"in_reply_to":"baa201ad_7bf2dd06","updated":"2014-10-15 23:27:46.000000000","message":"Done","commit_id":"eb59a67ece8fb106301f6bdee62b7fb8b5930c0e"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"5e65d5563936e4edc973e548b0e8ca3c52b87896","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return [Volume(v) for v in volumes], has_more_data, has_prev_data"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    volumes \u003d c_client.volumes.list(search_opts\u003dsearch_opts)"},{"line_number":232,"context_line":"    return [Volume(v) for v in volumes], False, False"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"def volume_get(request, volume_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_86113706","line":232,"in_reply_to":"baa201ad_fc708009","updated":"2014-10-15 23:27:46.000000000","message":"Done","commit_id":"eb59a67ece8fb106301f6bdee62b7fb8b5930c0e"},{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"9c1842d539c0f750fd2d11264d247df1e2bfa34a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    (\u0027both\u0027, pgettext_lazy(\u0027Both of front-end and back-end\u0027, u\u0027both\u0027)),"},{"line_number":50,"context_line":")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"VERSIONS \u003d base.APIVersionManager(\"volume\", preferred_version\u003d2)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"try:"},{"line_number":55,"context_line":"    from cinderclient.v1 import client as cinder_client_v1"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_d421f09e","line":52,"updated":"2014-10-18 01:18:56.000000000","message":"there is a blueprint for that the preferred version change. The change is simple, But more testing is involved, you might want to do diligent testing in volume area. You also need to deal with local_settings ...\n\nhttps://blueprints.launchpad.net/horizon/+spec/horizon-cinder-v2-preferred-version","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"234a66162abcd9a9d2a5a668faa8924f8c360561","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    (\u0027both\u0027, pgettext_lazy(\u0027Both of front-end and back-end\u0027, u\u0027both\u0027)),"},{"line_number":50,"context_line":")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"VERSIONS \u003d base.APIVersionManager(\"volume\", preferred_version\u003d2)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"try:"},{"line_number":55,"context_line":"    from cinderclient.v1 import client as cinder_client_v1"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_5ab817e5","line":52,"in_reply_to":"baa201ad_d421f09e","updated":"2014-10-23 19:51:44.000000000","message":"I was not aware of this blue print.  It looks like the patch set was submitted for review yesterday.\n\nhttps://review.openstack.org/#/c/130398/\n\nI\u0027ll remove my code and tests that deal with the version change and wait for that patch to merge.\n\nI have tested with local_settings, i.e. if you set the volume version to 1 in local_settings, it overrides the preferred_version here and no pagination is done.","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"34236856784a4d933230bba8b29484ce30a3db61","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            v.transfer \u003d transfers.get(v.id)"},{"line_number":228,"context_line":"            volumes.append(Volume(v))"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    return volumes, has_more_data, has_prev_data"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"def volume_get(request, volume_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"da9b358b_b2a9bc7d","line":230,"updated":"2015-04-01 03:19:06.000000000","message":"You should fix that else where are calling this method, like https://git.openstack.org/cgit/openstack/horizon/tree/openstack_dashboard/usage/quotas.py#n325, https://git.openstack.org/cgit/openstack/horizon/tree/openstack_dashboard/dashboards/project/instances/workflows/create_instance.py#n462","commit_id":"c7083a1fb88b258d9184b6721fea8e0fb4f5d2ed"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    return api_version[\u0027version\u0027]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"def volume_list(request, search_opts\u003dNone, marker\u003dNone, paginate\u003dFalse,"},{"line_number":193,"context_line":"                sort_dir\u003d\"desc\"):"},{"line_number":194,"context_line":"    \"\"\"To see all volumes in the cloud as an admin you can pass in a special"},{"line_number":195,"context_line":"    search option: {\u0027all_tenants\u0027: 1}"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_43e89db4","line":192,"updated":"2015-11-05 14:13:46.000000000","message":"Here a new `volume_list_paged()` function could be defined (with the same body), while the function `volume_list()` would just call `volume_list_paged(request, search_opts, paginate\u003dFalse)` discarding two logical flags. This would allow to avoid all the changes where old `volume_list()` was used and keep the code clearer.","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"}],"openstack_dashboard/api/rest/cinder.py":[{"author":{"_account_id":7549,"name":"Ekaterina Chernova","email":"katyafervent@yandex.ru","username":"efedorova"},"change_message_id":"58d67a324fdd058a235eb1352046950c585c0a1b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if request.GET.get(\u0027all_projects\u0027) \u003d\u003d \u0027true\u0027:"},{"line_number":61,"context_line":"            result, has_more_data, has_prev_data \u003d api.cinder.volume_list("},{"line_number":62,"context_line":"                request,"},{"line_number":63,"context_line":"                {\u0027all_tenants\u0027: 1}"},{"line_number":64,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_32c0422a","line":61,"updated":"2015-09-03 09:36:43.000000000","message":"why do you turn off the pagination by default? I think paginate\u003dTrue should be passes here","commit_id":"d948fa9dca62cfed821958378209317cf0bd640e"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"738bca4ce578bfb855e8897388be87b27ad21551","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if request.GET.get(\u0027all_projects\u0027) \u003d\u003d \u0027true\u0027:"},{"line_number":61,"context_line":"            result, has_more_data, has_prev_data \u003d api.cinder.volume_list("},{"line_number":62,"context_line":"                request,"},{"line_number":63,"context_line":"                {\u0027all_tenants\u0027: 1}"},{"line_number":64,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_ff184e77","line":61,"in_reply_to":"da20952f_32c0422a","updated":"2015-09-03 11:25:57.000000000","message":"Cindy (or Mingyan), I believe here you need to describe all_projects query param. If I understand correctly, you need it to get the current usage of volumes for displaying quota charts, is that true? If it is, it\u0027s worth mentioning in doc string (i.e. that doesn\u0027t go anywhere else and thus it doesn\u0027t make sense to specify paginate\u003dTrue). Also, it might be clearer to rename \u0027all_projects\u0027 param to something like \u0027query_total_usage\u0027 (if my above guess is correct).","commit_id":"d948fa9dca62cfed821958378209317cf0bd640e"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ce2e69c0d7147ee67dcdc8d9fc1a01e9ea14f737","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if request.GET.get(\u0027all_projects\u0027) \u003d\u003d \u0027true\u0027:"},{"line_number":61,"context_line":"            result, has_more_data, has_prev_data \u003d api.cinder.volume_list("},{"line_number":62,"context_line":"                request,"},{"line_number":63,"context_line":"                {\u0027all_tenants\u0027: 1}"},{"line_number":64,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_8ab8122c","line":61,"in_reply_to":"da20952f_d33839d7","updated":"2015-09-09 16:50:29.000000000","message":"Cindy, forgive me my carelessness. Is it indeed being used for getting current volume usage? If it is so, it makes sense to reflect it in docstring (at least add some comments w/o changing the parameter name).","commit_id":"d948fa9dca62cfed821958378209317cf0bd640e"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"7c4b66ac78574cafec6f9c96bf32d393c17c7d0e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if request.GET.get(\u0027all_projects\u0027) \u003d\u003d \u0027true\u0027:"},{"line_number":61,"context_line":"            result, has_more_data, has_prev_data \u003d api.cinder.volume_list("},{"line_number":62,"context_line":"                request,"},{"line_number":63,"context_line":"                {\u0027all_tenants\u0027: 1}"},{"line_number":64,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_d33839d7","line":61,"in_reply_to":"da20952f_ff184e77","updated":"2015-09-09 00:19:36.000000000","message":"Hi Ekaterina and Timur, \u0027all_projects\u0027 is defined in L42.","commit_id":"d948fa9dca62cfed821958378209317cf0bd640e"}],"openstack_dashboard/dashboards/admin/volumes/tabs.py":[{"author":{"_account_id":7549,"name":"Ekaterina Chernova","email":"katyafervent@yandex.ru","username":"efedorova"},"change_message_id":"58d67a324fdd058a235eb1352046950c585c0a1b","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                    search_opts\u003d{\u0027all_tenants\u0027: True})"},{"line_number":132,"context_line":"                volumes \u003d cinder.volume_list("},{"line_number":133,"context_line":"                    self.request,"},{"line_number":134,"context_line":"                    search_opts\u003d{\u0027all_tenants\u0027: True})[0]"},{"line_number":135,"context_line":"                volumes \u003d dict((v.id, v) for v in volumes)"},{"line_number":136,"context_line":"            except Exception:"},{"line_number":137,"context_line":"                snapshots \u003d []"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_d204667f","line":134,"updated":"2015-09-03 09:36:43.000000000","message":"are you 100% sure that keyerror will not be raised?","commit_id":"d948fa9dca62cfed821958378209317cf0bd640e"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"738bca4ce578bfb855e8897388be87b27ad21551","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                    search_opts\u003d{\u0027all_tenants\u0027: True})"},{"line_number":132,"context_line":"                volumes \u003d cinder.volume_list("},{"line_number":133,"context_line":"                    self.request,"},{"line_number":134,"context_line":"                    search_opts\u003d{\u0027all_tenants\u0027: True})[0]"},{"line_number":135,"context_line":"                volumes \u003d dict((v.id, v) for v in volumes)"},{"line_number":136,"context_line":"            except Exception:"},{"line_number":137,"context_line":"                snapshots \u003d []"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_1cf99080","line":134,"in_reply_to":"da20952f_d204667f","updated":"2015-09-03 11:25:57.000000000","message":"why should it? It returns 3-elements tuple, with volumes as the first element and 2 flags after it. No matter which cinder API is used these 2 flags (has_more_data and has_prev_data) are always returned","commit_id":"d948fa9dca62cfed821958378209317cf0bd640e"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        return volumes"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def has_prev_data(self, table):"},{"line_number":65,"context_line":"        return self._has_prev_data"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def has_more_data(self, table):"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_233c792e","line":64,"updated":"2015-11-05 14:13:46.000000000","message":"I suggest to move out all pagination-related helper methods (which are very often the same for different tables) to a separate mixin.","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                    search_opts\u003d{\u0027all_tenants\u0027: True})"},{"line_number":132,"context_line":"                volumes \u003d cinder.volume_list("},{"line_number":133,"context_line":"                    self.request,"},{"line_number":134,"context_line":"                    search_opts\u003d{\u0027all_tenants\u0027: True})[0]"},{"line_number":135,"context_line":"                volumes \u003d dict((v.id, v) for v in volumes)"},{"line_number":136,"context_line":"            except Exception:"},{"line_number":137,"context_line":"                snapshots \u003d []"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_23f55982","line":134,"updated":"2015-11-05 14:13:46.000000000","message":"could be avoided","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"}],"openstack_dashboard/dashboards/admin/volumes/tests.py":[{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"9c1842d539c0f750fd2d11264d247df1e2bfa34a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                        keystone: (\u0027tenant_list\u0027,)})"},{"line_number":37,"context_line":"    def test_index(self):"},{"line_number":38,"context_line":"        cinder.volume_list(IsA(http.HttpRequest), sort_dir\u003d\"desc\","},{"line_number":39,"context_line":"                           marker\u003dNone, paginate\u003dTrue,"},{"line_number":40,"context_line":"                           search_opts\u003d{\u0027all_tenants\u0027: True})\\"},{"line_number":41,"context_line":"            .AndReturn([self.cinder_volumes.list(), False, False])"},{"line_number":42,"context_line":"        api.nova.server_list(IsA(http.HttpRequest), search_opts\u003d{"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_1504347d","line":39,"updated":"2014-10-18 01:18:56.000000000","message":"paginate here is supposed to be False? It is more for readability, For this test , it looks like it doesn\u0027t deal with paginate...","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"234a66162abcd9a9d2a5a668faa8924f8c360561","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                        keystone: (\u0027tenant_list\u0027,)})"},{"line_number":37,"context_line":"    def test_index(self):"},{"line_number":38,"context_line":"        cinder.volume_list(IsA(http.HttpRequest), sort_dir\u003d\"desc\","},{"line_number":39,"context_line":"                           marker\u003dNone, paginate\u003dTrue,"},{"line_number":40,"context_line":"                           search_opts\u003d{\u0027all_tenants\u0027: True})\\"},{"line_number":41,"context_line":"            .AndReturn([self.cinder_volumes.list(), False, False])"},{"line_number":42,"context_line":"        api.nova.server_list(IsA(http.HttpRequest), search_opts\u003d{"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_8595c488","line":39,"in_reply_to":"9aa7fdbe_1504347d","updated":"2014-10-23 19:51:44.000000000","message":"This is to stub out the call made on line 36 in openstack_dashboard/dashboards/project/volumes/tabs.py","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"}],"openstack_dashboard/dashboards/project/instances/workflows/create_instance.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                available \u003d api.cinder.VOLUME_STATE_AVAILABLE"},{"line_number":472,"context_line":"                volumes \u003d [self._get_volume_display_name(v)"},{"line_number":473,"context_line":"                           for v in cinder.volume_list(self.request,"},{"line_number":474,"context_line":"                           search_opts\u003ddict(status\u003davailable, bootable\u003d1))[0]]"},{"line_number":475,"context_line":"        except Exception:"},{"line_number":476,"context_line":"            exceptions.handle(self.request,"},{"line_number":477,"context_line":"                              _(\u0027Unable to retrieve list of volumes.\u0027))"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_23231907","line":474,"updated":"2015-11-05 14:13:46.000000000","message":"could be avoided","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"}],"openstack_dashboard/dashboards/project/volumes/backups/forms.py":[{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"97aa5e46efc70d96d565a09741e77ae5e6604e3a","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        try:"},{"line_number":77,"context_line":"            volumes \u003d api.cinder.volume_list(request)[0]"},{"line_number":78,"context_line":"        except Exception:"},{"line_number":79,"context_line":"            msg \u003d _(\u0027Unable to lookup volume or backup information.\u0027)"},{"line_number":80,"context_line":"            redirect \u003d reverse(\u0027horizon:project:volumes:index\u0027)"},{"line_number":81,"context_line":"            exceptions.handle(request, msg, redirect\u003dredirect)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8c0949_7e0a6822","line":78,"updated":"2014-11-05 12:37:15.000000000","message":"Could you please explain, why do we use [0] element here and in the following files?","commit_id":"518e39315c4d6e833a32894ae456d342d3455f53"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"e228e99111d81013d23e43eb9e3e9517f1fa76f5","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        try:"},{"line_number":77,"context_line":"            volumes \u003d api.cinder.volume_list(request)[0]"},{"line_number":78,"context_line":"        except Exception:"},{"line_number":79,"context_line":"            msg \u003d _(\u0027Unable to lookup volume or backup information.\u0027)"},{"line_number":80,"context_line":"            redirect \u003d reverse(\u0027horizon:project:volumes:index\u0027)"},{"line_number":81,"context_line":"            exceptions.handle(request, msg, redirect\u003dredirect)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8c0949_82d795ec","line":78,"in_reply_to":"7a8c0949_6ade1b6f","updated":"2014-11-07 09:09:11.000000000","message":"Ok, thanks. I dind\u0027t know that volume_list() return this structure (volumes, has_more, has_prev).","commit_id":"518e39315c4d6e833a32894ae456d342d3455f53"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"219d900ab7033a8f776fcdcdaee88f9546501f35","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        try:"},{"line_number":77,"context_line":"            volumes \u003d api.cinder.volume_list(request)[0]"},{"line_number":78,"context_line":"        except Exception:"},{"line_number":79,"context_line":"            msg \u003d _(\u0027Unable to lookup volume or backup information.\u0027)"},{"line_number":80,"context_line":"            redirect \u003d reverse(\u0027horizon:project:volumes:index\u0027)"},{"line_number":81,"context_line":"            exceptions.handle(request, msg, redirect\u003dredirect)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8c0949_6ade1b6f","line":78,"in_reply_to":"7a8c0949_7e0a6822","updated":"2014-11-05 20:20:27.000000000","message":"api.cinder.volume_list() returns a tuple (volumes, has_more, has_prev).\n\nThere are two popular options of getting the value you want from a returned tuple while ignoring the rest:\n    1. volumes, _, _ \u003d api.cinder.volume_list()\n    2. volumes \u003d api.cinder.volume_list()[0]\n\nthe second option seemed more pythonic, and was more popular on stackoverflow.","commit_id":"518e39315c4d6e833a32894ae456d342d3455f53"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        super(RestoreBackupForm, self).__init__(request, *args, **kwargs)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            volumes \u003d api.cinder.volume_list(request)[0]"},{"line_number":77,"context_line":"        except Exception:"},{"line_number":78,"context_line":"            msg \u003d _(\u0027Unable to lookup volume or backup information.\u0027)"},{"line_number":79,"context_line":"            redirect \u003d reverse(\u0027horizon:project:volumes:index\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_a37dc9e8","line":76,"updated":"2015-11-05 14:13:46.000000000","message":"could be avoided","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"}],"openstack_dashboard/dashboards/project/volumes/tabs.py":[{"author":{"_account_id":8411,"name":"Andrew Lazarev","email":"alazarev@mirantis.com","username":"alazarev"},"change_message_id":"e1c4cdcdc9d346f9177412b40db261435deaf719","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                server_id \u003d att.get(\u0027server_id\u0027, None)"},{"line_number":69,"context_line":"                att[\u0027instance\u0027] \u003d instances.get(server_id, None)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _getMarker(self):"},{"line_number":72,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":73,"context_line":"            volume_tables.VolumesTable._meta.prev_pagination_param, None)"},{"line_number":74,"context_line":"        if prev_marker is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_4b034b73","line":71,"updated":"2014-09-09 00:15:08.000000000","message":"camel case is not \"python-like\" style","commit_id":"5af9982d983cf1e55ad837b53c47df354dd8418a"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"8bd8a84ecbab35cb5705f6c5bf03e43234ec3890","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                server_id \u003d att.get(\u0027server_id\u0027, None)"},{"line_number":69,"context_line":"                att[\u0027instance\u0027] \u003d instances.get(server_id, None)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _getMarker(self):"},{"line_number":72,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":73,"context_line":"            volume_tables.VolumesTable._meta.prev_pagination_param, None)"},{"line_number":74,"context_line":"        if prev_marker is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_d2cb9948","line":71,"in_reply_to":"fa98f980_4b034b73","updated":"2014-09-16 15:45:40.000000000","message":"Done","commit_id":"5af9982d983cf1e55ad837b53c47df354dd8418a"},{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"9c1842d539c0f750fd2d11264d247df1e2bfa34a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":74,"context_line":"            volume_tables.VolumesTable._meta.prev_pagination_param, None)"},{"line_number":75,"context_line":"        if prev_marker is not None:"},{"line_number":76,"context_line":"            return prev_marker, \"asc\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        marker \u003d self.request.GET.get("},{"line_number":79,"context_line":"            volume_tables.VolumesTable._meta.pagination_param, None)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_d833c1f4","line":76,"updated":"2014-10-18 01:18:56.000000000","message":"question: why do sorting \"asc\" or \"desc\" differently here?","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"234a66162abcd9a9d2a5a668faa8924f8c360561","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":74,"context_line":"            volume_tables.VolumesTable._meta.prev_pagination_param, None)"},{"line_number":75,"context_line":"        if prev_marker is not None:"},{"line_number":76,"context_line":"            return prev_marker, \"asc\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        marker \u003d self.request.GET.get("},{"line_number":79,"context_line":"            volume_tables.VolumesTable._meta.pagination_param, None)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_058ab469","line":76,"in_reply_to":"9aa7fdbe_d833c1f4","updated":"2014-10-23 19:51:44.000000000","message":"The list of volumes returned by the cinder api is by default in descending order by creation time.  So this means that going forward, i.e. clicking on the next link, the sort direction is always desc, and going backwards, i.e. clicking on the prev link, the sort direction needs to be asc to keep the same item order that\u0027s displayed on the UI.","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"},{"author":{"_account_id":14064,"name":"Kahou Lei","email":"kahou82@gmail.com","username":"kahou82"},"change_message_id":"3aa1fe21adca549faf81e19255dcaa6783228223","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            marker, sort_dir \u003d self._get_marker()"},{"line_number":38,"context_line":"            volumes, self._has_more_data, self._has_prev_data \u003d \\"},{"line_number":39,"context_line":"                api.cinder.volume_list(self.request, marker\u003dmarker,"},{"line_number":40,"context_line":"                                       search_opts\u003dsearch_opts,"},{"line_number":41,"context_line":"                                       sort_dir\u003dsort_dir, paginate\u003dTrue)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_992367a6","line":39,"updated":"2015-03-06 22:32:08.000000000","message":"Indent the parameters?","commit_id":"cde264096d3b810009e8a38aa8f9acc77846596e"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"400a1c9c203b630de9468533b6a8dc690c23fb5a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            marker, sort_dir \u003d self._get_marker()"},{"line_number":38,"context_line":"            volumes, self._has_more_data, self._has_prev_data \u003d \\"},{"line_number":39,"context_line":"                api.cinder.volume_list(self.request, marker\u003dmarker,"},{"line_number":40,"context_line":"                                       search_opts\u003dsearch_opts,"},{"line_number":41,"context_line":"                                       sort_dir\u003dsort_dir, paginate\u003dTrue)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_3bf038c9","line":39,"in_reply_to":"9a80dd14_992367a6","updated":"2015-03-10 23:34:24.000000000","message":"seem already indented?","commit_id":"cde264096d3b810009e8a38aa8f9acc77846596e"},{"author":{"_account_id":12355,"name":"Vlad Okhrimenko","email":"vokhrimenko@mirantis.com","username":"vokhrimenko"},"change_message_id":"9df5bb1188379f456344abd86b23c0ddcf7f1f75","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            return volumes"},{"line_number":47,"context_line":"        except Exception:"},{"line_number":48,"context_line":"            self._has_more_data \u003d False"},{"line_number":49,"context_line":"            self._has_prev_data \u003d False"},{"line_number":50,"context_line":"            exceptions.handle(self.request,"},{"line_number":51,"context_line":"                              _(\u0027Unable to retrieve volume list.\u0027))"},{"line_number":52,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_e2ac5aef","line":49,"updated":"2015-03-10 11:04:29.000000000","message":"sorry, explain me please  --- does it really need set `_has_more_data` and `_has_prev_data` to `False` ? If we get error in #39line --- this variable set to `False` by default","commit_id":"cde264096d3b810009e8a38aa8f9acc77846596e"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"400a1c9c203b630de9468533b6a8dc690c23fb5a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            return volumes"},{"line_number":47,"context_line":"        except Exception:"},{"line_number":48,"context_line":"            self._has_more_data \u003d False"},{"line_number":49,"context_line":"            self._has_prev_data \u003d False"},{"line_number":50,"context_line":"            exceptions.handle(self.request,"},{"line_number":51,"context_line":"                              _(\u0027Unable to retrieve volume list.\u0027))"},{"line_number":52,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_5bedecee","line":49,"in_reply_to":"9a80dd14_e2ac5aef","updated":"2015-03-10 23:34:24.000000000","message":"Done","commit_id":"cde264096d3b810009e8a38aa8f9acc77846596e"},{"author":{"_account_id":14064,"name":"Kahou Lei","email":"kahou82@gmail.com","username":"kahou82"},"change_message_id":"3aa1fe21adca549faf81e19255dcaa6783228223","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                server_id \u003d att.get(\u0027server_id\u0027, None)"},{"line_number":91,"context_line":"                att[\u0027instance\u0027] \u003d instances.get(server_id, None)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _get_marker(self):"},{"line_number":94,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":95,"context_line":"            volume_tables.VolumesTable._meta.prev_pagination_param, None)"},{"line_number":96,"context_line":"        if prev_marker is not None:"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_19185774","line":93,"updated":"2015-03-06 22:32:08.000000000","message":"The logic is kinda hard to read here. Will it be easier to write it like this?\n\nif prev_marker:\n    return prev_marker, \u0027asc\"\nelse:\n    marker \u003d  ....\n    if marker:\n       return marker, \"desc\"\n\nreturn None, \"desc\"","commit_id":"cde264096d3b810009e8a38aa8f9acc77846596e"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"400a1c9c203b630de9468533b6a8dc690c23fb5a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                server_id \u003d att.get(\u0027server_id\u0027, None)"},{"line_number":91,"context_line":"                att[\u0027instance\u0027] \u003d instances.get(server_id, None)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _get_marker(self):"},{"line_number":94,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":95,"context_line":"            volume_tables.VolumesTable._meta.prev_pagination_param, None)"},{"line_number":96,"context_line":"        if prev_marker is not None:"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_7bb9d0eb","line":93,"in_reply_to":"9a80dd14_19185774","updated":"2015-03-10 23:34:24.000000000","message":"Done","commit_id":"cde264096d3b810009e8a38aa8f9acc77846596e"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                                       search_opts\u003dsearch_opts,"},{"line_number":42,"context_line":"                                       sort_dir\u003dsort_dir, paginate\u003dTrue)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"            if sort_dir \u003d\u003d \"asc\":"},{"line_number":45,"context_line":"                volumes.reverse()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"            return volumes"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_c34fadbb","line":44,"updated":"2015-11-05 14:13:46.000000000","message":"Is it possible to move this transformation into the volume_list_[paged]() ?","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                server_id \u003d att.get(\u0027server_id\u0027, None)"},{"line_number":90,"context_line":"                att[\u0027instance\u0027] \u003d instances.get(server_id, None)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _get_marker(self):"},{"line_number":93,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":94,"context_line":"            volume_tables.VolumesTable._meta.prev_pagination_param, None)"},{"line_number":95,"context_line":"        if prev_marker:"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_83c8c523","line":92,"updated":"2015-11-05 14:13:46.000000000","message":"Suggest to move it into PagedTable mixin","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            volumes, instances, volume_ids_with_snapshots)"},{"line_number":118,"context_line":"        return volumes"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def has_prev_data(self, table):"},{"line_number":121,"context_line":"        return self._has_prev_data"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def has_more_data(self, table):"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_43d2ddd3","line":120,"updated":"2015-11-05 14:13:46.000000000","message":"Suggest to move it into PagedTable mixin","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if api.base.is_service_enabled(self.request, \u0027volume\u0027):"},{"line_number":136,"context_line":"            try:"},{"line_number":137,"context_line":"                snapshots \u003d api.cinder.volume_snapshot_list(self.request)"},{"line_number":138,"context_line":"                volumes \u003d api.cinder.volume_list(self.request)[0]"},{"line_number":139,"context_line":"                volumes \u003d dict((v.id, v) for v in volumes)"},{"line_number":140,"context_line":"            except Exception:"},{"line_number":141,"context_line":"                snapshots \u003d []"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_c3e6cdb3","line":138,"updated":"2015-11-05 14:13:46.000000000","message":"could be avoided","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    def get_volume_backups_data(self):"},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            backups \u003d api.cinder.volume_backup_list(self.request)"},{"line_number":168,"context_line":"            volumes \u003d api.cinder.volume_list(self.request)[0]"},{"line_number":169,"context_line":"            volumes \u003d dict((v.id, v) for v in volumes)"},{"line_number":170,"context_line":"            for backup in backups:"},{"line_number":171,"context_line":"                backup.volume \u003d volumes.get(backup.volume_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_23d8f9ee","line":168,"updated":"2015-11-05 14:13:46.000000000","message":"could be avoided","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"}],"openstack_dashboard/dashboards/project/volumes/test.py":[{"author":{"_account_id":12355,"name":"Vlad Okhrimenko","email":"vokhrimenko@mirantis.com","username":"vokhrimenko"},"change_message_id":"14353a3344b2dd30092544770d9fad2ae83dff69","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        api.cinder.volume_list_paginate(IsA(http.HttpRequest), marker\u003dmarker,"},{"line_number":97,"context_line":"            sort_dir\u003dsort_dir, search_opts\u003dNone).\\"},{"line_number":98,"context_line":"            AndReturn([volumes, has_more, has_prev])"},{"line_number":99,"context_line":"        api.nova.server_list(IsA(http.HttpRequest), search_opts\u003dNone).\\"},{"line_number":100,"context_line":"            AndReturn([self.servers.list(), False])"},{"line_number":101,"context_line":"        api.cinder.tenant_absolute_limits(IsA(http.HttpRequest)).MultipleTimes(). \\"},{"line_number":102,"context_line":"            AndReturn(self.cinder_limits[\u0027absolute\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_ec8d277e","line":99,"updated":"2014-09-16 13:41:22.000000000","message":"Sorry, please explain me, why you explicitly specify search_opts\u003dNone ? In api.nova :\ndef server_list(request, search_opts\u003dNone, all_tenants\u003dFalse):\n    .........","commit_id":"5af9982d983cf1e55ad837b53c47df354dd8418a"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"8bd8a84ecbab35cb5705f6c5bf03e43234ec3890","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        api.cinder.volume_list_paginate(IsA(http.HttpRequest), marker\u003dmarker,"},{"line_number":97,"context_line":"            sort_dir\u003dsort_dir, search_opts\u003dNone).\\"},{"line_number":98,"context_line":"            AndReturn([volumes, has_more, has_prev])"},{"line_number":99,"context_line":"        api.nova.server_list(IsA(http.HttpRequest), search_opts\u003dNone).\\"},{"line_number":100,"context_line":"            AndReturn([self.servers.list(), False])"},{"line_number":101,"context_line":"        api.cinder.tenant_absolute_limits(IsA(http.HttpRequest)).MultipleTimes(). \\"},{"line_number":102,"context_line":"            AndReturn(self.cinder_limits[\u0027absolute\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_b2ce155a","line":99,"in_reply_to":"fa98f980_ec8d277e","updated":"2014-09-16 15:45:40.000000000","message":"I\u0027m setting up the stubs for this test the same as the pre-existing tests for volume.  See line #52 in _test_index().","commit_id":"5af9982d983cf1e55ad837b53c47df354dd8418a"},{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"9c1842d539c0f750fd2d11264d247df1e2bfa34a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        api.cinder.volume_backup_supported(IsA(http.HttpRequest)).\\"},{"line_number":47,"context_line":"            MultipleTimes().AndReturn(backup_supported)"},{"line_number":48,"context_line":"        api.cinder.volume_list(IsA(http.HttpRequest), marker\u003dNone,"},{"line_number":49,"context_line":"                               sort_dir\u003d\u0027desc\u0027, search_opts\u003dNone, paginate\u003dTrue).\\"},{"line_number":50,"context_line":"            AndReturn([volumes, False, False])"},{"line_number":51,"context_line":"        api.nova.server_list(IsA(http.HttpRequest), search_opts\u003dNone).\\"},{"line_number":52,"context_line":"            AndReturn([self.servers.list(), False])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_d5fb8c45","line":49,"updated":"2014-10-18 01:18:56.000000000","message":"paginate \u003d False?","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"234a66162abcd9a9d2a5a668faa8924f8c360561","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        api.cinder.volume_backup_supported(IsA(http.HttpRequest)).\\"},{"line_number":47,"context_line":"            MultipleTimes().AndReturn(backup_supported)"},{"line_number":48,"context_line":"        api.cinder.volume_list(IsA(http.HttpRequest), marker\u003dNone,"},{"line_number":49,"context_line":"                               sort_dir\u003d\u0027desc\u0027, search_opts\u003dNone, paginate\u003dTrue).\\"},{"line_number":50,"context_line":"            AndReturn([volumes, False, False])"},{"line_number":51,"context_line":"        api.nova.server_list(IsA(http.HttpRequest), search_opts\u003dNone).\\"},{"line_number":52,"context_line":"            AndReturn([self.servers.list(), False])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_e53930a5","line":49,"in_reply_to":"9aa7fdbe_d5fb8c45","updated":"2014-10-23 19:51:44.000000000","message":"This is to stub out the call made on line 36 in openstack_dashboard/dashboards/project/volumes/tabs.py","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"}],"openstack_dashboard/dashboards/project/volumes/volumes/forms.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        try:"},{"line_number":301,"context_line":"            available \u003d api.cinder.VOLUME_STATE_AVAILABLE"},{"line_number":302,"context_line":"            volumes \u003d cinder.volume_list(self.request,"},{"line_number":303,"context_line":"                                         search_opts\u003ddict(status\u003davailable))[0]"},{"line_number":304,"context_line":"        except Exception:"},{"line_number":305,"context_line":"            exceptions.handle(request,"},{"line_number":306,"context_line":"                              _(\u0027Unable to retrieve list of volumes.\u0027))"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_a3f2a96d","line":303,"updated":"2015-11-05 14:13:46.000000000","message":"could be avoided","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"}],"openstack_dashboard/dashboards/project/volumes/volumes/tests.py":[{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"9c1842d539c0f750fd2d11264d247df1e2bfa34a","unresolved":false,"context_lines":[{"line_number":733,"context_line":""},{"line_number":734,"context_line":"        cinder.volume_backup_supported(IsA(http.HttpRequest)). \\"},{"line_number":735,"context_line":"            MultipleTimes().AndReturn(True)"},{"line_number":736,"context_line":"        cinder.volume_list(IsA(http.HttpRequest), marker\u003dNone, paginate\u003dTrue,"},{"line_number":737,"context_line":"                           sort_dir\u003d\u0027desc\u0027, search_opts\u003dNone).\\"},{"line_number":738,"context_line":"            AndReturn([volumes, False, False])"},{"line_number":739,"context_line":"        cinder.volume_delete(IsA(http.HttpRequest), volume.id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_958824c8","line":736,"updated":"2014-10-18 01:18:56.000000000","message":"paginate\u003dFalse?","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"234a66162abcd9a9d2a5a668faa8924f8c360561","unresolved":false,"context_lines":[{"line_number":733,"context_line":""},{"line_number":734,"context_line":"        cinder.volume_backup_supported(IsA(http.HttpRequest)). \\"},{"line_number":735,"context_line":"            MultipleTimes().AndReturn(True)"},{"line_number":736,"context_line":"        cinder.volume_list(IsA(http.HttpRequest), marker\u003dNone, paginate\u003dTrue,"},{"line_number":737,"context_line":"                           sort_dir\u003d\u0027desc\u0027, search_opts\u003dNone).\\"},{"line_number":738,"context_line":"            AndReturn([volumes, False, False])"},{"line_number":739,"context_line":"        cinder.volume_delete(IsA(http.HttpRequest), volume.id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_25409806","line":736,"in_reply_to":"9aa7fdbe_958824c8","updated":"2014-10-23 19:51:44.000000000","message":"This is to stub out the call made on line 36 in openstack_dashboard/dashboards/project/volumes/tabs.py","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"},{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"9c1842d539c0f750fd2d11264d247df1e2bfa34a","unresolved":false,"context_lines":[{"line_number":739,"context_line":"        cinder.volume_delete(IsA(http.HttpRequest), volume.id)"},{"line_number":740,"context_line":"        api.nova.server_list(IsA(http.HttpRequest), search_opts\u003dNone).\\"},{"line_number":741,"context_line":"            AndReturn([self.servers.list(), False])"},{"line_number":742,"context_line":"        cinder.volume_list(IsA(http.HttpRequest), marker\u003dNone, paginate\u003dTrue,"},{"line_number":743,"context_line":"                           sort_dir\u003d\u0027desc\u0027, search_opts\u003dNone).\\"},{"line_number":744,"context_line":"            AndReturn([volumes, False, False])"},{"line_number":745,"context_line":"        api.nova.server_list(IsA(http.HttpRequest), search_opts\u003dNone).\\"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_15bc346c","line":742,"updated":"2014-10-18 01:18:56.000000000","message":"paginate\u003dFalse? same apply to rest of the file","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"234a66162abcd9a9d2a5a668faa8924f8c360561","unresolved":false,"context_lines":[{"line_number":739,"context_line":"        cinder.volume_delete(IsA(http.HttpRequest), volume.id)"},{"line_number":740,"context_line":"        api.nova.server_list(IsA(http.HttpRequest), search_opts\u003dNone).\\"},{"line_number":741,"context_line":"            AndReturn([self.servers.list(), False])"},{"line_number":742,"context_line":"        cinder.volume_list(IsA(http.HttpRequest), marker\u003dNone, paginate\u003dTrue,"},{"line_number":743,"context_line":"                           sort_dir\u003d\u0027desc\u0027, search_opts\u003dNone).\\"},{"line_number":744,"context_line":"            AndReturn([volumes, False, False])"},{"line_number":745,"context_line":"        api.nova.server_list(IsA(http.HttpRequest), search_opts\u003dNone).\\"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa7fdbe_45459c15","line":742,"in_reply_to":"9aa7fdbe_15bc346c","updated":"2014-10-23 19:51:44.000000000","message":"This is to stub out the call made on line 36 in openstack_dashboard/dashboards/project/volumes/tabs.py\n\nsame for the rest of the file.","commit_id":"e13091b4524a34cbcb94fd6651a020db47e24a78"}],"openstack_dashboard/test/api_tests/cinder_tests.py":[{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"0b4b4b084d53db51211421505087f113aed671df","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.assertFalse(has_prev)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @override_settings(API_RESULT_PAGE_SIZE\u003d2)"},{"line_number":41,"context_line":"    @override_settings(OPENSTACK_API_VERSIONS\u003d{\u0027volume\u0027: 2})"},{"line_number":42,"context_line":"    def test_volume_list_paginate_first_page(self):"},{"line_number":43,"context_line":"        api.cinder.VERSIONS._active \u003d None"},{"line_number":44,"context_line":"        page_size \u003d settings.API_RESULT_PAGE_SIZE"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_20b17447","line":41,"updated":"2014-11-13 18:26:58.000000000","message":"Default version is 2 now...you don\u0027t need to overwrite version to be 2 any more","commit_id":"518e39315c4d6e833a32894ae456d342d3455f53"},{"author":{"_account_id":6728,"name":"Mingyan Bao","email":"bao.mingyan@hp.com","username":"Mingyan.Bao"},"change_message_id":"93173b75c6430bd6ef72725ba61f991a7ffea0d2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.assertFalse(has_prev)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @override_settings(API_RESULT_PAGE_SIZE\u003d2)"},{"line_number":41,"context_line":"    @override_settings(OPENSTACK_API_VERSIONS\u003d{\u0027volume\u0027: 2})"},{"line_number":42,"context_line":"    def test_volume_list_paginate_first_page(self):"},{"line_number":43,"context_line":"        api.cinder.VERSIONS._active \u003d None"},{"line_number":44,"context_line":"        page_size \u003d settings.API_RESULT_PAGE_SIZE"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_6018dc1e","line":41,"in_reply_to":"5a890539_20b17447","updated":"2014-11-13 19:01:29.000000000","message":"I disagree.  Keeping this setting allows these unit tests to be insulated from the other version factors in the underlying system.\n\nIt\u0027s also consistent with how versioning is being tested in the rest of this file.","commit_id":"518e39315c4d6e833a32894ae456d342d3455f53"},{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"0b4b4b084d53db51211421505087f113aed671df","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.assertTrue(prev_data)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    @override_settings(API_RESULT_PAGE_SIZE\u003d2)"},{"line_number":91,"context_line":"    @override_settings(OPENSTACK_API_VERSIONS\u003d{\u0027volume\u0027: 2})"},{"line_number":92,"context_line":"    def test_volume_list_paginate_last_page(self):"},{"line_number":93,"context_line":"        api.cinder.VERSIONS._active \u003d None"},{"line_number":94,"context_line":"        page_size \u003d settings.API_RESULT_PAGE_SIZE"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_c0a270fc","line":91,"updated":"2014-11-13 18:26:58.000000000","message":"same as above","commit_id":"518e39315c4d6e833a32894ae456d342d3455f53"},{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"0b4b4b084d53db51211421505087f113aed671df","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        self.assertTrue(prev_data)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @override_settings(API_RESULT_PAGE_SIZE\u003d2)"},{"line_number":117,"context_line":"    @override_settings(OPENSTACK_API_VERSIONS\u003d{\u0027volume\u0027: 2})"},{"line_number":118,"context_line":"    def test_volume_list_paginate_back_from_some_page(self):"},{"line_number":119,"context_line":"        api.cinder.VERSIONS._active \u003d None"},{"line_number":120,"context_line":"        page_size \u003d settings.API_RESULT_PAGE_SIZE"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_406760e9","line":117,"updated":"2014-11-13 18:26:58.000000000","message":"same as above","commit_id":"518e39315c4d6e833a32894ae456d342d3455f53"},{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"0b4b4b084d53db51211421505087f113aed671df","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        self.assertTrue(prev_data)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    @override_settings(API_RESULT_PAGE_SIZE\u003d2)"},{"line_number":143,"context_line":"    @override_settings(OPENSTACK_API_VERSIONS\u003d{\u0027volume\u0027: 2})"},{"line_number":144,"context_line":"    def test_volume_list_paginate_back_to_first_page(self):"},{"line_number":145,"context_line":"        api.cinder.VERSIONS._active \u003d None"},{"line_number":146,"context_line":"        page_size \u003d settings.API_RESULT_PAGE_SIZE"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_206a54b3","line":143,"updated":"2014-11-13 18:26:58.000000000","message":"same as above","commit_id":"518e39315c4d6e833a32894ae456d342d3455f53"}],"openstack_dashboard/usage/quotas.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ef141cc4f0da92f9ee8ef9834f789e9bf8760347","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        else:"},{"line_number":335,"context_line":"            volumes \u003d cinder.volume_list(request)[0]"},{"line_number":336,"context_line":"            snapshots \u003d cinder.volume_snapshot_list(request)"},{"line_number":337,"context_line":"        usages.tally(\u0027gigabytes\u0027, sum([int(v.size) for v in volumes]))"},{"line_number":338,"context_line":"        usages.tally(\u0027volumes\u0027, len(volumes))"},{"line_number":339,"context_line":"        usages.tally(\u0027snapshots\u0027, len(snapshots))"},{"line_number":340,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_ffa5ae46","line":337,"updated":"2015-09-03 11:45:10.000000000","message":"Btw, I think that querying the whole list of objects to run 2 aggregates over them at web-server side is pretty inefficient way to calculate current quota usages. In case Cinder folks were responsive to our needs, it would be great to ask them for additional REST API calls - just to gather aggregate statistics.\n\nOf course, it\u0027s out of scope of current patch, just some future plans.","commit_id":"d948fa9dca62cfed821958378209317cf0bd640e"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        try:"},{"line_number":336,"context_line":"            if tenant_id:"},{"line_number":337,"context_line":"                opts \u003d {\u0027all_tenants\u0027: 1, \u0027project_id\u0027: tenant_id}"},{"line_number":338,"context_line":"                volumes \u003d cinder.volume_list(request, opts)[0]"},{"line_number":339,"context_line":"                snapshots \u003d cinder.volume_snapshot_list(request, opts)"},{"line_number":340,"context_line":"            else:"},{"line_number":341,"context_line":"                volumes \u003d cinder.volume_list(request)[0]"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_c3fd6d3b","line":338,"updated":"2015-11-05 14:13:46.000000000","message":"could be avoided","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"83fea9c2f1e2ccd3f8e633f9a4d45c0614f3adae","unresolved":false,"context_lines":[{"line_number":338,"context_line":"                volumes \u003d cinder.volume_list(request, opts)[0]"},{"line_number":339,"context_line":"                snapshots \u003d cinder.volume_snapshot_list(request, opts)"},{"line_number":340,"context_line":"            else:"},{"line_number":341,"context_line":"                volumes \u003d cinder.volume_list(request)[0]"},{"line_number":342,"context_line":"                snapshots \u003d cinder.volume_snapshot_list(request)"},{"line_number":343,"context_line":"            usages.tally(\u0027gigabytes\u0027, sum([int(v.size) for v in volumes]))"},{"line_number":344,"context_line":"            usages.tally(\u0027volumes\u0027, len(volumes))"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_e3f8b14b","line":341,"updated":"2015-11-05 14:13:46.000000000","message":"could be avoided","commit_id":"46d1e125c71d3765885c3a6aac52608a26de873a"}]}
