)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"de361a7336cbae666ebc72290a7e9afcafefcab6","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It\u0027s possible to create a volume from a source volume with"},{"line_number":10,"context_line":"a larger size. However, infortrend driver does not extend"},{"line_number":11,"context_line":"the volume when clone has finished. This patch fiexes it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I413efb6a998ec0db5ac42fdd6dd69a82bc260e3d"},{"line_number":14,"context_line":"Closes-Bug: #1554784"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aa08908_3a7f4c67","line":11,"range":{"start_line":11,"start_character":47,"end_line":11,"end_character":53},"updated":"2016-06-08 10:03:59.000000000","message":"nit: fixes","commit_id":"96e946ce8de1132654d0e145f6c62a22e2a6e430"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b5871b2e272a9f11ead1a6efef4124b6507c6cff","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It\u0027s possible to create a volume from a source volume with"},{"line_number":10,"context_line":"a larger size. However, infortrend driver does not extend"},{"line_number":11,"context_line":"the volume when clone has finished. This patch fiexes it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I413efb6a998ec0db5ac42fdd6dd69a82bc260e3d"},{"line_number":14,"context_line":"Closes-Bug: #1554784"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7aa08908_247f66e1","line":11,"range":{"start_line":11,"start_character":47,"end_line":11,"end_character":53},"updated":"2016-06-12 16:48:44.000000000","message":"nit: fixes","commit_id":"303ddc77dece6c405d9794096b0a348ff24b9a1e"}],"cinder/tests/unit/test_infortrend_common.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b5871b2e272a9f11ead1a6efef4124b6507c6cff","unresolved":false,"context_lines":[{"line_number":972,"context_line":"                test_dst_volume, test_src_volume)"},{"line_number":973,"context_line":""},{"line_number":974,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":975,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":976,"context_line":"            self.assertEqual(0, mock_extend.call_count)"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    @mock.patch(\u0027oslo_service.loopingcall.FixedIntervalLoopingCall\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_24664651","line":975,"updated":"2016-06-12 16:48:44.000000000","message":"I don\u0027t think we need to assert for logging calls in this patch.","commit_id":"303ddc77dece6c405d9794096b0a348ff24b9a1e"},{"author":{"_account_id":11676,"name":"wuyuting","email":"wytdahu@gmail.com","username":"wuyuting"},"change_message_id":"9586b94c0c079e8ab2cbdf68b10a2142b3e3f8b5","unresolved":false,"context_lines":[{"line_number":972,"context_line":"                test_dst_volume, test_src_volume)"},{"line_number":973,"context_line":""},{"line_number":974,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":975,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":976,"context_line":"            self.assertEqual(0, mock_extend.call_count)"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    @mock.patch(\u0027oslo_service.loopingcall.FixedIntervalLoopingCall\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_d82645cd","line":975,"in_reply_to":"7aa08908_24664651","updated":"2016-06-13 01:51:53.000000000","message":"Thanks for your reviewing. Most test cases record logging calls，and I think it is necessary to be consistent. So, I still want to keep it.","commit_id":"303ddc77dece6c405d9794096b0a348ff24b9a1e"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b5871b2e272a9f11ead1a6efef4124b6507c6cff","unresolved":false,"context_lines":[{"line_number":973,"context_line":""},{"line_number":974,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":975,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":976,"context_line":"            self.assertEqual(0, mock_extend.call_count)"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    @mock.patch(\u0027oslo_service.loopingcall.FixedIntervalLoopingCall\u0027,"},{"line_number":979,"context_line":"                new\u003dutils.ZeroIntervalLoopingCall)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_4461d238","line":976,"updated":"2016-06-12 16:48:44.000000000","message":"mock_extend.assert_not_called()","commit_id":"303ddc77dece6c405d9794096b0a348ff24b9a1e"},{"author":{"_account_id":11676,"name":"wuyuting","email":"wytdahu@gmail.com","username":"wuyuting"},"change_message_id":"9586b94c0c079e8ab2cbdf68b10a2142b3e3f8b5","unresolved":false,"context_lines":[{"line_number":973,"context_line":""},{"line_number":974,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":975,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":976,"context_line":"            self.assertEqual(0, mock_extend.call_count)"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    @mock.patch(\u0027oslo_service.loopingcall.FixedIntervalLoopingCall\u0027,"},{"line_number":979,"context_line":"                new\u003dutils.ZeroIntervalLoopingCall)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_f829819c","line":976,"in_reply_to":"7aa08908_4461d238","updated":"2016-06-13 01:51:53.000000000","message":"I\u0027ll update it.","commit_id":"303ddc77dece6c405d9794096b0a348ff24b9a1e"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b5871b2e272a9f11ead1a6efef4124b6507c6cff","unresolved":false,"context_lines":[{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    @mock.patch(\u0027oslo_service.loopingcall.FixedIntervalLoopingCall\u0027,"},{"line_number":979,"context_line":"                new\u003dutils.ZeroIntervalLoopingCall)"},{"line_number":980,"context_line":"    @mock.patch.object(common_cli.LOG, \u0027info\u0027)"},{"line_number":981,"context_line":"    def test_create_cloned_volume_different_size(self, log_info):"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"        fake_partition_id \u003d self.cli_data.fake_partition_id[0]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_84573a59","line":980,"updated":"2016-06-12 16:48:44.000000000","message":"I don\u0027t think we need to assert for logging calls in this patch.","commit_id":"303ddc77dece6c405d9794096b0a348ff24b9a1e"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b5871b2e272a9f11ead1a6efef4124b6507c6cff","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"                test_dst_volume, test_src_volume)"},{"line_number":1011,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":1012,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":1013,"context_line":"            mock_extend.assert_called_once_with(test_dst_volume, 10)"},{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"    @mock.patch.object(common_cli.LOG, \u0027info\u0027, mock.Mock())"},{"line_number":1016,"context_line":"    def test_create_cloned_volume_with_create_replica_fail(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_645cce7d","line":1013,"updated":"2016-06-12 16:48:44.000000000","message":"-1: I think we should also assert for the updated test_dst_volume[\u0027size\u0027] because the extend method uses it.","commit_id":"303ddc77dece6c405d9794096b0a348ff24b9a1e"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"1f7c5cd1904e1b5c5f4a1b78722db3fc47bd5d57","unresolved":false,"context_lines":[{"line_number":972,"context_line":"                test_dst_volume, test_src_volume)"},{"line_number":973,"context_line":""},{"line_number":974,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":975,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":976,"context_line":"            mock_extend.assert_not_called()"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    @mock.patch(\u0027oslo_service.loopingcall.FixedIntervalLoopingCall\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_e3758d97","line":975,"updated":"2016-06-16 11:56:39.000000000","message":"log_info.assert_called_once() is better","commit_id":"c871c302429a03ce522f45fc7cee0ad39be5272a"},{"author":{"_account_id":11676,"name":"wuyuting","email":"wytdahu@gmail.com","username":"wuyuting"},"change_message_id":"59d7dc036401ff1a1c144c05aff1a6a9f8d4e731","unresolved":false,"context_lines":[{"line_number":972,"context_line":"                test_dst_volume, test_src_volume)"},{"line_number":973,"context_line":""},{"line_number":974,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":975,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":976,"context_line":"            mock_extend.assert_not_called()"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    @mock.patch(\u0027oslo_service.loopingcall.FixedIntervalLoopingCall\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_7bb80176","line":975,"in_reply_to":"7aa08908_e3758d97","updated":"2016-06-17 01:23:37.000000000","message":"Thanks, I\u0027ll update it.","commit_id":"c871c302429a03ce522f45fc7cee0ad39be5272a"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"1f7c5cd1904e1b5c5f4a1b78722db3fc47bd5d57","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"            model_update \u003d self.driver.create_cloned_volume("},{"line_number":1010,"context_line":"                test_dst_volume, test_src_volume)"},{"line_number":1011,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":1012,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":1013,"context_line":"            mock_extend.assert_called_once_with(test_dst_volume, 10)"},{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"    @mock.patch.object(common_cli.LOG, \u0027info\u0027, mock.Mock())"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_c38fb173","line":1012,"updated":"2016-06-16 11:56:39.000000000","message":"log_info.assert_called_once()","commit_id":"c871c302429a03ce522f45fc7cee0ad39be5272a"},{"author":{"_account_id":11676,"name":"wuyuting","email":"wytdahu@gmail.com","username":"wuyuting"},"change_message_id":"59d7dc036401ff1a1c144c05aff1a6a9f8d4e731","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"            model_update \u003d self.driver.create_cloned_volume("},{"line_number":1010,"context_line":"                test_dst_volume, test_src_volume)"},{"line_number":1011,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":1012,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":1013,"context_line":"            mock_extend.assert_called_once_with(test_dst_volume, 10)"},{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"    @mock.patch.object(common_cli.LOG, \u0027info\u0027, mock.Mock())"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_bbaa6918","line":1012,"in_reply_to":"7aa08908_c38fb173","updated":"2016-06-17 01:23:37.000000000","message":"Done","commit_id":"c871c302429a03ce522f45fc7cee0ad39be5272a"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"1f7c5cd1904e1b5c5f4a1b78722db3fc47bd5d57","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"                test_dst_volume, test_src_volume)"},{"line_number":1011,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":1012,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":1013,"context_line":"            mock_extend.assert_called_once_with(test_dst_volume, 10)"},{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"    @mock.patch.object(common_cli.LOG, \u0027info\u0027, mock.Mock())"},{"line_number":1016,"context_line":"    def test_create_cloned_volume_with_create_replica_fail(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_c3b8512d","line":1013,"updated":"2016-06-16 11:56:39.000000000","message":"-1: I think we should also assert for the updated test_dst_volume[\u0027size\u0027] because the extend method uses it.\n\nself.assertEqual(test_src_volume[\u0027size], test_dst_volume[\u0027size\u0027])","commit_id":"c871c302429a03ce522f45fc7cee0ad39be5272a"},{"author":{"_account_id":11676,"name":"wuyuting","email":"wytdahu@gmail.com","username":"wuyuting"},"change_message_id":"59d7dc036401ff1a1c144c05aff1a6a9f8d4e731","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"                test_dst_volume, test_src_volume)"},{"line_number":1011,"context_line":"            self.assertDictMatch(test_model_update, model_update)"},{"line_number":1012,"context_line":"            self.assertEqual(1, log_info.call_count)"},{"line_number":1013,"context_line":"            mock_extend.assert_called_once_with(test_dst_volume, 10)"},{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"    @mock.patch.object(common_cli.LOG, \u0027info\u0027, mock.Mock())"},{"line_number":1016,"context_line":"    def test_create_cloned_volume_with_create_replica_fail(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_5b626517","line":1013,"in_reply_to":"7aa08908_c3b8512d","updated":"2016-06-17 01:23:37.000000000","message":"Done","commit_id":"c871c302429a03ce522f45fc7cee0ad39be5272a"}],"cinder/volume/drivers/infortrend/eonstor_ds_cli/common_cli.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"724ea43b6cde7e410c8509d3b307c29c6b012bfe","unresolved":false,"context_lines":[{"line_number":945,"context_line":"        if volume[\u0027size\u0027] !\u003d src_vref[\u0027size\u0027]:"},{"line_number":946,"context_line":"            new_size \u003d volume[\u0027size\u0027]"},{"line_number":947,"context_line":"            volume[\u0027size\u0027] \u003d src_vref[\u0027size\u0027]"},{"line_number":948,"context_line":"            self.extend_volume(volume, new_size)"},{"line_number":949,"context_line":""},{"line_number":950,"context_line":"        LOG.info(_LI(\u0027Create Cloned Volume %(volume_id)s completed.\u0027), {"},{"line_number":951,"context_line":"            \u0027volume_id\u0027: volume[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_3852d035","line":948,"range":{"start_line":948,"start_character":12,"end_line":948,"end_character":48},"updated":"2016-06-17 19:32:50.000000000","message":"You potentially have a bug here. Have you tested this operation specifically (CIs does not cover this case)? _create_volume_from_volume() have created the volume, but haven\u0027t save the volume[\u0027provider_location\u0027] which will be needed in extend_volume().","commit_id":"1f248d19322b98c1759be74a93329209bdf51cfc"}],"cinder/volume/drivers/infortrend/infortrend_fc_cli.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"de361a7336cbae666ebc72290a7e9afcafefcab6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            \u0027src_vref provider_location\u003d%(provider_location)s\u0027, {"},{"line_number":71,"context_line":"                \u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":72,"context_line":"                \u0027provider_location\u0027: src_vref[\u0027provider_location\u0027]})"},{"line_number":73,"context_line":"        if volume.size !\u003d src_vref.size:"},{"line_number":74,"context_line":"            res \u003d self.common.create_cloned_volume(volume, src_vref)"},{"line_number":75,"context_line":"            self.common.extend_volume(volume, volume.size)"},{"line_number":76,"context_line":"            return res"},{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            return self.common.create_cloned_volume(volume, src_vref)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":81,"context_line":"        \"\"\"Extend a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_fa64a4b9","line":78,"range":{"start_line":73,"start_character":0,"end_line":78,"end_character":69},"updated":"2016-06-08 10:03:59.000000000","message":"-1:\n\n res \u003d self.common.create_cloned_volume(volume, src_vref)\n if volume.size !\u003d src_vref.size:\n     self.common.extend_volume(volume, volume.size)\n return res","commit_id":"96e946ce8de1132654d0e145f6c62a22e2a6e430"},{"author":{"_account_id":11676,"name":"wuyuting","email":"wytdahu@gmail.com","username":"wuyuting"},"change_message_id":"e9d28c609aca8fd0ed3fe019413dae9815aacc73","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            \u0027src_vref provider_location\u003d%(provider_location)s\u0027, {"},{"line_number":71,"context_line":"                \u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":72,"context_line":"                \u0027provider_location\u0027: src_vref[\u0027provider_location\u0027]})"},{"line_number":73,"context_line":"        if volume.size !\u003d src_vref.size:"},{"line_number":74,"context_line":"            res \u003d self.common.create_cloned_volume(volume, src_vref)"},{"line_number":75,"context_line":"            self.common.extend_volume(volume, volume.size)"},{"line_number":76,"context_line":"            return res"},{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            return self.common.create_cloned_volume(volume, src_vref)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":81,"context_line":"        \"\"\"Extend a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_4bc888a8","line":78,"range":{"start_line":73,"start_character":0,"end_line":78,"end_character":69},"in_reply_to":"7aa08908_fa64a4b9","updated":"2016-06-08 10:38:14.000000000","message":"Thank you for your suggestion, I\u0027ll update it.","commit_id":"96e946ce8de1132654d0e145f6c62a22e2a6e430"}],"cinder/volume/drivers/infortrend/infortrend_iscsi_cli.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"de361a7336cbae666ebc72290a7e9afcafefcab6","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            \u0027src_vref provider_location\u003d%(provider_location)s\u0027, {"},{"line_number":69,"context_line":"                \u0027volume_id\u0027: volume[\u0027id\u0027],"},{"line_number":70,"context_line":"                \u0027provider_location\u0027: src_vref[\u0027provider_location\u0027]})"},{"line_number":71,"context_line":"        if volume.size !\u003d src_vref.size:"},{"line_number":72,"context_line":"            res \u003d self.common.create_cloned_volume(volume, src_vref)"},{"line_number":73,"context_line":"            self.common.extend_volume(volume, volume.size)"},{"line_number":74,"context_line":"            return res"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            return self.common.create_cloned_volume(volume, src_vref)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":79,"context_line":"        \"\"\"Extend a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_1aa370b3","line":76,"range":{"start_line":71,"start_character":0,"end_line":76,"end_character":69},"updated":"2016-06-08 10:03:59.000000000","message":"-1: Same as in infortrend_fc_cli.py file","commit_id":"96e946ce8de1132654d0e145f6c62a22e2a6e430"}]}
