)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"20c43fe993ced2e31257f875c97b18d18f28b3ae","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     anastasiya-zhyrkevich \u003canastasiya.zhyrkevich@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-10-27 23:21:37 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"manage_existing API EntryCreateTask revert"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I99df840bd7c8cd913d6045dd90871eb8894bbac8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_80f90381","line":7,"updated":"2019-10-27 21:21:24.000000000","message":"This isn\u0027t really clear what this change is doing. I think something along the lines of the following would be better:\n\n\"Add test coverage for volume revert\"","commit_id":"98450d4c5dad9ada9fd5983e7f2a63d0dcb89844"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"20c43fe993ced2e31257f875c97b18d18f28b3ae","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-10-27 23:21:37 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"manage_existing API EntryCreateTask revert"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I99df840bd7c8cd913d6045dd90871eb8894bbac8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_40d6abf4","line":8,"updated":"2019-10-27 21:21:24.000000000","message":"Add the line:\n\nClosed-bug: #1599140\n\nThat will link this commit to the bug and should automatically close it once it merges.\n\nWould be good to add some description to this commit message too explaining what is being changed by this and why.","commit_id":"98450d4c5dad9ada9fd5983e7f2a63d0dcb89844"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6bb1a3636b9d428a3753b7ceac17db2ec9a5fd6e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     anastasiya-zhyrkevich \u003canastasiya.zhyrkevich@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-10-28 01:07:28 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add test coverage for volume api revert"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closed-bug: #1599140"},{"line_number":10,"context_line":"New tests covers revert functionality for volume API."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_e0176945","line":7,"updated":"2019-10-30 14:14:42.000000000","message":"Looking again, this isn\u0027t volume revert, it\u0027s rolling back from a failed \"manage existing\" call, right?","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"59f699519d23406c89368f86c31491fb43797070","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     anastasiya-zhyrkevich \u003canastasiya.zhyrkevich@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-10-28 01:07:28 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add test coverage for volume api revert"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closed-bug: #1599140"},{"line_number":10,"context_line":"New tests covers revert functionality for volume API."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_1c7a2df0","line":7,"in_reply_to":"3fa7e38b_e0176945","updated":"2019-10-30 16:50:14.000000000","message":"You are right, this is testing the failure flow (revert) of the manage operation, so we need a better commit message.","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"59f699519d23406c89368f86c31491fb43797070","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add test coverage for volume api revert"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closed-bug: #1599140"},{"line_number":10,"context_line":"New tests covers revert functionality for volume API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I99df840bd7c8cd913d6045dd90871eb8894bbac8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_7cdec16a","line":9,"updated":"2019-10-30 16:50:14.000000000","message":"nit: This should be at the footer, right before or after the Change-ID, and it should be Closes-bug, not Closed-bug\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"09046e084ced740c938f982e4b71098153247024","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add test coverage for volume api revert"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closed-bug: #1599140"},{"line_number":10,"context_line":"New tests covers revert functionality for volume API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I99df840bd7c8cd913d6045dd90871eb8894bbac8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_457d28e5","line":9,"in_reply_to":"3fa7e38b_7cdec16a","updated":"2019-10-30 20:28:56.000000000","message":"Since this patch adds a couple of tests but doesn\u0027t completely fix the bug, I think the best idea is to use:\n\"Partial-Bug:#1599140\"","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"59f699519d23406c89368f86c31491fb43797070","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add test coverage for volume api revert"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closed-bug: #1599140"},{"line_number":10,"context_line":"New tests covers revert functionality for volume API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I99df840bd7c8cd913d6045dd90871eb8894bbac8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_dc7fb5dc","line":10,"updated":"2019-10-30 16:50:14.000000000","message":"Same as what Sean said applies here, this is not correct.","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"}],"cinder/tests/unit/volume/flows/test_manage_volume_flow.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"20c43fe993ced2e31257f875c97b18d18f28b3ae","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        fake_db \u003d fake_volume_api.FakeDb()"},{"line_number":90,"context_line":"        fake_db.volume_destroy \u003d mock.MagicMock()"},{"line_number":91,"context_line":"        FAKE_VOLUME_ID \u003d 1"},{"line_number":92,"context_line":" "},{"line_number":93,"context_line":"        mock_context_elevated_result \u003d mock.MagicMock()"},{"line_number":94,"context_line":"        self.ctxt.elevated \u003d mock.MagicMock(return_value\u003dmock_context_elevated_result)"},{"line_number":95,"context_line":" "}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_00067387","line":92,"range":{"start_line":92,"start_character":0,"end_line":92,"end_character":1},"updated":"2019-10-27 21:21:24.000000000","message":"Leading spaces need to be removed.","commit_id":"98450d4c5dad9ada9fd5983e7f2a63d0dcb89844"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f52574b5e796fbad34c85aeb45073385001ca07f","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        task.revert(self.ctxt, {\u0027volume_id\u0027: FAKE_VOLUME_ID})"},{"line_number":101,"context_line":"        fake_db.volume_destroy.assert_called_once_with("},{"line_number":102,"context_line":"            mock_context_elevated_result, "},{"line_number":103,"context_line":"            FAKE_VOLUME_ID"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_40ef8bb0","line":102,"range":{"start_line":102,"start_character":41,"end_line":102,"end_character":42},"updated":"2019-10-27 21:22:17.000000000","message":"Trailing space will cause pep8 failure. Please run tox locally before pushing up a change to help catch little things like this.","commit_id":"5a6c48066160443879994a8b3d3d2ff066d0611d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"59f699519d23406c89368f86c31491fb43797070","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            fake_volume_api.FakeSchedulerRpcAPI(spec, self),"},{"line_number":84,"context_line":"            fake_volume_api.FakeDb())"},{"line_number":85,"context_line":"        flow_failures \u003d [mock.MagicMock()]"},{"line_number":86,"context_line":"        task.revert(self.ctxt, {}, flow_failures, volume)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_create_db_entry_task_with_multiattach(self):"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_9c74dd69","line":86,"updated":"2019-10-30 16:50:14.000000000","message":"-1: This doesn\u0027t seem to be testing anything, just that nothing crashes and burns.\n\nWe need some asserts here to confirm the actions that the revert is doing are correct, right?","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0653538486166428f84371f26aafb2aa9d241d94","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            fake_volume_api.FakeSchedulerRpcAPI(spec, self),"},{"line_number":84,"context_line":"            fake_volume_api.FakeDb())"},{"line_number":85,"context_line":"        flow_failures \u003d [mock.MagicMock()]"},{"line_number":86,"context_line":"        task.revert(self.ctxt, {}, flow_failures, volume)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_create_db_entry_task_with_multiattach(self):"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_f11e525d","line":86,"in_reply_to":"3fa7e38b_9c74dd69","updated":"2019-10-31 03:31:12.000000000","message":"It looks like you used test_cast_manage_existing (above) as the model for this test.  But if you look at cinder/tests/unit/volume/flows/fake_volume_api.py, there are a bunch of asserts hidden in there that are checked when create_volume is called (that\u0027s the point of the comment at line 56).  So even though you don\u0027t see any asserts in the test above, they really are there.  For this test, however, you do need to make some assertions to verify that the revert did what you expected.","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":31055,"name":"Anastasiya Zhyrkevich","email":"Anastasiya.Zhyrkevich@gmail.com","username":"anastzhyr"},"change_message_id":"d9bb5bc8d7cb119f87568216844a0ee97b0e0172","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            fake_volume_api.FakeSchedulerRpcAPI(spec, self),"},{"line_number":84,"context_line":"            fake_volume_api.FakeDb())"},{"line_number":85,"context_line":"        flow_failures \u003d [mock.MagicMock()]"},{"line_number":86,"context_line":"        task.revert(self.ctxt, {}, flow_failures, volume)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_create_db_entry_task_with_multiattach(self):"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_1585095a","line":86,"in_reply_to":"3fa7e38b_f11e525d","updated":"2019-11-01 07:08:08.000000000","message":"Thank you very much for the valuable notes.\nI have added the asserts for checks status and save method","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"59f699519d23406c89368f86c31491fb43797070","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        result \u003d task.execute(self.ctxt, **spec)"},{"line_number":108,"context_line":"        self.assertTrue(result[\u0027volume_properties\u0027][\u0027multiattach\u0027])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_revert_db_entry_task(self):"},{"line_number":111,"context_line":"        fake_db \u003d fake_volume_api.FakeDb()"},{"line_number":112,"context_line":"        fake_db.volume_destroy \u003d mock.MagicMock()"},{"line_number":113,"context_line":"        FAKE_VOLUME_ID \u003d 1"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_7cbd61af","line":110,"updated":"2019-10-30 16:50:14.000000000","message":"nit: The name of the test should indicate that it\u0027s testing the API flow, to differentiate it from when we test the manager flow.","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":31055,"name":"Anastasiya Zhyrkevich","email":"Anastasiya.Zhyrkevich@gmail.com","username":"anastzhyr"},"change_message_id":"d9bb5bc8d7cb119f87568216844a0ee97b0e0172","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        result \u003d task.execute(self.ctxt, **spec)"},{"line_number":108,"context_line":"        self.assertTrue(result[\u0027volume_properties\u0027][\u0027multiattach\u0027])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_revert_db_entry_task(self):"},{"line_number":111,"context_line":"        fake_db \u003d fake_volume_api.FakeDb()"},{"line_number":112,"context_line":"        fake_db.volume_destroy \u003d mock.MagicMock()"},{"line_number":113,"context_line":"        FAKE_VOLUME_ID \u003d 1"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_f57dcd6c","line":110,"in_reply_to":"3fa7e38b_7cbd61af","updated":"2019-11-01 07:08:08.000000000","message":"I have included manage_existing into the name. Is this what is expected?","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"59f699519d23406c89368f86c31491fb43797070","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    def test_revert_db_entry_task(self):"},{"line_number":111,"context_line":"        fake_db \u003d fake_volume_api.FakeDb()"},{"line_number":112,"context_line":"        fake_db.volume_destroy \u003d mock.MagicMock()"},{"line_number":113,"context_line":"        FAKE_VOLUME_ID \u003d 1"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        mock_context_elevated_result \u003d mock.MagicMock()"},{"line_number":116,"context_line":"        self.ctxt.elevated \u003d mock.MagicMock("}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_bcf439d0","line":113,"updated":"2019-10-30 16:50:14.000000000","message":"-1: Use fakes.VOLUME_ID instead","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":31055,"name":"Anastasiya Zhyrkevich","email":"Anastasiya.Zhyrkevich@gmail.com","username":"anastzhyr"},"change_message_id":"d9bb5bc8d7cb119f87568216844a0ee97b0e0172","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    def test_revert_db_entry_task(self):"},{"line_number":111,"context_line":"        fake_db \u003d fake_volume_api.FakeDb()"},{"line_number":112,"context_line":"        fake_db.volume_destroy \u003d mock.MagicMock()"},{"line_number":113,"context_line":"        FAKE_VOLUME_ID \u003d 1"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        mock_context_elevated_result \u003d mock.MagicMock()"},{"line_number":116,"context_line":"        self.ctxt.elevated \u003d mock.MagicMock("}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_959819c0","line":113,"in_reply_to":"3fa7e38b_bcf439d0","updated":"2019-11-01 07:08:08.000000000","message":"Changed to the recommended.","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"59f699519d23406c89368f86c31491fb43797070","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        fake_db.volume_destroy \u003d mock.MagicMock()"},{"line_number":113,"context_line":"        FAKE_VOLUME_ID \u003d 1"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        mock_context_elevated_result \u003d mock.MagicMock()"},{"line_number":116,"context_line":"        self.ctxt.elevated \u003d mock.MagicMock("},{"line_number":117,"context_line":"            return_value\u003dmock_context_elevated_result"},{"line_number":118,"context_line":"        )"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        task \u003d manage_existing.EntryCreateTask(fake_db)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_fcaab181","line":118,"range":{"start_line":115,"start_character":0,"end_line":118,"end_character":9},"updated":"2019-10-30 16:50:14.000000000","message":"nit: It would be cleaner if you did:\n\n self.ctxt.elevated \u003d mock.Mock()\n\nAnd then on L124 you checked against\n\n self.ctxt.elevated.return_value","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":31055,"name":"Anastasiya Zhyrkevich","email":"Anastasiya.Zhyrkevich@gmail.com","username":"anastzhyr"},"change_message_id":"d9bb5bc8d7cb119f87568216844a0ee97b0e0172","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        fake_db.volume_destroy \u003d mock.MagicMock()"},{"line_number":113,"context_line":"        FAKE_VOLUME_ID \u003d 1"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        mock_context_elevated_result \u003d mock.MagicMock()"},{"line_number":116,"context_line":"        self.ctxt.elevated \u003d mock.MagicMock("},{"line_number":117,"context_line":"            return_value\u003dmock_context_elevated_result"},{"line_number":118,"context_line":"        )"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        task \u003d manage_existing.EntryCreateTask(fake_db)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_b593d5a2","line":118,"range":{"start_line":115,"start_character":0,"end_line":118,"end_character":9},"in_reply_to":"3fa7e38b_fcaab181","updated":"2019-11-01 07:08:08.000000000","message":"Excellent advice, updated according to it!","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"59f699519d23406c89368f86c31491fb43797070","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        task \u003d manage_existing.EntryCreateTask(fake_volume_api.FakeDb())"},{"line_number":130,"context_line":"        self.assertRaises(KeyError, task.revert, self.ctxt, {})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @staticmethod"},{"line_number":133,"context_line":"    def _stub_volume_object_get(self):"},{"line_number":134,"context_line":"        volume \u003d {"},{"line_number":135,"context_line":"            \u0027id\u0027: fakes.VOLUME_ID,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_fc34f14a","line":132,"updated":"2019-10-30 16:50:14.000000000","message":"I don\u0027t see a test for the ft.Failure case","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":31055,"name":"Anastasiya Zhyrkevich","email":"Anastasiya.Zhyrkevich@gmail.com","username":"anastzhyr"},"change_message_id":"d9bb5bc8d7cb119f87568216844a0ee97b0e0172","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        task \u003d manage_existing.EntryCreateTask(fake_volume_api.FakeDb())"},{"line_number":130,"context_line":"        self.assertRaises(KeyError, task.revert, self.ctxt, {})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @staticmethod"},{"line_number":133,"context_line":"    def _stub_volume_object_get(self):"},{"line_number":134,"context_line":"        volume \u003d {"},{"line_number":135,"context_line":"            \u0027id\u0027: fakes.VOLUME_ID,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_35eda524","line":132,"in_reply_to":"3fa7e38b_fc34f14a","updated":"2019-11-01 07:08:08.000000000","message":"I have added a new case. \nThe only thing is that I don\u0027t know to simulate the sys.exc_info to be non None\n\nPlease, feel free to update the code, because I don\u0027t know the best practices from Python testing in this particular case\nThanks","commit_id":"698f97093f5ca55c2dbe013990258f4516b3820c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"88f3afc1f19f2e26c2ac2e2fe8cdecaa4204a9f4","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        fake_db.volume_destroy \u003d mock.MagicMock()"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # Raise random exception for ft.Failure creation"},{"line_number":141,"context_line":"        # It requires sys.exc_info to be non-empty"},{"line_number":142,"context_line":"        exc_info \u003d None"},{"line_number":143,"context_line":"        try:"},{"line_number":144,"context_line":"            raise KeyError(\u0027mock\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_14bb750f","line":141,"range":{"start_line":141,"start_character":10,"end_line":141,"end_character":50},"updated":"2019-11-28 19:12:11.000000000","message":"Can we just pass some mock or fake object there? this code looks a bit strange","commit_id":"21bc443a48ef15e6e6f3977e97264f6e32943dc2"},{"author":{"_account_id":31055,"name":"Anastasiya Zhyrkevich","email":"Anastasiya.Zhyrkevich@gmail.com","username":"anastzhyr"},"change_message_id":"02a3412c7208f950f88e7092b152e722a6b6cfcd","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        fake_db.volume_destroy \u003d mock.MagicMock()"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # Raise random exception for ft.Failure creation"},{"line_number":141,"context_line":"        # It requires sys.exc_info to be non-empty"},{"line_number":142,"context_line":"        exc_info \u003d None"},{"line_number":143,"context_line":"        try:"},{"line_number":144,"context_line":"            raise KeyError(\u0027mock\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_1c603e0d","line":141,"range":{"start_line":141,"start_character":10,"end_line":141,"end_character":50},"in_reply_to":"3fa7e38b_14bb750f","updated":"2019-12-17 09:33:56.000000000","message":"sys.exc_info consists of a tuple of objects\nthe code task \u003d manage_existing.EntryCreateTask(fake_db) checks whether sys.exc_info is None ... \nshould I replace the object of exc_info with fake tuple?","commit_id":"21bc443a48ef15e6e6f3977e97264f6e32943dc2"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"9068624a29c72689c58f2b786477396f2b915e1f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        task.execute(self.ctxt, **create_what)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_cast_manage_existing_revert(self):"},{"line_number":69,"context_line":"        volume \u003d fake_volume.fake_volume_type_obj(self.ctxt)"},{"line_number":70,"context_line":"        volume.save \u003d mock.MagicMock()"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        spec \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_4d0af877","line":69,"updated":"2020-01-13 13:13:09.000000000","message":"Hi Ana, why are you using a type instead of a volume? I think we should use fake_volume_obj.","commit_id":"7102fe0ef58cb8e8258e81fa1a9b92410164cdce"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fe53a78ef1cc2b5f4931f1e738ca5f54cb056cdc","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        volume \u003d fake_volume.fake_volume_obj(self.ctxt)"},{"line_number":70,"context_line":"        volume.save \u003d mock.MagicMock()"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        spec \u003d {"},{"line_number":73,"context_line":"            \u0027name\u0027: \u0027name\u0027,"},{"line_number":74,"context_line":"            \u0027description\u0027: \u0027description\u0027,"},{"line_number":75,"context_line":"            \u0027host\u0027: \u0027host\u0027,"},{"line_number":76,"context_line":"            \u0027ref\u0027: \u0027ref\u0027,"},{"line_number":77,"context_line":"            \u0027volume_type\u0027: \u0027volume_type\u0027,"},{"line_number":78,"context_line":"            \u0027metadata\u0027: \u0027metadata\u0027,"},{"line_number":79,"context_line":"            \u0027availability_zone\u0027: \u0027availability_zone\u0027,"},{"line_number":80,"context_line":"            \u0027bootable\u0027: \u0027bootable\u0027,"},{"line_number":81,"context_line":"            \u0027volume_id\u0027: volume.id,"},{"line_number":82,"context_line":"        }"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # Fake objects assert specs"},{"line_number":85,"context_line":"        task \u003d manage_existing.ManageCastTask("}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_f9033474","line":82,"range":{"start_line":72,"start_character":0,"end_line":82,"end_character":9},"updated":"2020-02-03 12:26:20.000000000","message":"this isn\u0027t required in this test","commit_id":"a86ac5c373bf7361657e46dfcccb377aff773521"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fe53a78ef1cc2b5f4931f1e738ca5f54cb056cdc","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # Fake objects assert specs"},{"line_number":85,"context_line":"        task \u003d manage_existing.ManageCastTask("},{"line_number":86,"context_line":"            fake_volume_api.FakeSchedulerRpcAPI(spec, self),"},{"line_number":87,"context_line":"            fake_volume_api.FakeDb())"},{"line_number":88,"context_line":"        flow_failures \u003d [mock.MagicMock()]"},{"line_number":89,"context_line":"        task.revert(self.ctxt, {}, flow_failures, volume)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_99f8007f","line":86,"range":{"start_line":86,"start_character":48,"end_line":86,"end_character":52},"updated":"2020-02-03 12:26:20.000000000","message":"we can pass an empty dictionary here\nfake_volume_api.FakeSchedulerRpcAPI({}, self),\n            fake_volume_api.FakeDb())","commit_id":"a86ac5c373bf7361657e46dfcccb377aff773521"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fe53a78ef1cc2b5f4931f1e738ca5f54cb056cdc","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            fakes.VOLUME_ID"},{"line_number":130,"context_line":"        )"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def test_revert_manage_existing_with_missing_volume_id(self):"},{"line_number":133,"context_line":"        task \u003d manage_existing.EntryCreateTask(fake_volume_api.FakeDb())"},{"line_number":134,"context_line":"        self.assertRaises(KeyError, task.revert, self.ctxt, {})"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_39f30c70","line":132,"range":{"start_line":132,"start_character":8,"end_line":132,"end_character":58},"updated":"2020-02-03 12:26:20.000000000","message":"when will this case occur?","commit_id":"a86ac5c373bf7361657e46dfcccb377aff773521"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fe53a78ef1cc2b5f4931f1e738ca5f54cb056cdc","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def test_revert_manage_existing_with_missing_volume_id(self):"},{"line_number":133,"context_line":"        task \u003d manage_existing.EntryCreateTask(fake_volume_api.FakeDb())"},{"line_number":134,"context_line":"        self.assertRaises(KeyError, task.revert, self.ctxt, {})"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def test_revert_manage_existing_with_ft_failure(self):"},{"line_number":137,"context_line":"        fake_db \u003d fake_volume_api.FakeDb()"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_9965601f","line":134,"range":{"start_line":134,"start_character":26,"end_line":134,"end_character":34},"updated":"2020-02-03 12:26:20.000000000","message":"i can\u0027t even find it handled in code https://github.com/openstack/cinder/blob/master/cinder/volume/flows/api/manage_existing.py#L92","commit_id":"a86ac5c373bf7361657e46dfcccb377aff773521"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"bcd7dcbc59a476abb09283092fa9c7eb969e56d6","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        task.revert(self.ctxt, {}, flow_failures, volume)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # Check that volume status is updated and saved"},{"line_number":80,"context_line":"        self.assertEqual(volume.status, \u0027error_managing\u0027)"},{"line_number":81,"context_line":"        volume.save.assert_called_once()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_create_db_entry_task_with_multiattach(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f4c43b2_5205d676","line":80,"range":{"start_line":80,"start_character":25,"end_line":80,"end_character":56},"updated":"2020-04-14 17:45:56.000000000","message":"assertEqual argument order should be (EXPECTED, ACTUAL).","commit_id":"19288b610dfa3c1c6309b0fcf05039eb44d6a357"}]}
