)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4d76a0b3d38aadba66cf96aaa4e014ce309d9fce","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Move pre-3.44 Cinder post live migration test to test_compute_mgr"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The previous patch (Id0e8b1c32600d53382e5ac938e403258c80221a0) created"},{"line_number":10,"context_line":"_post_live_migration_remove_source_vol_connections() in an attempt"},{"line_number":11,"context_line":"split out _post_live_migration() into smaller more self-contained"},{"line_number":12,"context_line":"methods. The test for the pre-3.44 Cinder API behavior was kept in"},{"line_number":13,"context_line":"test_compute. test_compute runs API and compute services and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_3abc22ba","line":10,"range":{"start_line":10,"start_character":59,"end_line":10,"end_character":66},"updated":"2019-09-21 16:07:07.000000000","message":"attempt to","commit_id":"710ff645c58e8fd224671a343612868b7dc0ef68"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"66a0105d0d3131e1be41079d1e6815e53f54e4c8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Move pre-3.44 Cinder post live migration test to test_compute_mgr"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The previous patch (Id0e8b1c32600d53382e5ac938e403258c80221a0) created"},{"line_number":10,"context_line":"_post_live_migration_remove_source_vol_connections() in an attempt"},{"line_number":11,"context_line":"split out _post_live_migration() into smaller more self-contained"},{"line_number":12,"context_line":"methods. The test for the pre-3.44 Cinder API behavior was kept in"},{"line_number":13,"context_line":"test_compute. test_compute runs API and compute services and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_86711c0f","line":10,"range":{"start_line":10,"start_character":59,"end_line":10,"end_character":66},"in_reply_to":"3fa7e38b_3abc22ba","updated":"2019-09-24 15:01:46.000000000","message":"Done","commit_id":"710ff645c58e8fd224671a343612868b7dc0ef68"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4d76a0b3d38aadba66cf96aaa4e014ce309d9fce","unresolved":false,"context_lines":[{"line_number":16,"context_line":"test_compute_mgr and anything that needs a running service and/or"},{"line_number":17,"context_line":"database should go under functional/. While there will be no concerted"},{"line_number":18,"context_line":"effort to \"convert\" test_compute (like for mox -\u003e mock), it\u0027s still"},{"line_number":19,"context_line":"good to do it when the opportunity arises. In addition, having unit"},{"line_number":20,"context_line":"tests for two branches of the same method in different files is just"},{"line_number":21,"context_line":"confusing. This patch removes the pre-3.44 Cinder API unit test from"},{"line_number":22,"context_line":"test_compute and adds a new one right above the existing test for"},{"line_number":23,"context_line":"post-3.44 Cinder API behavior in test_compute_mgr."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_dab2aee6","line":21,"range":{"start_line":19,"start_character":43,"end_line":21,"end_character":10},"updated":"2019-09-21 16:07:07.000000000","message":"This is the biggest gain from this change IMO, the other stuff is all true of course.","commit_id":"710ff645c58e8fd224671a343612868b7dc0ef68"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08324d97535aa719de8576224fa53cb9ccad71a0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move pre-3.44 Cinder post live migration test to test_compute_mgr"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The previous patch (Id0e8b1c32600d53382e5ac938e403258c80221a0) created"},{"line_number":10,"context_line":"_post_live_migration_remove_source_vol_connections() in an attempt to"},{"line_number":11,"context_line":"split out _post_live_migration() into smaller more self-contained"},{"line_number":12,"context_line":"methods. The test for the pre-3.44 Cinder API behavior was kept in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_1281d74a","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":3},"updated":"2019-09-25 08:40:07.000000000","message":"A","commit_id":"cfb283cdd0fd016bc8151a5122b7b1f581203c34"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08324d97535aa719de8576224fa53cb9ccad71a0","unresolved":false,"context_lines":[{"line_number":12,"context_line":"methods. The test for the pre-3.44 Cinder API behavior was kept in"},{"line_number":13,"context_line":"test_compute. test_compute runs API and compute services and"},{"line_number":14,"context_line":"uses the database, and therefore should not receive new tests. Compute"},{"line_number":15,"context_line":"API tests should go in test_compute_api, compute manager tests in"},{"line_number":16,"context_line":"test_compute_mgr and anything that needs a running service and/or"},{"line_number":17,"context_line":"database should go under functional/. While there will be no concerted"},{"line_number":18,"context_line":"effort to \"convert\" test_compute (like for mox -\u003e mock), it\u0027s still"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_b2756366","line":15,"range":{"start_line":15,"start_character":23,"end_line":15,"end_character":39},"updated":"2019-09-25 08:40:07.000000000","message":"mostly unrelated nit: We should rename this to test_api at some point, since that\u0027s our convention everywhere else","commit_id":"cfb283cdd0fd016bc8151a5122b7b1f581203c34"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4d76a0b3d38aadba66cf96aaa4e014ce309d9fce","unresolved":false,"context_lines":[{"line_number":6639,"context_line":"        c \u003d context.get_admin_context()"},{"line_number":6640,"context_line":"        instance \u003d self._create_fake_instance_obj({"},{"line_number":6641,"context_line":"                                        \u0027host\u0027: self.compute.host,"},{"line_number":6642,"context_line":"                                        \u0027state_description\u0027: \u0027migrating\u0027,"},{"line_number":6643,"context_line":"                                        \u0027state\u0027: power_state.PAUSED},"},{"line_number":6644,"context_line":"                                        ctxt\u003dc)"},{"line_number":6645,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_9acc366b","side":"PARENT","line":6642,"range":{"start_line":6642,"start_character":41,"end_line":6642,"end_character":58},"updated":"2019-09-21 16:07:07.000000000","message":"Huh this isn\u0027t even a valid field on the Instance object. Fun.","commit_id":"e6916ab11469dde8fb4a8a2936f23b3f8647e24d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4d76a0b3d38aadba66cf96aaa4e014ce309d9fce","unresolved":false,"context_lines":[{"line_number":6640,"context_line":"        instance \u003d self._create_fake_instance_obj({"},{"line_number":6641,"context_line":"                                        \u0027host\u0027: self.compute.host,"},{"line_number":6642,"context_line":"                                        \u0027state_description\u0027: \u0027migrating\u0027,"},{"line_number":6643,"context_line":"                                        \u0027state\u0027: power_state.PAUSED},"},{"line_number":6644,"context_line":"                                        ctxt\u003dc)"},{"line_number":6645,"context_line":""},{"line_number":6646,"context_line":"        bdms \u003d block_device_obj.block_device_make_list(c,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_bac7b245","side":"PARENT","line":6643,"range":{"start_line":6643,"start_character":41,"end_line":6643,"end_character":46},"updated":"2019-09-21 16:07:07.000000000","message":"or this","commit_id":"e6916ab11469dde8fb4a8a2936f23b3f8647e24d"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4d76a0b3d38aadba66cf96aaa4e014ce309d9fce","unresolved":false,"context_lines":[{"line_number":8885,"context_line":""},{"line_number":8886,"context_line":"    def test_post_live_migration_cinder_pre_344_api(self):"},{"line_number":8887,"context_line":"        # Because live migration has succeeded, _post_live_migration"},{"line_number":8888,"context_line":"        # should call attachment_delete with the original/old attachment_id"},{"line_number":8889,"context_line":"        dest_host \u003d \u0027test_dest_host\u0027"},{"line_number":8890,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.context,"},{"line_number":8891,"context_line":"                                                   node\u003d\u0027dest\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_fab52ace","line":8888,"updated":"2019-09-21 16:07:07.000000000","message":"This copy/paste is clearly wrong, there is no attachment_id which is why we call terminate_connection.","commit_id":"710ff645c58e8fd224671a343612868b7dc0ef68"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"66a0105d0d3131e1be41079d1e6815e53f54e4c8","unresolved":false,"context_lines":[{"line_number":8885,"context_line":""},{"line_number":8886,"context_line":"    def test_post_live_migration_cinder_pre_344_api(self):"},{"line_number":8887,"context_line":"        # Because live migration has succeeded, _post_live_migration"},{"line_number":8888,"context_line":"        # should call attachment_delete with the original/old attachment_id"},{"line_number":8889,"context_line":"        dest_host \u003d \u0027test_dest_host\u0027"},{"line_number":8890,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.context,"},{"line_number":8891,"context_line":"                                                   node\u003d\u0027dest\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_0638cc3a","line":8888,"in_reply_to":"3fa7e38b_fab52ace","updated":"2019-09-24 15:01:46.000000000","message":"Done","commit_id":"710ff645c58e8fd224671a343612868b7dc0ef68"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4d76a0b3d38aadba66cf96aaa4e014ce309d9fce","unresolved":false,"context_lines":[{"line_number":8891,"context_line":"                                                   node\u003d\u0027dest\u0027,"},{"line_number":8892,"context_line":"                                                   uuid\u003duuids.instance)"},{"line_number":8893,"context_line":""},{"line_number":8894,"context_line":"        vol_bdm \u003d fake_block_device.fake_bdm_object("},{"line_number":8895,"context_line":"            self.context,"},{"line_number":8896,"context_line":"            {\u0027source_type\u0027: \u0027volume\u0027, \u0027destination_type\u0027: \u0027volume\u0027,"},{"line_number":8897,"context_line":"             \u0027volume_id\u0027: uuids.volume, \u0027device_name\u0027: \u0027/dev/vdb\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_5ac6be4a","line":8894,"range":{"start_line":8894,"start_character":36,"end_line":8894,"end_character":51},"updated":"2019-09-21 16:07:07.000000000","message":"This must default attachment_id to None? Otherwise you\u0027d hit an AttributeError trying to lazy-load that field on the BDM object.\n\n(later)\n\nYup confirmed it does initialize attachment_id to None.","commit_id":"710ff645c58e8fd224671a343612868b7dc0ef68"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08324d97535aa719de8576224fa53cb9ccad71a0","unresolved":false,"context_lines":[{"line_number":8906,"context_line":"             \u0027volume_id\u0027: uuids.image_volume, \u0027device_name\u0027: \u0027/dev/vdb\u0027,"},{"line_number":8907,"context_line":"             \u0027instance_uuid\u0027: instance.uuid})"},{"line_number":8908,"context_line":""},{"line_number":8909,"context_line":"        @mock.patch.object(self.compute.driver, \u0027get_volume_connector\u0027)"},{"line_number":8910,"context_line":"        @mock.patch.object(self.compute.volume_api, \u0027terminate_connection\u0027)"},{"line_number":8911,"context_line":"        def _test(mock_term_conn, mock_get_vol_conn):"},{"line_number":8912,"context_line":"            bdms \u003d objects.BlockDeviceMappingList(objects\u003d[vol_bdm, image_bdm])"},{"line_number":8913,"context_line":""},{"line_number":8914,"context_line":"            self.compute._post_live_migration_remove_source_vol_connections("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_92686787","line":8911,"range":{"start_line":8909,"start_character":0,"end_line":8911,"end_character":53},"updated":"2019-09-25 08:40:07.000000000","message":"What\u0027s the rationale for this change?","commit_id":"cfb283cdd0fd016bc8151a5122b7b1f581203c34"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"a61521ba3214fd818e20e5d466b54a91137ca32b","unresolved":false,"context_lines":[{"line_number":8906,"context_line":"             \u0027volume_id\u0027: uuids.image_volume, \u0027device_name\u0027: \u0027/dev/vdb\u0027,"},{"line_number":8907,"context_line":"             \u0027instance_uuid\u0027: instance.uuid})"},{"line_number":8908,"context_line":""},{"line_number":8909,"context_line":"        @mock.patch.object(self.compute.driver, \u0027get_volume_connector\u0027)"},{"line_number":8910,"context_line":"        @mock.patch.object(self.compute.volume_api, \u0027terminate_connection\u0027)"},{"line_number":8911,"context_line":"        def _test(mock_term_conn, mock_get_vol_conn):"},{"line_number":8912,"context_line":"            bdms \u003d objects.BlockDeviceMappingList(objects\u003d[vol_bdm, image_bdm])"},{"line_number":8913,"context_line":""},{"line_number":8914,"context_line":"            self.compute._post_live_migration_remove_source_vol_connections("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_21260017","line":8911,"range":{"start_line":8909,"start_character":0,"end_line":8911,"end_character":53},"in_reply_to":"3fa7e38b_92686787","updated":"2019-09-25 11:00:54.000000000","message":"This is what you were asking in your main reply, right?\n\n\u003e Curious why you changed from a context manager to a nested\n\u003e function, Good other than that\n\nIt\u0027s because I took Matt\u0027s test below, copy-pasted it, and twiddled the things to make it test the pre-3.44 branch of _post_live_migration_remove_source_vol_connections(). I didn\u0027t actually look at the old test_compute test code.","commit_id":"cfb283cdd0fd016bc8151a5122b7b1f581203c34"}]}
