)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"8cab7ee4c53afbcc967cec2479596a05a2aa5e32","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zengyingzhe \u003czengyingzhe@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-24 11:09:51 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add validation for huawei driver configuration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some configurations of huawei driver aren\u0027t validated right now,"},{"line_number":10,"context_line":"this patch addes the necessary validations."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba5da102_3ae120d1","line":7,"range":{"start_line":7,"start_character":19,"end_line":7,"end_character":25},"updated":"2016-11-01 11:58:00.000000000","message":"Huawei","commit_id":"da1efe895b475fb3b08f0d0bbc8aac9332c38cfe"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"8cab7ee4c53afbcc967cec2479596a05a2aa5e32","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add validation for huawei driver configuration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some configurations of huawei driver aren\u0027t validated right now,"},{"line_number":10,"context_line":"this patch addes the necessary validations."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ie912142444d41805201b791caf5736611f9cd680"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba5da102_7aeb98b0","line":9,"range":{"start_line":9,"start_character":23,"end_line":9,"end_character":29},"updated":"2016-11-01 11:58:00.000000000","message":"Huawei","commit_id":"da1efe895b475fb3b08f0d0bbc8aac9332c38cfe"}],"cinder/tests/unit/volume/drivers/huawei/test_huawei_drivers.py":[{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"a355c3ef39c4eb115f0d7f6e87fbb7a4a231c570","unresolved":false,"context_lines":[{"line_number":5259,"context_line":"        fakefile.write(doc.toprettyxml(indent\u003d\u0027\u0027))"},{"line_number":5260,"context_line":"        fakefile.close()"},{"line_number":5261,"context_line":""},{"line_number":5262,"context_line":"    @mock.patch.object(ET.Element, \u0027findtext\u0027, return_value\u003d\u0027EType\u0027)"},{"line_number":5263,"context_line":"    def test_wrong_product(self, mock_findtext):"},{"line_number":5264,"context_line":"        root \u003d ET.Element(None)"},{"line_number":5265,"context_line":"        self.assertRaises(exception.InvalidInput,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_7d56d606","line":5262,"range":{"start_line":5262,"start_character":4,"end_line":5262,"end_character":68},"updated":"2016-11-03 11:45:32.000000000","message":"we can\u0027t mock Element class in python 3 because of it\u0027s C implementation. so we need to change this mocks\n\nhttps://github.com/python/cpython/blob/3.4/Lib/xml/etree/ElementTree.py#L1667","commit_id":"da1efe895b475fb3b08f0d0bbc8aac9332c38cfe"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"27ba7bb59890d1e7b1c6a7bae74613dd5e55597b","unresolved":false,"context_lines":[{"line_number":5381,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":5382,"context_line":"                          self.huawei_conf.update_config_value)"},{"line_number":5383,"context_line":""},{"line_number":5384,"context_line":"    @mock.patch.object(cinder_utils, \u0027execute\u0027)"},{"line_number":5385,"context_line":"    def test_no_protocol(self, mock_utils):"},{"line_number":5386,"context_line":"        self._create_fake_conf_file()"},{"line_number":5387,"context_line":"        self._modify_conf(self.conf.cinder_huawei_conf_file,"},{"line_number":5388,"context_line":"                          \u0027Storage/Protocol\u0027, None)"},{"line_number":5389,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":5390,"context_line":"                          self.huawei_conf.update_config_value)"},{"line_number":5391,"context_line":""},{"line_number":5392,"context_line":"    @mock.patch.object(cinder_utils, \u0027execute\u0027)"},{"line_number":5393,"context_line":"    def test_wrong_lun_ready_wait_interval(self, mock_utils):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_ca1e6a5e","line":5390,"range":{"start_line":5384,"start_character":3,"end_line":5390,"end_character":63},"updated":"2017-03-03 03:39:11.000000000","message":"Most of these testcases\u0027 logic are similar, this means you can combine them into one with ddt.","commit_id":"bf10d7e63aba47fd53c687c2be05d44a0cb2a5dc"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"d3ff3a14f4caa31f23d2da281d04399db09181cd","unresolved":false,"context_lines":[{"line_number":5381,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":5382,"context_line":"                          self.huawei_conf.update_config_value)"},{"line_number":5383,"context_line":""},{"line_number":5384,"context_line":"    @mock.patch.object(cinder_utils, \u0027execute\u0027)"},{"line_number":5385,"context_line":"    def test_no_protocol(self, mock_utils):"},{"line_number":5386,"context_line":"        self._create_fake_conf_file()"},{"line_number":5387,"context_line":"        self._modify_conf(self.conf.cinder_huawei_conf_file,"},{"line_number":5388,"context_line":"                          \u0027Storage/Protocol\u0027, None)"},{"line_number":5389,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":5390,"context_line":"                          self.huawei_conf.update_config_value)"},{"line_number":5391,"context_line":""},{"line_number":5392,"context_line":"    @mock.patch.object(cinder_utils, \u0027execute\u0027)"},{"line_number":5393,"context_line":"    def test_wrong_lun_ready_wait_interval(self, mock_utils):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_36accb8b","line":5390,"range":{"start_line":5384,"start_character":3,"end_line":5390,"end_character":63},"in_reply_to":"ba2be162_ca1e6a5e","updated":"2017-03-03 07:01:12.000000000","message":"Done","commit_id":"bf10d7e63aba47fd53c687c2be05d44a0cb2a5dc"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"765a766b7cb1ba1bd51c18ee5359919218b1c438","unresolved":false,"context_lines":[{"line_number":5323,"context_line":"        self.huawei_conf.update_config_value()"},{"line_number":5324,"context_line":"        self.assertEqual(self.conf.lun_type, constants.THIN_LUNTYPE)"},{"line_number":5325,"context_line":""},{"line_number":5326,"context_line":"    @ddt.data(\u0027-1\u0027, \u00274\u0027)"},{"line_number":5327,"context_line":"    @mock.patch.object(cinder_utils, \u0027execute\u0027)"},{"line_number":5328,"context_line":"    def test_wrong_lun_prefetch_type(self, pre_type, mock_utils):"},{"line_number":5329,"context_line":"        self._create_fake_conf_file()"},{"line_number":5330,"context_line":"        self._modify_conf(self.conf.cinder_huawei_conf_file,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_9de03398","line":5327,"range":{"start_line":5326,"start_character":3,"end_line":5327,"end_character":47},"updated":"2017-03-03 09:14:32.000000000","message":"Please add  @ddt.data at the begining of the testcase class, or the testcases would break, also you don\u0027t need the argument \u0027mock_utils\u0027, cause you don\u0027t use it in your testcase. Same with other testcases.","commit_id":"7041ae24268216ea20fc998f6cf36010f25a5f81"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"993ea33299ecf5c789540da82ddaadb4d763c1e0","unresolved":false,"context_lines":[{"line_number":5323,"context_line":"        self.huawei_conf.update_config_value()"},{"line_number":5324,"context_line":"        self.assertEqual(self.conf.lun_type, constants.THIN_LUNTYPE)"},{"line_number":5325,"context_line":""},{"line_number":5326,"context_line":"    @ddt.data(\u0027-1\u0027, \u00274\u0027)"},{"line_number":5327,"context_line":"    @mock.patch.object(cinder_utils, \u0027execute\u0027)"},{"line_number":5328,"context_line":"    def test_wrong_lun_prefetch_type(self, pre_type, mock_utils):"},{"line_number":5329,"context_line":"        self._create_fake_conf_file()"},{"line_number":5330,"context_line":"        self._modify_conf(self.conf.cinder_huawei_conf_file,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_486fdb2a","line":5327,"range":{"start_line":5326,"start_character":3,"end_line":5327,"end_character":47},"in_reply_to":"ba2be162_9de03398","updated":"2017-03-03 09:33:56.000000000","message":"Good catch. Thanks for Tommy.","commit_id":"7041ae24268216ea20fc998f6cf36010f25a5f81"}],"cinder/volume/drivers/huawei/constants.py":[{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"81390f2830df36320bdf39b195928505e406dba8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"ERROR_VOLUME_ALREADY_EXIST \u003d 1077948993"},{"line_number":51,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":52,"context_line":"ERROR_VOLUME_NOT_EXIST \u003d 1077939726"},{"line_number":53,"context_line":"ERROR_LUN_NOT_EXIST \u003d 1077936859"},{"line_number":54,"context_line":"ERROR_SNAPSHOT_NOT_EXIST \u003d 1077937880"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"RELOGIN_ERROR_PASS \u003d [ERROR_VOLUME_NOT_EXIST]"},{"line_number":57,"context_line":"RUNNING_NORMAL \u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_52c71445","line":54,"range":{"start_line":53,"start_character":0,"end_line":54,"end_character":37},"updated":"2016-10-26 10:05:56.000000000","message":"Maybe it\u0027s a silly question, but can you explain from where you got this constants?","commit_id":"da1efe895b475fb3b08f0d0bbc8aac9332c38cfe"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"8cab7ee4c53afbcc967cec2479596a05a2aa5e32","unresolved":false,"context_lines":[{"line_number":50,"context_line":"ERROR_VOLUME_ALREADY_EXIST \u003d 1077948993"},{"line_number":51,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":52,"context_line":"ERROR_VOLUME_NOT_EXIST \u003d 1077939726"},{"line_number":53,"context_line":"ERROR_LUN_NOT_EXIST \u003d 1077936859"},{"line_number":54,"context_line":"ERROR_SNAPSHOT_NOT_EXIST \u003d 1077937880"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"RELOGIN_ERROR_PASS \u003d [ERROR_VOLUME_NOT_EXIST]"},{"line_number":57,"context_line":"RUNNING_NORMAL \u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_7a02b870","line":54,"range":{"start_line":53,"start_character":0,"end_line":54,"end_character":37},"in_reply_to":"ba5da102_52c71445","updated":"2016-11-01 11:58:00.000000000","message":"Yes, please add a comment explaining this magic numbers.","commit_id":"da1efe895b475fb3b08f0d0bbc8aac9332c38cfe"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"38f5caecbd8891448b217860bd3598c39973c9c0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"STATUS_VOLUME_READY \u003d \u002727\u0027"},{"line_number":20,"context_line":"STATUS_LUNCOPY_READY \u003d \u002740\u0027"},{"line_number":21,"context_line":"STATUS_QOS_ACTIVE \u003d \u00272\u0027"},{"line_number":22,"context_line":"STATUS_QOS_INACTIVATED \u003d \u002745\u0027"},{"line_number":23,"context_line":"LUN_TYPE \u003d \u002711\u0027"},{"line_number":24,"context_line":"SNAPSHOT_TYPE \u003d \u002727\u0027"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba2be162_0d4b63b1","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":22},"updated":"2017-03-02 13:55:17.000000000","message":"This should be STATUS_QOS_INACTIVE","commit_id":"ce29d699b914159e2485d360a8292ab1ed6f6870"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"9c2b8b9ed05730f5ec7239993b07eba5d2432801","unresolved":false,"context_lines":[{"line_number":19,"context_line":"STATUS_VOLUME_READY \u003d \u002727\u0027"},{"line_number":20,"context_line":"STATUS_LUNCOPY_READY \u003d \u002740\u0027"},{"line_number":21,"context_line":"STATUS_QOS_ACTIVE \u003d \u00272\u0027"},{"line_number":22,"context_line":"STATUS_QOS_INACTIVATED \u003d \u002745\u0027"},{"line_number":23,"context_line":"LUN_TYPE \u003d \u002711\u0027"},{"line_number":24,"context_line":"SNAPSHOT_TYPE \u003d \u002727\u0027"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba2be162_e75a8729","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":22},"in_reply_to":"ba2be162_0d4b63b1","updated":"2017-03-03 03:00:30.000000000","message":"Done","commit_id":"ce29d699b914159e2485d360a8292ab1ed6f6870"}]}
