)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"00d5934292b89fb8767897efba136aff1c9762dd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-12-09 17:45:16 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Hyper-V: Adds VolumeOps unit tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The Hyper-V driver oldest tests (test_hypervapi.py) are proving hard to"},{"line_number":10,"context_line":"maintain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a961159_fa0a671e","line":7,"range":{"start_line":7,"start_character":9,"end_line":7,"end_character":13},"updated":"2014-12-23 07:40:51.000000000","message":"It seems a little confusing, you delete some tests and refactor some tests, but adds nothing.\n\n    \"This commit refactors the VolumeOps test cases.\"","commit_id":"422c08e13472f19a79ffce64108962a68fc24ca3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"478e54aa6686e26751e4aff36a77e521a6c350e7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-12-09 17:45:16 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Hyper-V: Adds VolumeOps unit tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The Hyper-V driver oldest tests (test_hypervapi.py) are proving hard to"},{"line_number":10,"context_line":"maintain."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a961159_87cba7a2","line":7,"in_reply_to":"3a961159_fa0a671e","updated":"2014-12-24 13:44:38.000000000","message":"I know what you mean. It\u0027s something weird that happened. There should have been at least +200 lines to this commit, on the previous patchsets, but they were somehow lost during the rebase.\n\nStrangely enough, doing git show on my local repo, showed only the deleted stuff, just as on gerrit. Doing git commit -a --amend though, showed +200 additions, but nowhere to be found.\n\nI had to rewrite the tests by hand, since I didn\u0027t have a backup.\n\nIt\u0027s actually the second time I encounter such a problem and it\u0027s annoying.","commit_id":"422c08e13472f19a79ffce64108962a68fc24ca3"}],"nova/tests/unit/virt/hyperv/test_hypervapi.py":[{"author":{"_account_id":14271,"name":"Kallebe Monteiro","email":"kallebe.monteiro@lsbd.ufc.br","username":"kallebe"},"change_message_id":"878e7701c61894fc3de5ea1bf8032308cb6847aa","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        # Check to make sure the method raises NotImplementedError."},{"line_number":172,"context_line":"        self.assertRaises(NotImplementedError,"},{"line_number":173,"context_line":"                          self._conn.plug_vifs,"},{"line_number":174,"context_line":"                          instance\u003dmock.sentinel.instance,"},{"line_number":175,"context_line":"                          network_info\u003dNone)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def test_unplug_vifs(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a80dd14_bbc60447","line":174,"updated":"2015-03-16 16:51:34.000000000","message":"mock import was deleted but it is still used here","commit_id":"7ab6e85773d1638573430bff1f6901ce13c08719"},{"author":{"_account_id":14271,"name":"Kallebe Monteiro","email":"kallebe.monteiro@lsbd.ufc.br","username":"kallebe"},"change_message_id":"878e7701c61894fc3de5ea1bf8032308cb6847aa","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        # Check to make sure the method raises NotImplementedError."},{"line_number":179,"context_line":"        self.assertRaises(NotImplementedError,"},{"line_number":180,"context_line":"                          self._conn.unplug_vifs,"},{"line_number":181,"context_line":"                          instance\u003dmock.sentinel.instance,"},{"line_number":182,"context_line":"                          network_info\u003dNone)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def test_refresh_instance_security_rules(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a80dd14_9bf94082","line":181,"updated":"2015-03-16 16:51:34.000000000","message":"Same as above","commit_id":"7ab6e85773d1638573430bff1f6901ce13c08719"}],"nova/tests/unit/virt/hyperv/test_volumeops.py":[{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"60451dc28da5a42680bcc98fbb26f6f87b6d4fd0","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def test_get_volume_connector(self):"},{"line_number":116,"context_line":"        mock_instance \u003d mock.DEFAULT"},{"line_number":117,"context_line":"        initiator \u003d self._volumeops._volutils.get_iscsi_initiator.return_value"},{"line_number":118,"context_line":"        expected \u003d {\u0027ip\u0027: CONF.my_ip,"},{"line_number":119,"context_line":"                    \u0027host\u0027: CONF.host,"},{"line_number":120,"context_line":"                    \u0027initiator\u0027: initiator}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_8c92e79e","line":117,"updated":"2015-01-09 13:21:00.000000000","message":"I prefer replace such stuff by something like this:\n\ninitiator \u003d mock.Mock()\n\nself._volumeops._volutils.get_iscsi_initiator.return_value \u003d initiator","commit_id":"487cd29f8463ebdea50493b2c01a4d3a2d5a9af7"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"27ae95e0440a44f7f092c385ea8d6db582f99af1","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def test_get_volume_connector(self):"},{"line_number":116,"context_line":"        mock_instance \u003d mock.DEFAULT"},{"line_number":117,"context_line":"        initiator \u003d self._volumeops._volutils.get_iscsi_initiator.return_value"},{"line_number":118,"context_line":"        expected \u003d {\u0027ip\u0027: CONF.my_ip,"},{"line_number":119,"context_line":"                    \u0027host\u0027: CONF.host,"},{"line_number":120,"context_line":"                    \u0027initiator\u0027: initiator}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_665b9922","line":117,"in_reply_to":"3a961159_75dee1db","updated":"2015-01-14 13:12:31.000000000","message":"Actually the same, but this line a bit confused me when I saw it. But agree, it can stay as it is","commit_id":"487cd29f8463ebdea50493b2c01a4d3a2d5a9af7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a6da6a5238c1ab60bdb8ff45c597868b1efad23a","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def test_get_volume_connector(self):"},{"line_number":116,"context_line":"        mock_instance \u003d mock.DEFAULT"},{"line_number":117,"context_line":"        initiator \u003d self._volumeops._volutils.get_iscsi_initiator.return_value"},{"line_number":118,"context_line":"        expected \u003d {\u0027ip\u0027: CONF.my_ip,"},{"line_number":119,"context_line":"                    \u0027host\u0027: CONF.host,"},{"line_number":120,"context_line":"                    \u0027initiator\u0027: initiator}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_75dee1db","line":117,"in_reply_to":"3a961159_8c92e79e","updated":"2015-01-14 11:59:31.000000000","message":"isn\u0027t that basically the same thing? As it is now, I\u0027m creating one less object..","commit_id":"487cd29f8463ebdea50493b2c01a4d3a2d5a9af7"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"60451dc28da5a42680bcc98fbb26f6f87b6d4fd0","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        get_ide_path \u003d self._volume_driver._vmutils.get_vm_ide_controller"},{"line_number":249,"context_line":"        get_scsi_path \u003d self._volume_driver._vmutils.get_vm_scsi_controller"},{"line_number":250,"context_line":"        fake_ide_path \u003d get_ide_path.return_value"},{"line_number":251,"context_line":"        fake_scsi_path \u003d get_scsi_path.return_value"},{"line_number":252,"context_line":"        fake_mounted_disk_path \u003d mock_get_mounted_disk_from_lun.return_value"},{"line_number":253,"context_line":"        attach_vol \u003d self._volume_driver._vmutils.attach_volume_to_controller"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_ecb7eb1f","line":250,"updated":"2015-01-09 13:21:00.000000000","message":"Ditto","commit_id":"487cd29f8463ebdea50493b2c01a4d3a2d5a9af7"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a6da6a5238c1ab60bdb8ff45c597868b1efad23a","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        get_ide_path \u003d self._volume_driver._vmutils.get_vm_ide_controller"},{"line_number":249,"context_line":"        get_scsi_path \u003d self._volume_driver._vmutils.get_vm_scsi_controller"},{"line_number":250,"context_line":"        fake_ide_path \u003d get_ide_path.return_value"},{"line_number":251,"context_line":"        fake_scsi_path \u003d get_scsi_path.return_value"},{"line_number":252,"context_line":"        fake_mounted_disk_path \u003d mock_get_mounted_disk_from_lun.return_value"},{"line_number":253,"context_line":"        attach_vol \u003d self._volume_driver._vmutils.attach_volume_to_controller"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_15003d34","line":250,"in_reply_to":"3a961159_ecb7eb1f","updated":"2015-01-14 11:59:31.000000000","message":"same.","commit_id":"487cd29f8463ebdea50493b2c01a4d3a2d5a9af7"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"2ce6d8fb2b6a95026c595c1d674eb68f25bf95c7","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                       \u0027_get_mounted_disk_from_lun\u0027)"},{"line_number":170,"context_line":"    def _check_login_storage_target(self, mock_get_mounted_disk_from_lun,"},{"line_number":171,"context_line":"                                    dev_number):"},{"line_number":172,"context_line":"        connection_info \u003d {\u0027data\u0027: {\u0027target_lun\u0027: mock.sentinel.fake_lun,"},{"line_number":173,"context_line":"                                    \u0027target_iqn\u0027: mock.sentinel.fake_iqn,"},{"line_number":174,"context_line":"                                    \u0027target_portal\u0027: mock.sentinel.fake_portal,"},{"line_number":175,"context_line":"                                    \u0027auth_method\u0027: \u0027chap\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_96f648d6","line":172,"updated":"2015-02-02 14:18:20.000000000","message":"connection info is used by multiple tests. Wouldn\u0027t it be better to define it as a constant in order to avoid duplicated code?","commit_id":"a5561abd3319b25a882bdc334049147cf4d392e8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a22efd4e525b1d465e56bff3a7243a1b1b140dcd","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                       \u0027_get_mounted_disk_from_lun\u0027)"},{"line_number":170,"context_line":"    def _check_login_storage_target(self, mock_get_mounted_disk_from_lun,"},{"line_number":171,"context_line":"                                    dev_number):"},{"line_number":172,"context_line":"        connection_info \u003d {\u0027data\u0027: {\u0027target_lun\u0027: mock.sentinel.fake_lun,"},{"line_number":173,"context_line":"                                    \u0027target_iqn\u0027: mock.sentinel.fake_iqn,"},{"line_number":174,"context_line":"                                    \u0027target_portal\u0027: mock.sentinel.fake_portal,"},{"line_number":175,"context_line":"                                    \u0027auth_method\u0027: \u0027chap\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_965a964e","line":172,"in_reply_to":"da86d52c_96f648d6","updated":"2015-02-03 12:04:36.000000000","message":"Done","commit_id":"a5561abd3319b25a882bdc334049147cf4d392e8"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"2ce6d8fb2b6a95026c595c1d674eb68f25bf95c7","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    def test_login_storage_target(self):"},{"line_number":200,"context_line":"        self._check_login_storage_target(dev_number\u003d0)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def test_logout_storage_target_skip(self):"},{"line_number":203,"context_line":"        self._volume_driver._volutils.get_target_lun_count.return_value \u003d 1"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        self._volume_driver.logout_storage_target("}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_767c7421","line":202,"updated":"2015-02-02 14:18:20.000000000","message":"Those two tests are almost identical. It would be a good idea to put the common code in a helper method.","commit_id":"a5561abd3319b25a882bdc334049147cf4d392e8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a22efd4e525b1d465e56bff3a7243a1b1b140dcd","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    def test_login_storage_target(self):"},{"line_number":200,"context_line":"        self._check_login_storage_target(dev_number\u003d0)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def test_logout_storage_target_skip(self):"},{"line_number":203,"context_line":"        self._volume_driver._volutils.get_target_lun_count.return_value \u003d 1"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        self._volume_driver.logout_storage_target("}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_a192f29c","line":202,"in_reply_to":"da86d52c_767c7421","updated":"2015-02-03 12:04:36.000000000","message":"Done","commit_id":"a5561abd3319b25a882bdc334049147cf4d392e8"}]}
