)]}'
{"cinder/api/v2/snapshots.py":[{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"b16af7e88620c2d8b0633d45f4d99da2739e4a9f","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        snapshot.update(update_dict)"},{"line_number":277,"context_line":"        req.cache_db_snapshot(snapshot)"},{"line_number":278,"context_line":"        volume_utils.notify_about_snapshot_usage(context, snapshot,"},{"line_number":279,"context_line":"                                                 \u0027update.end\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        return {\u0027snapshot\u0027: _translate_snapshot_detail_view(context, snapshot)}"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_95682624","line":279,"updated":"2015-01-19 11:49:17.000000000","message":"What would happen if there was an exception between the update.start and update.end? Does that matter? Is there some sort of error state that should be communicated? Is the consumer of this data just expected to make assumptions if an end is not received that pairs with a start?","commit_id":"68b5fbe3522f3873bdc4c7d5e5734cd647b8ab8d"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"73b16e5c4c6026564829939297d509fa7f9ecf2f","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        snapshot.update(update_dict)"},{"line_number":277,"context_line":"        req.cache_db_snapshot(snapshot)"},{"line_number":278,"context_line":"        volume_utils.notify_about_snapshot_usage(context, snapshot,"},{"line_number":279,"context_line":"                                                 \u0027update.end\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        return {\u0027snapshot\u0027: _translate_snapshot_detail_view(context, snapshot)}"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_f94ddac5","line":279,"in_reply_to":"3a961159_95682624","updated":"2015-01-21 08:30:02.000000000","message":"I think, it doesn\u0027t matter because if I correctly understood your question, you worried about part of code between notifications about start/end, but if the operation didn\u0027t  executed correctly, notification about end doesn\u0027t come and it\u0027s clear that smth failed between start/end and no need to send some error.","commit_id":"68b5fbe3522f3873bdc4c7d5e5734cd647b8ab8d"}],"cinder/tests/api/v2/test_snapshots.py":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"0a6b32faa0446e0c161da314a259b53b4643d576","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        updates \u003d {"},{"line_number":169,"context_line":"            \"name\": \"Updated Test Name\","},{"line_number":170,"context_line":"        }"},{"line_number":171,"context_line":"        body \u003d {\"snapshot\": updates}"},{"line_number":172,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/snapshots/%s\u0027 % UUID)"},{"line_number":173,"context_line":"        res_dict \u003d self.controller.update(req, UUID, body)"},{"line_number":174,"context_line":"        expected \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_4edb567d","line":171,"updated":"2014-12-30 14:06:31.000000000","message":"Should a `self.assertEqual(len(fake_notifier.NOTIFICATIONS), 0)` be added after this line?","commit_id":"68b5fbe3522f3873bdc4c7d5e5734cd647b8ab8d"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"b16af7e88620c2d8b0633d45f4d99da2739e4a9f","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            }"},{"line_number":185,"context_line":"        }"},{"line_number":186,"context_line":"        self.assertEqual(expected, res_dict)"},{"line_number":187,"context_line":"        self.assertEqual(2, len(fake_notifier.NOTIFICATIONS))"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def test_snapshot_update_missing_body(self):"},{"line_number":190,"context_line":"        body \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b51d227a","line":187,"updated":"2015-01-19 11:49:17.000000000","message":"From looking at where this is used elsewhere in the code I think you need to clean this up after the test with reset.","commit_id":"68b5fbe3522f3873bdc4c7d5e5734cd647b8ab8d"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"65b55769f799d4835290b9347180460414a729bb","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            }"},{"line_number":185,"context_line":"        }"},{"line_number":186,"context_line":"        self.assertEqual(expected, res_dict)"},{"line_number":187,"context_line":"        self.assertEqual(2, len(fake_notifier.NOTIFICATIONS))"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def test_snapshot_update_missing_body(self):"},{"line_number":190,"context_line":"        body \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_3fc85d54","line":187,"updated":"2015-01-27 10:43:46.000000000","message":"From looking at where this is used elsewhere in the code I think you need to clean this up after the test with reset. So in the setUp method I think you need to add:\n\nself.addCleanup(fake_notifier.reset)","commit_id":"58869537313c06851dce078577df78eca6a5801c"},{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"3804530997b6384c9c65a6b6accd436713eaf65e","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            }"},{"line_number":185,"context_line":"        }"},{"line_number":186,"context_line":"        self.assertEqual(expected, res_dict)"},{"line_number":187,"context_line":"        self.assertEqual(2, len(fake_notifier.NOTIFICATIONS))"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def test_snapshot_update_missing_body(self):"},{"line_number":190,"context_line":"        body \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_828f3574","line":187,"in_reply_to":"1a930d6b_3fc85d54","updated":"2015-01-27 13:07:23.000000000","message":"Done","commit_id":"58869537313c06851dce078577df78eca6a5801c"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"1f5f6580dbdd8d05a17e5a1087dfe33c80d961bd","unresolved":false,"context_lines":[{"line_number":367,"context_line":"            self.assertEqual(1, len(res[\u0027snapshots\u0027]))"},{"line_number":368,"context_line":"            self.assertEqual(2, res[\u0027snapshots\u0027][0][\u0027id\u0027])"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        #admin case"},{"line_number":371,"context_line":"        list_snapshots_with_limit_and_offset(is_admin\u003dTrue)"},{"line_number":372,"context_line":"        #non_admin case"},{"line_number":373,"context_line":"        list_snapshots_with_limit_and_offset(is_admin\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_ea172e43","line":370,"updated":"2015-03-03 09:33:19.000000000","message":"Need a space after \u0027#\u0027","commit_id":"f45cd0287d9b7d70e4cb85a14fb7dcbd4504e20f"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"1f5f6580dbdd8d05a17e5a1087dfe33c80d961bd","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        #admin case"},{"line_number":371,"context_line":"        list_snapshots_with_limit_and_offset(is_admin\u003dTrue)"},{"line_number":372,"context_line":"        #non_admin case"},{"line_number":373,"context_line":"        list_snapshots_with_limit_and_offset(is_admin\u003dFalse)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def test_admin_list_snapshots_all_tenants(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_4a1e7a60","line":372,"updated":"2015-03-03 09:33:19.000000000","message":"Same as above.","commit_id":"f45cd0287d9b7d70e4cb85a14fb7dcbd4504e20f"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"2ffdc2c3e78e5b00a5ea17a1727cc31e8abd9f0e","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        # admin case"},{"line_number":371,"context_line":"        list_snapshots_with_limit_and_offset(is_admin\u003dTrue)"},{"line_number":372,"context_line":"        # non_admin case"},{"line_number":373,"context_line":"        list_snapshots_with_limit_and_offset(is_admin\u003dFalse)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def test_admin_list_snapshots_all_tenants(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_cf7b68f3","line":372,"updated":"2015-03-06 14:52:20.000000000","message":"\"non_admin\" \u003d\u003e \"non-admin\"?","commit_id":"536b32a09fbb239b6ef20198a8f9e73c75bfdc32"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"f1240baf4d673f6ac6b77d4a0706ec623543ca4a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                          self.controller.create, req, body)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def test_snapshot_update_notification(self):"},{"line_number":170,"context_line":"        self.stubs.Set(volume.api.API, \"get_snapshot\", stub_snapshot_get)"},{"line_number":171,"context_line":"        self.stubs.Set(volume.api.API, \"update_snapshot\","},{"line_number":172,"context_line":"                       stubs.stub_snapshot_update)"},{"line_number":173,"context_line":"        updates \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_72800a8c","line":170,"updated":"2015-03-11 06:55:50.000000000","message":"I think new patches should use mock instead of stub or mox. There are ongoing blueprint and patches for replacing mox to mock: https://blueprints.launchpad.net/cinder/+spec/mox-to-mock-conversion","commit_id":"9c856813322b10f3be2d7ab224bea431b719487f"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"f1240baf4d673f6ac6b77d4a0706ec623543ca4a","unresolved":false,"context_lines":[{"line_number":453,"context_line":"            self.assertEqual(1, len(res[\u0027snapshots\u0027]))"},{"line_number":454,"context_line":"            self.assertEqual(2, res[\u0027snapshots\u0027][0][\u0027id\u0027])"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"        #admin case"},{"line_number":457,"context_line":"        list_snapshots_with_limit_and_offset(is_admin\u003dTrue)"},{"line_number":458,"context_line":"        #non-admin case"},{"line_number":459,"context_line":"        list_snapshots_with_limit_and_offset(is_admin\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_3225b20a","line":456,"updated":"2015-03-11 06:55:50.000000000","message":"Need to add a space after \u0027#\u0027.","commit_id":"9c856813322b10f3be2d7ab224bea431b719487f"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"f1240baf4d673f6ac6b77d4a0706ec623543ca4a","unresolved":false,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":"        #admin case"},{"line_number":457,"context_line":"        list_snapshots_with_limit_and_offset(is_admin\u003dTrue)"},{"line_number":458,"context_line":"        #non-admin case"},{"line_number":459,"context_line":"        list_snapshots_with_limit_and_offset(is_admin\u003dFalse)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    @mock.patch(\u0027cinder.db.snapshot_metadata_get\u0027, return_value\u003ddict())"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_52222602","line":458,"updated":"2015-03-11 06:55:50.000000000","message":"Same as above.","commit_id":"9c856813322b10f3be2d7ab224bea431b719487f"}]}
