)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"41be13069f475ed4352398b25adf96a31cad5424","unresolved":false,"context_lines":[{"line_number":17,"context_line":"APIImpact: Delete on os-quota-sets will no longer remove usage and"},{"line_number":18,"context_line":"           reservation quotas. Those quotas are handled by Cinder"},{"line_number":19,"context_line":"           service."},{"line_number":20,"context_line":"UpgradeImpact: There is no upgrade impact afaik."},{"line_number":21,"context_line":"Closes-Bug: #1410034"},{"line_number":22,"context_line":"Change-Id: I9340b6f78623cfa5b505886ad75b8e4d3cd6131b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1aca2d91_59a09af4","line":20,"updated":"2015-05-06 20:18:15.000000000","message":"Why do we need this comment?","commit_id":"0ee1ea83b90de8d342fa242e311f1680fef66a92"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5ba81378a8d840908db486bd164035de81169c69","unresolved":false,"context_lines":[{"line_number":922,"context_line":""},{"line_number":923,"context_line":""},{"line_number":924,"context_line":"def quota_destroy_by_project(*args, **kwargs):"},{"line_number":925,"context_line":"    quota_destroy_all_by_project(only_quotas\u003dTrue, *args, **kwargs)"},{"line_number":926,"context_line":""},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"@require_admin_context"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_037289ad","line":925,"updated":"2015-04-07 21:14:27.000000000","message":"Won\u0027t the parameter ordering matter here ? I mean if you see the definition for this call.","commit_id":"150cbbec0a4b27e68906c0e82f7c0803c7f30c8d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6cc32210b922f71935a2db74e8936d14021a9f03","unresolved":false,"context_lines":[{"line_number":922,"context_line":""},{"line_number":923,"context_line":""},{"line_number":924,"context_line":"def quota_destroy_by_project(*args, **kwargs):"},{"line_number":925,"context_line":"    quota_destroy_all_by_project(only_quotas\u003dTrue, *args, **kwargs)"},{"line_number":926,"context_line":""},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"@require_admin_context"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_52472b4b","line":925,"in_reply_to":"9aa53dc9_037289ad","updated":"2015-04-08 08:17:22.000000000","message":"You are right, the ordering matters. But this will make the right call with the right order given how Python works.\nImagine that I wrote `quota_destroy_all_by_project(*args, only_quotas\u003dTrue, **kwargs)`\nBecause that\u0027s how the function is going to be called, but Python syntax makes us write it the other way :-)","commit_id":"150cbbec0a4b27e68906c0e82f7c0803c7f30c8d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"9c8e155be04afb7637e0554a6267a9b9997e09c0","unresolved":false,"context_lines":[{"line_number":927,"context_line":""},{"line_number":928,"context_line":"@require_admin_context"},{"line_number":929,"context_line":"@_retry_on_deadlock"},{"line_number":930,"context_line":"def quota_destroy_all_by_project(context, project_id, only_quotas\u003dFalse):"},{"line_number":931,"context_line":"    session \u003d get_session()"},{"line_number":932,"context_line":"    with session.begin():"},{"line_number":933,"context_line":"        quotas \u003d model_query(context, models.Quota, session\u003dsession,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_64892075","line":930,"updated":"2015-04-09 07:38:33.000000000","message":"Please, add docscring with detailed descriptions for all params","commit_id":"150cbbec0a4b27e68906c0e82f7c0803c7f30c8d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"635d7312a3a433ebd155e5af27175a667304c59e","unresolved":false,"context_lines":[{"line_number":927,"context_line":""},{"line_number":928,"context_line":"@require_admin_context"},{"line_number":929,"context_line":"@_retry_on_deadlock"},{"line_number":930,"context_line":"def quota_destroy_all_by_project(context, project_id, only_quotas\u003dFalse):"},{"line_number":931,"context_line":"    session \u003d get_session()"},{"line_number":932,"context_line":"    with session.begin():"},{"line_number":933,"context_line":"        quotas \u003d model_query(context, models.Quota, session\u003dsession,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab921fb_d40358b7","line":930,"in_reply_to":"9aa53dc9_64892075","updated":"2015-04-23 10:48:09.000000000","message":"Done","commit_id":"150cbbec0a4b27e68906c0e82f7c0803c7f30c8d"}],"cinder/quota.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"012638c7b802e5a3ec54e4e5b2d6393034605a13","unresolved":false,"context_lines":[{"line_number":806,"context_line":"                              \"%s\"), reservations)"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"    def destroy_by_project(self, context, project_id):"},{"line_number":809,"context_line":"        \"\"\"Destroy all limit quotas associated with a project."},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        :param context: The request context, for access checks."},{"line_number":812,"context_line":"        :param project_id: The ID of the project being deleted."}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_a8d70aec","line":809,"updated":"2015-05-04 18:34:56.000000000","message":"\"Destroy all quota limits associated with...\" reads better","commit_id":"1b458e38dcea6d84f649316e258caf262f75367c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c84a73eebd693573906e420675bf9fd8c1cc3b76","unresolved":false,"context_lines":[{"line_number":806,"context_line":"                              \"%s\"), reservations)"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"    def destroy_by_project(self, context, project_id):"},{"line_number":809,"context_line":"        \"\"\"Destroy all limit quotas associated with a project."},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        :param context: The request context, for access checks."},{"line_number":812,"context_line":"        :param project_id: The ID of the project being deleted."}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_0b3a5fcc","line":809,"in_reply_to":"3acd31a7_a8d70aec","updated":"2015-05-05 14:48:52.000000000","message":"Done","commit_id":"1b458e38dcea6d84f649316e258caf262f75367c"}],"cinder/tests/test_db_api.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"9c8e155be04afb7637e0554a6267a9b9997e09c0","unresolved":false,"context_lines":[{"line_number":1266,"context_line":"        db.quota_destroy_by_project(self.ctxt, \u0027project1\u0027)"},{"line_number":1267,"context_line":"        # We only call model_query once for the quotas, instead of 3 times for"},{"line_number":1268,"context_line":"        # quotas, usages and reservations."},{"line_number":1269,"context_line":"        self.assertEqual(1, mock_model.call_count)"},{"line_number":1270,"context_line":""},{"line_number":1271,"context_line":"    def test_quota_destroy_all_by_project(self):"},{"line_number":1272,"context_line":"        _quota_reserve(self.ctxt, \u0027project1\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_44c85ca8","line":1269,"updated":"2015-04-09 07:38:33.000000000","message":"This unit test mast be extended to test more than only one call of model_query method","commit_id":"150cbbec0a4b27e68906c0e82f7c0803c7f30c8d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"635d7312a3a433ebd155e5af27175a667304c59e","unresolved":false,"context_lines":[{"line_number":1266,"context_line":"        db.quota_destroy_by_project(self.ctxt, \u0027project1\u0027)"},{"line_number":1267,"context_line":"        # We only call model_query once for the quotas, instead of 3 times for"},{"line_number":1268,"context_line":"        # quotas, usages and reservations."},{"line_number":1269,"context_line":"        self.assertEqual(1, mock_model.call_count)"},{"line_number":1270,"context_line":""},{"line_number":1271,"context_line":"    def test_quota_destroy_all_by_project(self):"},{"line_number":1272,"context_line":"        _quota_reserve(self.ctxt, \u0027project1\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab921fb_74636cb2","line":1269,"in_reply_to":"9aa53dc9_44c85ca8","updated":"2015-04-23 10:48:09.000000000","message":"Done","commit_id":"150cbbec0a4b27e68906c0e82f7c0803c7f30c8d"}],"cinder/tests/unit/test_db_api.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"012638c7b802e5a3ec54e4e5b2d6393034605a13","unresolved":false,"context_lines":[{"line_number":1386,"context_line":"        # But that usage and reservations are the same"},{"line_number":1387,"context_line":"        self.assertEqual(expected_usage,"},{"line_number":1388,"context_line":"                         db.quota_usage_get_all_by_project(self.ctxt, project))"},{"line_number":1389,"context_line":""},{"line_number":1390,"context_line":"    def test_quota_usage_get_nonexistent(self):"},{"line_number":1391,"context_line":"        self.assertRaises(exception.QuotaUsageNotFound,"},{"line_number":1392,"context_line":"                          db.quota_usage_get,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_882c4e03","line":1389,"updated":"2015-05-04 18:34:56.000000000","message":"You completely removed any unit testing of quota_destoy_all_by_project now, that still needs testing too.","commit_id":"1b458e38dcea6d84f649316e258caf262f75367c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c84a73eebd693573906e420675bf9fd8c1cc3b76","unresolved":false,"context_lines":[{"line_number":1386,"context_line":"        # But that usage and reservations are the same"},{"line_number":1387,"context_line":"        self.assertEqual(expected_usage,"},{"line_number":1388,"context_line":"                         db.quota_usage_get_all_by_project(self.ctxt, project))"},{"line_number":1389,"context_line":""},{"line_number":1390,"context_line":"    def test_quota_usage_get_nonexistent(self):"},{"line_number":1391,"context_line":"        self.assertRaises(exception.QuotaUsageNotFound,"},{"line_number":1392,"context_line":"                          db.quota_usage_get,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3acd31a7_8c5682cc","line":1389,"in_reply_to":"3acd31a7_882c4e03","updated":"2015-05-05 14:48:52.000000000","message":"Since quota_destroy_all_by_project no longer exists in cinder.db.api I didn\u0027t think the sqlalchemy method had to be tested directly, but I\u0027ll add the test.","commit_id":"1b458e38dcea6d84f649316e258caf262f75367c"}]}
