)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9a5e8a6e04003f59fb50f07eeb6cd4452d4f88a6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Vladyslav Drok \u003cvdrok@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-07-22 18:22:26 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update instance node on rebuild only when it is recreate"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When using ironic virt driver, if scheduled_node is not specified"},{"line_number":10,"context_line":"in rebuild_instance compute manager method (as it happens in case"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5a8bc5a2_e769e426","line":7,"updated":"2016-09-23 19:48:02.000000000","message":"s/recreate/recreated/","commit_id":"54b122caec1ae2418fc3e296be604d072cb5815a"}],"nova/compute/manager.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"9d095da6b1b1804b35f7675e75b08de65eacb00b","unresolved":false,"context_lines":[{"line_number":2779,"context_line":"        # the instance\u0027s host and node properties to reflect it\u0027s"},{"line_number":2780,"context_line":"        # destination node for the recreate."},{"line_number":2781,"context_line":"        if not scheduled_node:"},{"line_number":2782,"context_line":"            if recreate:"},{"line_number":2783,"context_line":"                try:"},{"line_number":2784,"context_line":"                    compute_node \u003d self._get_compute_info(context, self.host)"},{"line_number":2785,"context_line":"                    scheduled_node \u003d compute_node.hypervisor_hostname"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_044f2d93","line":2782,"updated":"2016-04-15 18:07:21.000000000","message":"Not sure if it should be checking recreate or migration here.","commit_id":"957ebb1a49928e26c8b37795b001184fadf62a3c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"52c5b3fa7ad3451b154b68696ee27c1fe858f4d3","unresolved":false,"context_lines":[{"line_number":2643,"context_line":""},{"line_number":2644,"context_line":"        LOG.info(_LI(\"Rebuilding instance\"), context\u003dcontext,"},{"line_number":2645,"context_line":"                    instance\u003dinstance)"},{"line_number":2646,"context_line":"        if scheduled_node is not None:"},{"line_number":2647,"context_line":"            rt \u003d self._get_resource_tracker(scheduled_node)"},{"line_number":2648,"context_line":"            rebuild_claim \u003d rt.rebuild_claim"},{"line_number":2649,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_a7135c0c","line":2646,"updated":"2016-09-23 19:40:34.000000000","message":"Nevermind the comment below, we can\u0027t pass scheduled_node from the API for a rebuild because scheduled_node is only supposed to be used for a recreate (evacuation), and if passed will trigger a claim for resources, but when rebuilding we\u0027ve already claimed the resources and don\u0027t need to do that again. This is really just a tightly coupled parameter for evacuate and making things confusing.\n\nSo I think this is the correct fix.\n\nMaybe at some later point we could decouple some of this code a bit more so we have separate methods for rebuild and evacuate in the compute manager because this is always super confusing to maintain.","commit_id":"54b122caec1ae2418fc3e296be604d072cb5815a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c1d29cc8865e344098521664c00c266085d23901","unresolved":false,"context_lines":[{"line_number":2656,"context_line":"        # NOTE(mriedem): On a recreate (evacuate), we need to update"},{"line_number":2657,"context_line":"        # the instance\u0027s host and node properties to reflect it\u0027s"},{"line_number":2658,"context_line":"        # destination node for the recreate."},{"line_number":2659,"context_line":"        if not scheduled_node:"},{"line_number":2660,"context_line":"            if recreate:"},{"line_number":2661,"context_line":"                try:"},{"line_number":2662,"context_line":"                    compute_node \u003d self._get_compute_info(context, self.host)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_87c021e2","line":2659,"updated":"2016-09-23 19:20:26.000000000","message":"As jroll pointed out in the ironic patch for this bug, why don\u0027t we just pass scheduled_node\u003dinstance.node from the compute API when doing a rebuild? I think the fix you have here would also work though.","commit_id":"54b122caec1ae2418fc3e296be604d072cb5815a"}],"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":"52c5b3fa7ad3451b154b68696ee27c1fe858f4d3","unresolved":false,"context_lines":[{"line_number":2936,"context_line":"                                                \u0027rebuild.error\u0027, fault\u003dex)"},{"line_number":2937,"context_line":""},{"line_number":2938,"context_line":"    def test_rebuild_deleting(self):"},{"line_number":2939,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":2940,"context_line":"        ex \u003d exception.UnexpectedDeletingTaskStateError("},{"line_number":2941,"context_line":"            instance_uuid\u003dinstance.uuid, expected\u003d\u0027expected\u0027, actual\u003d\u0027actual\u0027)"},{"line_number":2942,"context_line":"        self._test_rebuild_ex(instance, ex)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_0705f0ba","line":2939,"updated":"2016-09-23 19:40:34.000000000","message":"I guess this was needed to set the fake host/node?","commit_id":"54b122caec1ae2418fc3e296be604d072cb5815a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"52c5b3fa7ad3451b154b68696ee27c1fe858f4d3","unresolved":false,"context_lines":[{"line_number":2956,"context_line":"            mock.patch.object(objects.Instance, \u0027save\u0027),"},{"line_number":2957,"context_line":"            mock.patch.object(self.compute, \u0027_set_migration_status\u0027),"},{"line_number":2958,"context_line":"        ) as (mock_get, mock_rebuild, mock_save, mock_set):"},{"line_number":2959,"context_line":"            self.compute.rebuild_instance(self.context, instance, None, None,"},{"line_number":2960,"context_line":"                                          None, None, None, None, False)"},{"line_number":2961,"context_line":"            self.assertFalse(mock_get.called)"},{"line_number":2962,"context_line":"            self.assertEqual(node, instance.node)"},{"line_number":2963,"context_line":"            mock_set.assert_called_once_with(None, \u0027done\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_c721484f","line":2960,"range":{"start_line":2959,"start_character":66,"end_line":2960,"end_character":71},"updated":"2016-09-23 19:40:34.000000000","message":"I\u0027d prefer kwargs used here since following this is hard in a test, but the point is blah blah blah blah recreate is False.","commit_id":"54b122caec1ae2418fc3e296be604d072cb5815a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"52c5b3fa7ad3451b154b68696ee27c1fe858f4d3","unresolved":false,"context_lines":[{"line_number":2974,"context_line":"            mock.patch.object(self.compute, \u0027_set_migration_status\u0027),"},{"line_number":2975,"context_line":"        ) as (mock_get, mock_rebuild, mock_save, mock_set):"},{"line_number":2976,"context_line":"            mock_get.return_value.hypervisor_hostname \u003d \u0027new-node\u0027"},{"line_number":2977,"context_line":"            self.compute.rebuild_instance(self.context, instance, None, None,"},{"line_number":2978,"context_line":"                                          None, None, None, None, True)"},{"line_number":2979,"context_line":"            mock_get.assert_called_once_with(mock.ANY, self.compute.host)"},{"line_number":2980,"context_line":"            self.assertEqual(\u0027new-node\u0027, instance.node)"},{"line_number":2981,"context_line":"            mock_set.assert_called_once_with(None, \u0027done\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_a7e19c00","line":2978,"range":{"start_line":2977,"start_character":66,"end_line":2978,"end_character":70},"updated":"2016-09-23 19:40:34.000000000","message":"ditto","commit_id":"54b122caec1ae2418fc3e296be604d072cb5815a"}]}
