)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"30c9d1c59d0048a5fd84a11417d1fa040ff90dff","unresolved":false,"context_lines":[{"line_number":2859,"context_line":""},{"line_number":2860,"context_line":"            def detach_block_devices(context, bdms):"},{"line_number":2861,"context_line":"                for bdm in bdms:"},{"line_number":2862,"context_line":"                    if bdm.is_volume:"},{"line_number":2863,"context_line":"                        self.volume_api.detach(context, bdm.volume_id)"},{"line_number":2864,"context_line":""},{"line_number":2865,"context_line":"            files \u003d self._decode_files(injected_files)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_d23db12c","line":2862,"updated":"2015-02-04 20:04:51.000000000","message":"I think above code may raise some unexpected exception\n\nshould we also consider them as well?","commit_id":"b448d70f44cf083a1e25a69dc07f8b293a564ce0"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"30c9d1c59d0048a5fd84a11417d1fa040ff90dff","unresolved":false,"context_lines":[{"line_number":2878,"context_line":"                preserve_ephemeral\u003dpreserve_ephemeral,"},{"line_number":2879,"context_line":"                recreate\u003drecreate)"},{"line_number":2880,"context_line":"            try:"},{"line_number":2881,"context_line":"                self.driver.rebuild(**kwargs)"},{"line_number":2882,"context_line":"            except NotImplementedError:"},{"line_number":2883,"context_line":"                # NOTE(rpodolyaka): driver doesn\u0027t provide specialized version"},{"line_number":2884,"context_line":"                # of rebuild, fall back to the default implementation"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_720a457a","line":2881,"updated":"2015-02-04 20:04:51.000000000","message":"if rebuild failed here( some hyprevisor may not use default), do we need a exception to catch and revert back?","commit_id":"b448d70f44cf083a1e25a69dc07f8b293a564ce0"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"a2160874ddf1431d4955ad9409aaa2086d700148","unresolved":false,"context_lines":[{"line_number":2960,"context_line":"            bdms \u003d None"},{"line_number":2961,"context_line":""},{"line_number":2962,"context_line":"        orig_host \u003d instance.host"},{"line_number":2963,"context_line":"        orig_node \u003d instance.node"},{"line_number":2964,"context_line":"        orig_vm_state \u003d instance.vm_state"},{"line_number":2965,"context_line":"        with self._error_out_instance_on_exception(context, instance):"},{"line_number":2966,"context_line":"            LOG.info(_LI(\"Rebuilding instance\"), context\u003dcontext,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9af37de9_d602406f","line":2963,"updated":"2015-05-11 12:21:29.000000000","message":"this should only be used when recreate\u003dTrue","commit_id":"3b39c82640d94bf5878909eb578050d79c3c060c"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"fda837a1c0328779a7cd5a4161cc6fdc5bfe25e8","unresolved":false,"context_lines":[{"line_number":2960,"context_line":"            bdms \u003d None"},{"line_number":2961,"context_line":""},{"line_number":2962,"context_line":"        orig_host \u003d instance.host"},{"line_number":2963,"context_line":"        orig_node \u003d instance.node"},{"line_number":2964,"context_line":"        orig_vm_state \u003d instance.vm_state"},{"line_number":2965,"context_line":"        with self._error_out_instance_on_exception(context, instance):"},{"line_number":2966,"context_line":"            LOG.info(_LI(\"Rebuilding instance\"), context\u003dcontext,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a016987_e93afbe6","line":2963,"in_reply_to":"9af37de9_d602406f","updated":"2015-05-14 14:14:24.000000000","message":"yes,  Do you mean move this two lines in the code block of if statement ?\n\nIs it better to keep code of saving original state in one place .","commit_id":"3b39c82640d94bf5878909eb578050d79c3c060c"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"a2160874ddf1431d4955ad9409aaa2086d700148","unresolved":false,"context_lines":[{"line_number":3082,"context_line":"                    # instance\u0027s host and node name."},{"line_number":3083,"context_line":"                    if recreate:"},{"line_number":3084,"context_line":"                        LOG.info(_LI(\"Evacuate instance failed, reset \""},{"line_number":3085,"context_line":"                                     \"instance\u0027s host with original one.\"))"},{"line_number":3086,"context_line":"                        instance.host \u003d orig_host"},{"line_number":3087,"context_line":"                        instance.node \u003d orig_node"},{"line_number":3088,"context_line":"                        instance.save()"}],"source_content_type":"text/x-python","patch_set":12,"id":"9af37de9_f60b047c","line":3085,"updated":"2015-05-11 12:21:29.000000000","message":"if we add orig and current host/node ,will it be helpful for debug later?","commit_id":"3b39c82640d94bf5878909eb578050d79c3c060c"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"fda837a1c0328779a7cd5a4161cc6fdc5bfe25e8","unresolved":false,"context_lines":[{"line_number":3082,"context_line":"                    # instance\u0027s host and node name."},{"line_number":3083,"context_line":"                    if recreate:"},{"line_number":3084,"context_line":"                        LOG.info(_LI(\"Evacuate instance failed, reset \""},{"line_number":3085,"context_line":"                                     \"instance\u0027s host with original one.\"))"},{"line_number":3086,"context_line":"                        instance.host \u003d orig_host"},{"line_number":3087,"context_line":"                        instance.node \u003d orig_node"},{"line_number":3088,"context_line":"                        instance.save()"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a016987_9bbe2efe","line":3085,"in_reply_to":"9af37de9_f60b047c","updated":"2015-05-14 14:14:24.000000000","message":"yes, will add the information in the log.","commit_id":"3b39c82640d94bf5878909eb578050d79c3c060c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3f103dad1c53ec71ab1fbe54ecfc653f45ca7314","unresolved":false,"context_lines":[{"line_number":2695,"context_line":"                    instance.host \u003d self.host"},{"line_number":2696,"context_line":"                    instance.node \u003d node_name"},{"line_number":2697,"context_line":"                    instance.save()"},{"line_number":2698,"context_line":"            try:"},{"line_number":2699,"context_line":"                if image_ref:"},{"line_number":2700,"context_line":"                    image_meta \u003d self.image_api.get(context, image_ref)"},{"line_number":2701,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_bb0f0738","line":2698,"updated":"2015-07-01 22:53:38.000000000","message":"Please don\u0027t just indent this huge block. Put the bulk in a helper and call the helper inside your try..except.","commit_id":"fe55151b343f86461b9cb9456a9f23ef37222d96"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"96531e80c265b27459af987bdab80826e9fbeaac","unresolved":false,"context_lines":[{"line_number":2695,"context_line":"                    instance.host \u003d self.host"},{"line_number":2696,"context_line":"                    instance.node \u003d node_name"},{"line_number":2697,"context_line":"                    instance.save()"},{"line_number":2698,"context_line":"            try:"},{"line_number":2699,"context_line":"                if image_ref:"},{"line_number":2700,"context_line":"                    image_meta \u003d self.image_api.get(context, image_ref)"},{"line_number":2701,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_67fb1dc2","line":2698,"in_reply_to":"ba3cc151_bb0f0738","updated":"2015-07-02 02:52:43.000000000","message":"good, will done","commit_id":"fe55151b343f86461b9cb9456a9f23ef37222d96"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3f103dad1c53ec71ab1fbe54ecfc653f45ca7314","unresolved":false,"context_lines":[{"line_number":2784,"context_line":"                                  \u0027node\u0027: instance.node,"},{"line_number":2785,"context_line":"                                  \u0027orig_node\u0027: orig_node}, instance\u003dinstance)"},{"line_number":2786,"context_line":"                        instance.host \u003d orig_host"},{"line_number":2787,"context_line":"                        instance.node \u003d orig_node"},{"line_number":2788,"context_line":"                        instance.save()"},{"line_number":2789,"context_line":""},{"line_number":2790,"context_line":"            self._update_instance_after_spawn(context, instance)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_7b273fca","line":2787,"updated":"2015-07-01 22:53:38.000000000","message":"Once we\u0027ve started the evacuation, I don\u0027t think we should ever put it back to the source node. Especially after my patch to add the tombstone, you\u0027d need to clean that up as well.\n\nAfter the evacuation has started and failed, you can just run rebuild at that point to restart it, right? Perhaps we need to make sure that the instance\u0027s vm_state is in a reasonable position to allow that.\n\nIf we want evacuate to work again, I propose we set host and node to None, and make sure that evacuate works for \"homeless\" instances.","commit_id":"fe55151b343f86461b9cb9456a9f23ef37222d96"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"96531e80c265b27459af987bdab80826e9fbeaac","unresolved":false,"context_lines":[{"line_number":2784,"context_line":"                                  \u0027node\u0027: instance.node,"},{"line_number":2785,"context_line":"                                  \u0027orig_node\u0027: orig_node}, instance\u003dinstance)"},{"line_number":2786,"context_line":"                        instance.host \u003d orig_host"},{"line_number":2787,"context_line":"                        instance.node \u003d orig_node"},{"line_number":2788,"context_line":"                        instance.save()"},{"line_number":2789,"context_line":""},{"line_number":2790,"context_line":"            self._update_instance_after_spawn(context, instance)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_c7ad499c","line":2787,"in_reply_to":"ba3cc151_7b273fca","updated":"2015-07-02 02:52:43.000000000","message":"we need put it back to the source node,  evacuate will begin  only when instance\u0027s host\u0027s nova-compute service is down, that means we need instance\u0027s host information to decide which compute service should we check.\n\n\nMaybe add this change to your my patch ?","commit_id":"fe55151b343f86461b9cb9456a9f23ef37222d96"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"8055b4a5dacd076090413018d3bed782a2f164f2","unresolved":false,"context_lines":[{"line_number":11049,"context_line":"        self.assertEqual(instance[\u0027host\u0027], self.compute.host)"},{"line_number":11050,"context_line":"        self.assertIsNone(instance[\u0027node\u0027])"},{"line_number":11051,"context_line":""},{"line_number":11052,"context_line":"    def test_rebuild_on_host_recovery_with_failure(self):"},{"line_number":11053,"context_line":"        \"\"\"Confirm evacuate scenario recover instances with original host"},{"line_number":11054,"context_line":"        and node."},{"line_number":11055,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_c7ac128b","line":11052,"updated":"2015-01-07 08:34:50.000000000","message":"Please use for all new test-cases `mock` library instead `mox` and `stubs`.","commit_id":"7270433b6a76ca6be70b5f7bc8a64f07bc5fa629"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"a17e345be34c1cad23e43bd985754341a2584d12","unresolved":false,"context_lines":[{"line_number":10969,"context_line":"                                self.context, self.compute.host)"},{"line_number":10970,"context_line":""},{"line_number":10971,"context_line":"        # Should be on original host"},{"line_number":10972,"context_line":"        instance \u003d db.instance_get(self.context, self.inst.id)"},{"line_number":10973,"context_line":"        self.assertEqual(\u0027fake_host_2\u0027, instance[\u0027host\u0027])"},{"line_number":10974,"context_line":"        self.assertEqual(\u0027fakenode2\u0027, instance[\u0027node\u0027])"},{"line_number":10975,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_bb45e318","line":10972,"updated":"2015-01-28 22:01:12.000000000","message":"I\u0027m just wondering, should be this `instance` an object instead `db`?","commit_id":"b448d70f44cf083a1e25a69dc07f8b293a564ce0"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"0b4a0c4a5a09fddb7dd674176354fbf1d6117c2f","unresolved":false,"context_lines":[{"line_number":10969,"context_line":"                                self.context, self.compute.host)"},{"line_number":10970,"context_line":""},{"line_number":10971,"context_line":"        # Should be on original host"},{"line_number":10972,"context_line":"        instance \u003d db.instance_get(self.context, self.inst.id)"},{"line_number":10973,"context_line":"        self.assertEqual(\u0027fake_host_2\u0027, instance[\u0027host\u0027])"},{"line_number":10974,"context_line":"        self.assertEqual(\u0027fakenode2\u0027, instance[\u0027node\u0027])"},{"line_number":10975,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_5c73ddb0","line":10972,"in_reply_to":"fa81d914_bb45e318","updated":"2015-02-03 12:27:00.000000000","message":"I would like keep this get instance from db as other place, we need another patch to handle all the case .","commit_id":"b448d70f44cf083a1e25a69dc07f8b293a564ce0"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"2393e65c16d44124fea84aa24b3a3f23ce5f4be8","unresolved":false,"context_lines":[{"line_number":11092,"context_line":"        self.assertIsNone(instance[\u0027node\u0027])"},{"line_number":11093,"context_line":""},{"line_number":11094,"context_line":"    @mock.object.patch(compute_manager.ComputeManager, \u0027_get_compute_info\u0027)"},{"line_number":11095,"context_line":"    @mock.object.patch(compute_manager.ComputeManager, \u0027_rebuild_default_impl\u0027)"},{"line_number":11096,"context_line":"    def test_rebuild_on_host_recovery_with_failure(self,"},{"line_number":11097,"context_line":"                                                   mock_rebuild_default_impl,"},{"line_number":11098,"context_line":"                                                   mock_get_compute_info):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_727ae978","line":11095,"updated":"2015-02-13 11:53:05.000000000","message":"here should be \n\n @mock.patch.object(*****","commit_id":"11386ecd02619c0afcd4aa2b6571911847db5598"}]}
