)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"a0233d6b114b24a05367b9a3d48795ab751cdbce","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Notify is added in Create, Accept, Delete actions."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I9d71c55d103cc501f60585b64902d364af21d4d9"},{"line_number":19,"context_line":"Implements: notify-the-transfer-volume-action-in-cinder"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a016987_c5671be9","line":19,"updated":"2015-05-26 14:46:29.000000000","message":"\u0027Implements: blueprint notify-the-transfer-volume-action-in-cinder\u0027 should be","commit_id":"9e8db0ca7a560a2acca9b031413f9dde8a9d7713"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"868cd6b928e293c98b3c2f34462a6ba2f01e4cda","unresolved":false,"context_lines":[{"line_number":10,"context_line":"notification that is sent to ceilometer. Include the actions of create,"},{"line_number":11,"context_line":"accept and delete."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This bp propose that add those action to enrich the notification in"},{"line_number":14,"context_line":"cinder."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Notify is added in Create, Accept, Delete actions."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba3cc151_db5b32f5","line":13,"updated":"2015-06-30 20:09:44.000000000","message":"The bp that this patch implements, proposes adding those ...","commit_id":"b23e1be75dc62e5e2c7ba3f05a6dca98317322fa"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"48e38a3308e19408b04f0a04f68979a6334b85ce","unresolved":false,"context_lines":[{"line_number":10,"context_line":"notification that is sent to ceilometer. Include the actions of create,"},{"line_number":11,"context_line":"accept and delete."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This bp propose that add those action to enrich the notification in"},{"line_number":14,"context_line":"cinder."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Notify is added in Create, Accept, Delete actions."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba3cc151_6775f230","line":13,"in_reply_to":"ba3cc151_db5b32f5","updated":"2015-07-06 06:59:22.000000000","message":"Done","commit_id":"b23e1be75dc62e5e2c7ba3f05a6dca98317322fa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"868cd6b928e293c98b3c2f34462a6ba2f01e4cda","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This bp propose that add those action to enrich the notification in"},{"line_number":14,"context_line":"cinder."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Notify is added in Create, Accept, Delete actions."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I9d71c55d103cc501f60585b64902d364af21d4d9"},{"line_number":19,"context_line":"Implements:  blueprint notify-the-transfer-volume-action-in-cinder"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba3cc151_1b099add","line":16,"updated":"2015-06-30 20:09:44.000000000","message":"s/, Delete/and Delete","commit_id":"b23e1be75dc62e5e2c7ba3f05a6dca98317322fa"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"48e38a3308e19408b04f0a04f68979a6334b85ce","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This bp propose that add those action to enrich the notification in"},{"line_number":14,"context_line":"cinder."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Notify is added in Create, Accept, Delete actions."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I9d71c55d103cc501f60585b64902d364af21d4d9"},{"line_number":19,"context_line":"Implements:  blueprint notify-the-transfer-volume-action-in-cinder"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba3cc151_67ac128d","line":16,"in_reply_to":"ba3cc151_1b099add","updated":"2015-07-06 06:59:22.000000000","message":"Done","commit_id":"b23e1be75dc62e5e2c7ba3f05a6dca98317322fa"}],"cinder/tests/unit/test_volume_transfer.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"58a5cfa3c54ea27cb99adf8fa4167ede97c41abe","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        volume \u003d db.volume_get(self.ctxt, \u00271\u0027)"},{"line_number":47,"context_line":"        self.assertEqual(\u0027awaiting-transfer\u0027, volume[\u0027status\u0027],"},{"line_number":48,"context_line":"                         \u0027Unexpected state\u0027)"},{"line_number":49,"context_line":"        self.assertTrue(mock_notify.called)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        tx_api.delete(self.ctxt, response[\u0027id\u0027])"},{"line_number":52,"context_line":"        volume \u003d db.volume_get(self.ctxt, \u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_64827b54","line":49,"updated":"2015-05-27 14:53:21.000000000","message":"How about calling assert_called_once_with?","commit_id":"b82c18e0ae92af215ab8b74c8cac8aec00bc4704"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"87b3036b299f99cacd0a9997f475ca84a37cc4cc","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        volume \u003d db.volume_get(self.ctxt, \u00271\u0027)"},{"line_number":47,"context_line":"        self.assertEqual(\u0027awaiting-transfer\u0027, volume[\u0027status\u0027],"},{"line_number":48,"context_line":"                         \u0027Unexpected state\u0027)"},{"line_number":49,"context_line":"        self.assertTrue(mock_notify.called)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        tx_api.delete(self.ctxt, response[\u0027id\u0027])"},{"line_number":52,"context_line":"        volume \u003d db.volume_get(self.ctxt, \u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_3bd7efc0","line":49,"in_reply_to":"7a016987_64827b54","updated":"2015-05-28 01:03:12.000000000","message":"Sure, that\u0027s fine.","commit_id":"b82c18e0ae92af215ab8b74c8cac8aec00bc4704"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"58a5cfa3c54ea27cb99adf8fa4167ede97c41abe","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                         \u0027Unexpected volume id in response.\u0027)"},{"line_number":103,"context_line":"        self.assertEqual(transfer[\u0027id\u0027], response[\u0027id\u0027],"},{"line_number":104,"context_line":"                         \u0027Unexpected transfer id in response.\u0027)"},{"line_number":105,"context_line":"        self.assertTrue(mock_notify.called)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        svc.stop()"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_44853f57","line":105,"updated":"2015-05-27 14:53:21.000000000","message":"Same comment.","commit_id":"b82c18e0ae92af215ab8b74c8cac8aec00bc4704"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"868cd6b928e293c98b3c2f34462a6ba2f01e4cda","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        volume \u003d db.volume_get(self.ctxt, \u00271\u0027)"},{"line_number":47,"context_line":"        self.assertEqual(\u0027awaiting-transfer\u0027, volume[\u0027status\u0027],"},{"line_number":48,"context_line":"                         \u0027Unexpected state\u0027)"},{"line_number":49,"context_line":"        mock_notify.assert_called_with(self.ctxt, mock.ANY,"},{"line_number":50,"context_line":"                                       \"transfer.create.end\")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        tx_api.delete(self.ctxt, response[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_b6e8c37d","line":49,"updated":"2015-06-30 20:09:44.000000000","message":"Why aren\u0027t we checking the transfer.create.start on any of the tests?","commit_id":"b23e1be75dc62e5e2c7ba3f05a6dca98317322fa"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"249bf08dfdf96ce09d758537b045c1c7d6c128bd","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        volume \u003d db.volume_get(self.ctxt, \u00271\u0027)"},{"line_number":47,"context_line":"        self.assertEqual(\u0027awaiting-transfer\u0027, volume[\u0027status\u0027],"},{"line_number":48,"context_line":"                         \u0027Unexpected state\u0027)"},{"line_number":49,"context_line":"        mock_notify.assert_called_with(self.ctxt, mock.ANY,"},{"line_number":50,"context_line":"                                       \"transfer.create.end\")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        tx_api.delete(self.ctxt, response[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_f2d9bb84","line":49,"in_reply_to":"ba3cc151_b6e8c37d","updated":"2015-07-06 07:46:30.000000000","message":"Sure, has added it.","commit_id":"b23e1be75dc62e5e2c7ba3f05a6dca98317322fa"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3f6cf1964ae57966ebb2a6943c7d59ee87ca6e74","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.assertEqual(transfer[\u0027id\u0027], response[\u0027id\u0027],"},{"line_number":111,"context_line":"                         \u0027Unexpected transfer id in response.\u0027)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        calls \u003d [mock.call(self.ctxt, mock.ANY, \"transfer.accept.start\"),"},{"line_number":114,"context_line":"                 mock.call(self.ctxt, mock.ANY, \"transfer.accept.end\")]"},{"line_number":115,"context_line":"        mock_notify.assert_has_calls(calls)"},{"line_number":116,"context_line":"        self.assertEqual(2, mock_notify.call_count)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_5e99901e","line":113,"updated":"2015-07-06 09:58:00.000000000","message":"Since you also did create_volume on line 76 you\u0027ll also have transfer.create.start and fransfer.create.end.\n\nIf you don\u0027t want to have those you need to reset the mock before calling tx_api.accept.","commit_id":"5c8a7f48a952b61fd21cfd0f39984c477f9ece80"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"fdce13433e9c463f3ce2320f8638f5cf41600445","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.assertEqual(transfer[\u0027id\u0027], response[\u0027id\u0027],"},{"line_number":111,"context_line":"                         \u0027Unexpected transfer id in response.\u0027)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        calls \u003d [mock.call(self.ctxt, mock.ANY, \"transfer.accept.start\"),"},{"line_number":114,"context_line":"                 mock.call(self.ctxt, mock.ANY, \"transfer.accept.end\")]"},{"line_number":115,"context_line":"        mock_notify.assert_has_calls(calls)"},{"line_number":116,"context_line":"        self.assertEqual(2, mock_notify.call_count)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_7fbea800","line":113,"in_reply_to":"ba3cc151_5e99901e","updated":"2015-07-07 01:42:12.000000000","message":"en it should add.","commit_id":"5c8a7f48a952b61fd21cfd0f39984c477f9ece80"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8f7ed33139d960d9a6d139db798777bc90273356","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        calls \u003d [mock.call(self.ctxt, mock.ANY, \"transfer.accept.start\"),"},{"line_number":119,"context_line":"                 mock.call(self.ctxt, mock.ANY, \"transfer.accept.end\")]"},{"line_number":120,"context_line":"        mock_notify.assert_has_calls(calls)"},{"line_number":121,"context_line":"        self.assertEqual(5, mock_notify.call_count)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        svc.stop()"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba3cc151_fed5cf1a","line":121,"updated":"2015-07-07 08:38:58.000000000","message":"Is it just me or 2 calls from create\u0027s start and end, and these other 2 calls from accept make 4 and not 5?  What is the 5th call?  Should we be checking it?\n\nIf it\u0027s ok at least a comment should be added, because it\u0027s not clear looking at the test that we should have 5 notifications.","commit_id":"01617aca3e7c33a8482cd2e674ea37c172c7b17b"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"13c75e21145920c7189c74132dcd3f1a03e15440","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        calls \u003d [mock.call(self.ctxt, mock.ANY, \"transfer.accept.start\"),"},{"line_number":119,"context_line":"                 mock.call(self.ctxt, mock.ANY, \"transfer.accept.end\")]"},{"line_number":120,"context_line":"        mock_notify.assert_has_calls(calls)"},{"line_number":121,"context_line":"        self.assertEqual(5, mock_notify.call_count)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        svc.stop()"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba3cc151_de36cbb3","line":121,"updated":"2015-07-07 08:35:21.000000000","message":"So why do we have an odd number of notification calls here?\n\nIs one from a tx_api operation that raised an exception?\n\nIs there a way to make the answer to these questions obvious to the reader as you have made it obvious that the first two calls were from the start and end of create, and the last two\nfrom the start and end of the accept?","commit_id":"01617aca3e7c33a8482cd2e674ea37c172c7b17b"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"351e13df9bdf53d93dfed82dbadda69b37c3a2ae","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        calls \u003d [mock.call(self.ctxt, mock.ANY, \"transfer.accept.start\"),"},{"line_number":119,"context_line":"                 mock.call(self.ctxt, mock.ANY, \"transfer.accept.end\")]"},{"line_number":120,"context_line":"        mock_notify.assert_has_calls(calls)"},{"line_number":121,"context_line":"        self.assertEqual(5, mock_notify.call_count)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        svc.stop()"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba3cc151_f9bc09dd","line":121,"in_reply_to":"ba3cc151_fed5cf1a","updated":"2015-07-07 08:59:47.000000000","message":"That\u0027s because the tx_api.accept raised an exception in Line#97. It will call the accept.start once but not accept.end. I will make this more clearly to show this process.","commit_id":"01617aca3e7c33a8482cd2e674ea37c172c7b17b"}]}
