)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"45fe63967c45dbb5017145619517c35d248acbd6","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can not terminate connection for multipath tool sending IOs to"},{"line_number":13,"context_line":"storage array periodically."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"fixes bug 1223975"},{"line_number":16,"context_line":"Change-Id: I6fc02e045146ece49162ca6be1a83fa8d0214a0a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAS3%2F%2FoZU%3D","line":15,"updated":"2013-09-23 17:44:19.000000000","message":"Please use Closes bug, thanks","commit_id":"6a89542d95fa34d9259d50d66ef84434ac66dcc3"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"9b7a6db658b73c744f0e6496232f4330a2e04fd2","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can not terminate connection for multipath tool sending IOs to"},{"line_number":13,"context_line":"storage array periodically."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"fixes bug 1223975"},{"line_number":16,"context_line":"Change-Id: I6fc02e045146ece49162ca6be1a83fa8d0214a0a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAS3%2F%2FjfI%3D","line":15,"in_reply_to":"AAAAS3%2F%2FoZU%3D","updated":"2013-09-24 18:39:08.000000000","message":"Done","commit_id":"6a89542d95fa34d9259d50d66ef84434ac66dcc3"}],"nova/tests/virt/libvirt/test_libvirt_volume.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"c0f1dab02583548d67030f4120e8f5bce53f7662","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        libvirt_driver._get_multipath_iqn \u003d lambda x: self.iqn"},{"line_number":448,"context_line":"        libvirt_driver.disconnect_volume(connection_info, \u0027vde\u0027)"},{"line_number":449,"context_line":"        expected_multipath_cmd \u003d (\u0027multipath\u0027, \u0027-f\u0027, \u0027foo\u0027)"},{"line_number":450,"context_line":"        self.assertEqual(expected_multipath_cmd in self.executes, True)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    def test_libvirt_kvm_volume_with_multipath_getmpdev(self):"},{"line_number":453,"context_line":"        self.flags(libvirt_iscsi_use_multipath\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FTdI%3D","line":450,"updated":"2013-09-30 15:30:32.000000000","message":"This should use self.assertIn","commit_id":"e554e6954069b7a77ee82247d60b757080fd4492"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"8c5761257eec5a70ebbbc7d337959de0965bbd29","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        libvirt_driver._get_multipath_iqn \u003d lambda x: self.iqn"},{"line_number":448,"context_line":"        libvirt_driver.disconnect_volume(connection_info, \u0027vde\u0027)"},{"line_number":449,"context_line":"        expected_multipath_cmd \u003d (\u0027multipath\u0027, \u0027-f\u0027, \u0027foo\u0027)"},{"line_number":450,"context_line":"        self.assertEqual(expected_multipath_cmd in self.executes, True)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    def test_libvirt_kvm_volume_with_multipath_getmpdev(self):"},{"line_number":453,"context_line":"        self.flags(libvirt_iscsi_use_multipath\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FP%2B4%3D","line":450,"in_reply_to":"AAAAS3%2F%2FTdI%3D","updated":"2013-10-01 15:12:05.000000000","message":"Done","commit_id":"e554e6954069b7a77ee82247d60b757080fd4492"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"c0f1dab02583548d67030f4120e8f5bce53f7662","unresolved":false,"context_lines":[{"line_number":496,"context_line":"        libvirt_driver._get_multipath_iqn \u003d lambda x: iqn"},{"line_number":497,"context_line":"        libvirt_driver.disconnect_volume(connection_info, \u0027vde\u0027)"},{"line_number":498,"context_line":"        expected_multipath_cmd \u003d (\u0027multipath\u0027, \u0027-f\u0027, \u0027foo\u0027)"},{"line_number":499,"context_line":"        self.assertEqual(expected_multipath_cmd in self.executes, True)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    def test_libvirt_kvm_iser_volume_with_multipath_getmpdev(self):"},{"line_number":502,"context_line":"        self.flags(libvirt_iser_use_multipath\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FTdE%3D","line":499,"updated":"2013-09-30 15:30:32.000000000","message":"self.assertIn","commit_id":"e554e6954069b7a77ee82247d60b757080fd4492"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"8c5761257eec5a70ebbbc7d337959de0965bbd29","unresolved":false,"context_lines":[{"line_number":496,"context_line":"        libvirt_driver._get_multipath_iqn \u003d lambda x: iqn"},{"line_number":497,"context_line":"        libvirt_driver.disconnect_volume(connection_info, \u0027vde\u0027)"},{"line_number":498,"context_line":"        expected_multipath_cmd \u003d (\u0027multipath\u0027, \u0027-f\u0027, \u0027foo\u0027)"},{"line_number":499,"context_line":"        self.assertEqual(expected_multipath_cmd in self.executes, True)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    def test_libvirt_kvm_iser_volume_with_multipath_getmpdev(self):"},{"line_number":502,"context_line":"        self.flags(libvirt_iser_use_multipath\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FP%2B0%3D","line":499,"in_reply_to":"AAAAS3%2F%2FTdE%3D","updated":"2013-10-01 15:12:05.000000000","message":"Done","commit_id":"e554e6954069b7a77ee82247d60b757080fd4492"}],"nova/virt/libvirt/volume.py":[{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"45fe63967c45dbb5017145619517c35d248acbd6","unresolved":false,"context_lines":[{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def _remove_multipath_device_descriptor(self, disk_descriptor):"},{"line_number":338,"context_line":"        disk_descriptor \u003d disk_descriptor.replace(\u0027/dev/mapper/\u0027, \u0027\u0027)"},{"line_number":339,"context_line":"        self._run_multipath([\u0027-f\u0027, disk_descriptor], check_exit_code\u003d[0, 1])"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def _disconnect_volume_multipath_iscsi(self, iscsi_properties,"},{"line_number":342,"context_line":"                                           multipath_device):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FoZ0%3D","line":339,"updated":"2013-09-23 17:44:19.000000000","message":"We probably need to try catch the command execution and raise the appropriate exception here.","commit_id":"6a89542d95fa34d9259d50d66ef84434ac66dcc3"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"9b7a6db658b73c744f0e6496232f4330a2e04fd2","unresolved":false,"context_lines":[{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def _remove_multipath_device_descriptor(self, disk_descriptor):"},{"line_number":338,"context_line":"        disk_descriptor \u003d disk_descriptor.replace(\u0027/dev/mapper/\u0027, \u0027\u0027)"},{"line_number":339,"context_line":"        self._run_multipath([\u0027-f\u0027, disk_descriptor], check_exit_code\u003d[0, 1])"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def _disconnect_volume_multipath_iscsi(self, iscsi_properties,"},{"line_number":342,"context_line":"                                           multipath_device):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FjfM%3D","line":339,"in_reply_to":"AAAAS3%2F%2FoZ0%3D","updated":"2013-09-24 18:39:08.000000000","message":"Sure, here it is better to log the error msg in exception.","commit_id":"6a89542d95fa34d9259d50d66ef84434ac66dcc3"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"c0f1dab02583548d67030f4120e8f5bce53f7662","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                check_exit_code\u003d[0, 1])"},{"line_number":342,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":343,"context_line":"            LOG.info(_(\u0027Failed to remove multipath device descriptor %s\u0027)"},{"line_number":344,"context_line":"                     % disk_descriptor)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    def _disconnect_volume_multipath_iscsi(self, iscsi_properties,"},{"line_number":347,"context_line":"                                           multipath_device):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FTc0%3D","line":344,"updated":"2013-09-30 15:30:32.000000000","message":"Maybe this should be a warn rather than just an info, since it could indicate a problem?","commit_id":"e554e6954069b7a77ee82247d60b757080fd4492"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"8c5761257eec5a70ebbbc7d337959de0965bbd29","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                check_exit_code\u003d[0, 1])"},{"line_number":342,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":343,"context_line":"            LOG.info(_(\u0027Failed to remove multipath device descriptor %s\u0027)"},{"line_number":344,"context_line":"                     % disk_descriptor)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    def _disconnect_volume_multipath_iscsi(self, iscsi_properties,"},{"line_number":347,"context_line":"                                           multipath_device):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FP%2Bw%3D","line":344,"in_reply_to":"AAAAS3%2F%2FTc0%3D","updated":"2013-10-01 15:12:05.000000000","message":"Done","commit_id":"e554e6954069b7a77ee82247d60b757080fd4492"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"c85f7f90be490bab58440af3c65425e6c3a1f3ec","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                check_exit_code\u003d[0, 1])"},{"line_number":342,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":343,"context_line":"            LOG.warn(_(\u0027Failed to remove multipath device descriptor %s\u0027)"},{"line_number":344,"context_line":"                     % disk_descriptor)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    def _disconnect_volume_multipath_iscsi(self, iscsi_properties,"},{"line_number":347,"context_line":"                                           multipath_device):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATH%2F%2FgHs%3D","line":344,"updated":"2013-10-15 10:58:30.000000000","message":"why not raise the exception? the command execution failed seems like a pretty bad situation.","commit_id":"8297e4749a25bbae9d45881a93dfbec843d2b2db"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"a5b628c8d90f704002884db5b19c2934b5965a91","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                check_exit_code\u003d[0, 1])"},{"line_number":342,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":343,"context_line":"            LOG.warn(_(\u0027Failed to remove multipath device descriptor %s\u0027)"},{"line_number":344,"context_line":"                     % disk_descriptor)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    def _disconnect_volume_multipath_iscsi(self, iscsi_properties,"},{"line_number":347,"context_line":"                                           multipath_device):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATX%2F%2F%2F3c%3D","line":344,"in_reply_to":"AAAATH%2F%2FchA%3D","updated":"2013-10-23 05:07:23.000000000","message":"In that case, could you please add some comments to explain it a bit more?","commit_id":"8297e4749a25bbae9d45881a93dfbec843d2b2db"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"712fe0ac2aa5d4a890af7b10443d745e069be5c4","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                check_exit_code\u003d[0, 1])"},{"line_number":342,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":343,"context_line":"            LOG.warn(_(\u0027Failed to remove multipath device descriptor %s\u0027)"},{"line_number":344,"context_line":"                     % disk_descriptor)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    def _disconnect_volume_multipath_iscsi(self, iscsi_properties,"},{"line_number":347,"context_line":"                                           multipath_device):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATH%2F%2FchA%3D","line":344,"in_reply_to":"AAAATH%2F%2FgHs%3D","updated":"2013-10-16 02:51:32.000000000","message":"In fact, I\u0027m not sure in either case the command will fail. Some drivers don\u0027t need to remove the dev mapper, so I hope the command wont affect them when executing failed. That\u0027s why it just logs a waring. But if you think this is serious, it\u0027s better to raise an exception. What do you think?  Thanks.","commit_id":"8297e4749a25bbae9d45881a93dfbec843d2b2db"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"15e07ec0a30ddf10d18fa8db9b3fbcc7c4891620","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                check_exit_code\u003d[0, 1])"},{"line_number":342,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":343,"context_line":"            LOG.warn(_(\u0027Failed to remove multipath device descriptor %s\u0027)"},{"line_number":344,"context_line":"                     % disk_descriptor)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    def _disconnect_volume_multipath_iscsi(self, iscsi_properties,"},{"line_number":347,"context_line":"                                           multipath_device):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATX%2F%2F%2Fb8%3D","line":344,"in_reply_to":"AAAATX%2F%2F%2F3c%3D","updated":"2013-10-23 07:38:02.000000000","message":"Sure, tks for review.","commit_id":"8297e4749a25bbae9d45881a93dfbec843d2b2db"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"9e070d3a52502fb11dd602204bb14dc2f118308d","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        try:"},{"line_number":340,"context_line":"            self._run_multipath([\u0027-f\u0027, disk_descriptor],"},{"line_number":341,"context_line":"                                check_exit_code\u003d[0, 1])"},{"line_number":342,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":343,"context_line":"            # Because not all cinder drivers need to remove the dev mapper,"},{"line_number":344,"context_line":"            # here just logs a warning to avoid affecting those drivers in"},{"line_number":345,"context_line":"            # exceptional cases."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATX%2F%2F%2FM4%3D","line":342,"updated":"2013-10-23 08:49:33.000000000","message":"please remove as exc since we are not using it.","commit_id":"e65702bb5358c8623c6e2cc4b1bb732fe7faf8ec"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"ee4393b0d11f2a9a73947f61d9475b3496dfe326","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        try:"},{"line_number":340,"context_line":"            self._run_multipath([\u0027-f\u0027, disk_descriptor],"},{"line_number":341,"context_line":"                                check_exit_code\u003d[0, 1])"},{"line_number":342,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":343,"context_line":"            # Because not all cinder drivers need to remove the dev mapper,"},{"line_number":344,"context_line":"            # here just logs a warning to avoid affecting those drivers in"},{"line_number":345,"context_line":"            # exceptional cases."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATX%2F%2F%2FGw%3D","line":342,"in_reply_to":"AAAATX%2F%2F%2FM4%3D","updated":"2013-10-23 09:16:41.000000000","message":"I think it\u0027s better to log the exc.message. I\u0027ll fix it in new patch. Thanks.","commit_id":"e65702bb5358c8623c6e2cc4b1bb732fe7faf8ec"}]}
