)]}'
{"nova/conductor/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fb7be34b1226b9bba73b15e9a0e2d4b1895f16c2","unresolved":false,"context_lines":[{"line_number":630,"context_line":"                \u0027retry\u0027, {}).get(\u0027num_attempts\u0027, 1)"},{"line_number":631,"context_line":"            updates \u003d {\u0027vm_state\u0027: vm_states.ERROR, \u0027task_state\u0027: None}"},{"line_number":632,"context_line":"            for instance in instances:"},{"line_number":633,"context_line":"                self._set_vm_state_and_notify("},{"line_number":634,"context_line":"                    context, instance.uuid, \u0027build_instances\u0027, updates,"},{"line_number":635,"context_line":"                    exc, legacy_request_spec)"},{"line_number":636,"context_line":"                # If num_attempts \u003e 1, we\u0027re in a reschedule and probably"},{"line_number":637,"context_line":"                # either hit NoValidHost or MaxRetriesExceeded. Either way,"},{"line_number":638,"context_line":"                # the build request should already be gone and we probably"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_1657d404","line":635,"range":{"start_line":633,"start_character":16,"end_line":635,"end_character":45},"updated":"2019-03-08 17:25:23.000000000","message":"Could we take this...","commit_id":"89a16f8c6a3c2bbf76fa6284ce51ff3a90ceb5e0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fb7be34b1226b9bba73b15e9a0e2d4b1895f16c2","unresolved":false,"context_lines":[{"line_number":645,"context_line":"                        self._destroy_build_request(context, instance)"},{"line_number":646,"context_line":"                    except exception.BuildRequestNotFound:"},{"line_number":647,"context_line":"                        pass"},{"line_number":648,"context_line":"                self._cleanup_allocated_networks("},{"line_number":649,"context_line":"                    context, instance, requested_networks)"},{"line_number":650,"context_line":"            return"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        elevated \u003d context.elevated()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_f63b28c5","line":649,"range":{"start_line":648,"start_character":16,"end_line":649,"end_character":58},"updated":"2019-03-08 17:25:23.000000000","message":"...and this and put it into a private helper method and then re-use that below?","commit_id":"89a16f8c6a3c2bbf76fa6284ce51ff3a90ceb5e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec95d8599847bdd4ef4621c0e4574f73f7b8ad19","unresolved":false,"context_lines":[{"line_number":645,"context_line":"                        self._destroy_build_request(context, instance)"},{"line_number":646,"context_line":"                    except exception.BuildRequestNotFound:"},{"line_number":647,"context_line":"                        pass"},{"line_number":648,"context_line":"                self._cleanup_allocated_networks("},{"line_number":649,"context_line":"                    context, instance, requested_networks)"},{"line_number":650,"context_line":"            return"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        elevated \u003d context.elevated()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_571c5b11","line":649,"range":{"start_line":648,"start_character":16,"end_line":649,"end_character":58},"in_reply_to":"5fc1f717_f63b28c5","updated":"2019-03-11 14:27:13.000000000","message":"Done","commit_id":"89a16f8c6a3c2bbf76fa6284ce51ff3a90ceb5e0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"14b2feb47e008ddef68baa7e22ca7ee8ffae9487","unresolved":false,"context_lines":[{"line_number":667,"context_line":"                    else:"},{"line_number":668,"context_line":"                        alloc_req \u003d None"},{"line_number":669,"context_line":"                    if alloc_req:"},{"line_number":670,"context_line":"                        host_available \u003d scheduler_utils.claim_resources("},{"line_number":671,"context_line":"                                elevated, self.report_client, spec_obj,"},{"line_number":672,"context_line":"                                instance.uuid, alloc_req,"},{"line_number":673,"context_line":"                                host.allocation_request_version)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_360c503a","line":670,"range":{"start_line":670,"start_character":57,"end_line":670,"end_character":72},"updated":"2019-03-08 17:24:05.000000000","message":"This is not handled either so this is a latent bug and I think you could just report a low priority bug in launchpad stating if we fail in this while loop during rescheduling the error is not handled and the instance is left in BUILDING/scheduling state or whatever rather than ERROR/None state. Then we have some time to work on fixing this without the pressure of RC1 for Stein and all that.\n\nI would also like to refactor this while loop code out into a separate method for sanity because this build_instances method is already way to large to test and maintain in isolation very easily.","commit_id":"89a16f8c6a3c2bbf76fa6284ce51ff3a90ceb5e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec95d8599847bdd4ef4621c0e4574f73f7b8ad19","unresolved":false,"context_lines":[{"line_number":667,"context_line":"                    else:"},{"line_number":668,"context_line":"                        alloc_req \u003d None"},{"line_number":669,"context_line":"                    if alloc_req:"},{"line_number":670,"context_line":"                        host_available \u003d scheduler_utils.claim_resources("},{"line_number":671,"context_line":"                                elevated, self.report_client, spec_obj,"},{"line_number":672,"context_line":"                                instance.uuid, alloc_req,"},{"line_number":673,"context_line":"                                host.allocation_request_version)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_3c0974dc","line":670,"range":{"start_line":670,"start_character":57,"end_line":670,"end_character":72},"in_reply_to":"5fc1f717_360c503a","updated":"2019-03-11 14:27:13.000000000","message":"good point about this other unhandled exception. I raised a bug[1].\n\n[1]https://bugs.launchpad.net/nova/+bug/1819460","commit_id":"89a16f8c6a3c2bbf76fa6284ce51ff3a90ceb5e0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1ab56ff25a954796f6873eb59cef7e039d61e194","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                                # provider mapping as the above claim call"},{"line_number":687,"context_line":"                                # moves the allocation of the instance to"},{"line_number":688,"context_line":"                                # another host"},{"line_number":689,"context_line":"                                self._fill_provider_mapping("},{"line_number":690,"context_line":"                                    context, instance.uuid, request_spec, host)"},{"line_number":691,"context_line":"                        except Exception as exc:"},{"line_number":692,"context_line":"                            self._cleanup_when_reschedule_fails("},{"line_number":693,"context_line":"                                context, instance, exc, legacy_request_spec,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_26c9d5aa","line":690,"range":{"start_line":689,"start_character":32,"end_line":690,"end_character":79},"updated":"2019-03-29 04:19:20.000000000","message":"this is question, but not scope of this patch. So...if the host_available false, then do we still need refill this mapping?","commit_id":"bd6c5b0416ce2d95849b65217748933a176a31a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7261d2d69db0cbb186a71667f694fcf7c6e0e7af","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                                # provider mapping as the above claim call"},{"line_number":687,"context_line":"                                # moves the allocation of the instance to"},{"line_number":688,"context_line":"                                # another host"},{"line_number":689,"context_line":"                                self._fill_provider_mapping("},{"line_number":690,"context_line":"                                    context, instance.uuid, request_spec, host)"},{"line_number":691,"context_line":"                        except Exception as exc:"},{"line_number":692,"context_line":"                            self._cleanup_when_reschedule_fails("},{"line_number":693,"context_line":"                                context, instance, exc, legacy_request_spec,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_6464b522","line":690,"range":{"start_line":689,"start_character":32,"end_line":690,"end_character":79},"in_reply_to":"5fc1f717_26c9d5aa","updated":"2019-03-29 08:38:13.000000000","message":"Good point. Now I see that host_available \u003d False means that we cannot claim resources, if we cannot claim resources then there is no way the mapping can be created. So we don\u0027t need to try. I filed  a bug to avoid unnecessary processing. https://bugs.launchpad.net/nova/+bug/1822262","commit_id":"bd6c5b0416ce2d95849b65217748933a176a31a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"96a2ea1f6c79cf4b6d0b1a70ee778c2273019b72","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                                # provider mapping as the above claim call"},{"line_number":687,"context_line":"                                # moves the allocation of the instance to"},{"line_number":688,"context_line":"                                # another host"},{"line_number":689,"context_line":"                                self._fill_provider_mapping("},{"line_number":690,"context_line":"                                    context, instance.uuid, request_spec, host)"},{"line_number":691,"context_line":"                        except Exception as exc:"},{"line_number":692,"context_line":"                            self._cleanup_when_reschedule_fails("},{"line_number":693,"context_line":"                                context, instance, exc, legacy_request_spec,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_cd0a6926","line":690,"range":{"start_line":689,"start_character":32,"end_line":690,"end_character":79},"in_reply_to":"5fc1f717_6464b522","updated":"2019-03-29 12:51:01.000000000","message":"Pushed a fix for the bug too https://review.openstack.org/#/c/648676/","commit_id":"bd6c5b0416ce2d95849b65217748933a176a31a7"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"382045abb55d986643b1fcbb4f45b65454ac25ce","unresolved":false,"context_lines":[{"line_number":692,"context_line":"                            self._cleanup_when_reschedule_fails("},{"line_number":693,"context_line":"                                context, instance, exc, legacy_request_spec,"},{"line_number":694,"context_line":"                                requested_networks)"},{"line_number":695,"context_line":"                            return"},{"line_number":696,"context_line":"                    else:"},{"line_number":697,"context_line":"                        # Some deployments use different schedulers that do not"},{"line_number":698,"context_line":"                        # use Placement, so they will not have an"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_ce7a7bef","line":695,"range":{"start_line":695,"start_character":28,"end_line":695,"end_character":34},"updated":"2019-03-28 12:26:33.000000000","message":"If it is resource provider generation conflict, we still can try the next host, right? https://github.com/openstack/nova/blob/master/nova/scheduler/client/report.py#L1645\n\nFor the consumer generation conflict, that should be stopped.","commit_id":"bd6c5b0416ce2d95849b65217748933a176a31a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7261d2d69db0cbb186a71667f694fcf7c6e0e7af","unresolved":false,"context_lines":[{"line_number":692,"context_line":"                            self._cleanup_when_reschedule_fails("},{"line_number":693,"context_line":"                                context, instance, exc, legacy_request_spec,"},{"line_number":694,"context_line":"                                requested_networks)"},{"line_number":695,"context_line":"                            return"},{"line_number":696,"context_line":"                    else:"},{"line_number":697,"context_line":"                        # Some deployments use different schedulers that do not"},{"line_number":698,"context_line":"                        # use Placement, so they will not have an"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_04e37106","line":695,"range":{"start_line":695,"start_character":28,"end_line":695,"end_character":34},"in_reply_to":"5fc1f717_66d35d61","updated":"2019-03-29 08:38:13.000000000","message":"Hm. _fill_provider_mapping calls \n* map_requested_resources_to_providers and that can raise \n** ValueError if no mapping found, this is a software error that should not happen\n** NotImplementedError in unsupported cases, which is also a software error\n\n* get_provider_traits that can raise:\n** ResourceProviderTraitRetrievalFailed if placement returns other than HTTP 200, e.g. RP does not exists. I would say this is a software error too or a weird race condition if somebody deleted the network device RP during a boot process\n** keystoneauth1.exceptions.ClientException if the connection fails to placement. This can be a network error or configuration error.\n\nBefore https://review.openstack.org/#/c/638711 has merged the _fill_provider_mapping also queried placement about allocations. So it could fail their as well. Unfortunately the reproduction functional test case used that scenario for the fault reproduction.","commit_id":"bd6c5b0416ce2d95849b65217748933a176a31a7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a064f83487d9a2fb840d7d2c03e7eb0235959f08","unresolved":false,"context_lines":[{"line_number":692,"context_line":"                            self._cleanup_when_reschedule_fails("},{"line_number":693,"context_line":"                                context, instance, exc, legacy_request_spec,"},{"line_number":694,"context_line":"                                requested_networks)"},{"line_number":695,"context_line":"                            return"},{"line_number":696,"context_line":"                    else:"},{"line_number":697,"context_line":"                        # Some deployments use different schedulers that do not"},{"line_number":698,"context_line":"                        # use Placement, so they will not have an"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_f6b5cd32","line":695,"range":{"start_line":695,"start_character":28,"end_line":695,"end_character":34},"in_reply_to":"5fc1f717_ce7a7bef","updated":"2019-03-28 15:13:46.000000000","message":"The claim_resources method already retries on provider generation conflict (via the line you linked).\n\nPerhaps I\u0027m misunderstanding what you\u0027re suggesting.","commit_id":"bd6c5b0416ce2d95849b65217748933a176a31a7"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1ab56ff25a954796f6873eb59cef7e039d61e194","unresolved":false,"context_lines":[{"line_number":692,"context_line":"                            self._cleanup_when_reschedule_fails("},{"line_number":693,"context_line":"                                context, instance, exc, legacy_request_spec,"},{"line_number":694,"context_line":"                                requested_networks)"},{"line_number":695,"context_line":"                            return"},{"line_number":696,"context_line":"                    else:"},{"line_number":697,"context_line":"                        # Some deployments use different schedulers that do not"},{"line_number":698,"context_line":"                        # use Placement, so they will not have an"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_66d35d61","line":695,"range":{"start_line":695,"start_character":28,"end_line":695,"end_character":34},"in_reply_to":"5fc1f717_f6b5cd32","updated":"2019-03-29 04:19:20.000000000","message":"yea, right...I missed. And I\u0027m little confusing on which exception we catched at here.","commit_id":"bd6c5b0416ce2d95849b65217748933a176a31a7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"07c28dee48d175c317be4f34c30dfe4c33e41d40","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        updates \u003d {\u0027vm_state\u0027: vm_states.ERROR,"},{"line_number":548,"context_line":"                   \u0027task_state\u0027: None}"},{"line_number":549,"context_line":"        self._set_vm_state_and_notify("},{"line_number":550,"context_line":"            context, instance.uuid, \u0027build_instances\u0027, updates, exception,"},{"line_number":551,"context_line":"            legacy_request_spec)"},{"line_number":552,"context_line":"        self._cleanup_allocated_networks("},{"line_number":553,"context_line":"            context, instance, requested_networks)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_33dfd03b","line":550,"range":{"start_line":550,"start_character":37,"end_line":550,"end_character":52},"updated":"2019-03-29 13:59:51.000000000","message":"nit: would be good to have a docstring on this method to say it\u0027s only used for build_instance reschedules, not to be confused with resize reschedules.","commit_id":"74ef3a67096ca8203cd344e4ee32c71ab340ab1b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"86afb744d5e66042204b5d7eb8d6ea3384c2e74a","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        updates \u003d {\u0027vm_state\u0027: vm_states.ERROR,"},{"line_number":548,"context_line":"                   \u0027task_state\u0027: None}"},{"line_number":549,"context_line":"        self._set_vm_state_and_notify("},{"line_number":550,"context_line":"            context, instance.uuid, \u0027build_instances\u0027, updates, exception,"},{"line_number":551,"context_line":"            legacy_request_spec)"},{"line_number":552,"context_line":"        self._cleanup_allocated_networks("},{"line_number":553,"context_line":"            context, instance, requested_networks)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_d6699a26","line":550,"range":{"start_line":550,"start_character":37,"end_line":550,"end_character":52},"in_reply_to":"5fc1f717_33dfd03b","updated":"2019-03-29 14:49:10.000000000","message":"Done","commit_id":"74ef3a67096ca8203cd344e4ee32c71ab340ab1b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"07c28dee48d175c317be4f34c30dfe4c33e41d40","unresolved":false,"context_lines":[{"line_number":692,"context_line":"                            self._cleanup_when_reschedule_fails("},{"line_number":693,"context_line":"                                context, instance, exc, legacy_request_spec,"},{"line_number":694,"context_line":"                                requested_networks)"},{"line_number":695,"context_line":"                            return"},{"line_number":696,"context_line":"                    else:"},{"line_number":697,"context_line":"                        # Some deployments use different schedulers that do not"},{"line_number":698,"context_line":"                        # use Placement, so they will not have an"}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_73a318b3","line":695,"range":{"start_line":695,"start_character":28,"end_line":695,"end_character":34},"updated":"2019-03-29 13:59:51.000000000","message":"I was going to say why don\u0027t we just do something like:\n\nwith excutils.save_and_reraise_error():\n   self._cleanup_when_reschedule_fails(...)\n\nBut there isn\u0027t really a point in re-raising unless there was a decorator on this method that did more cleanup, but there isn\u0027t, and we return above as well after cleaning up, so this is fine.","commit_id":"74ef3a67096ca8203cd344e4ee32c71ab340ab1b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"86afb744d5e66042204b5d7eb8d6ea3384c2e74a","unresolved":false,"context_lines":[{"line_number":692,"context_line":"                            self._cleanup_when_reschedule_fails("},{"line_number":693,"context_line":"                                context, instance, exc, legacy_request_spec,"},{"line_number":694,"context_line":"                                requested_networks)"},{"line_number":695,"context_line":"                            return"},{"line_number":696,"context_line":"                    else:"},{"line_number":697,"context_line":"                        # Some deployments use different schedulers that do not"},{"line_number":698,"context_line":"                        # use Placement, so they will not have an"}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_b6708e0a","line":695,"range":{"start_line":695,"start_character":28,"end_line":695,"end_character":34},"in_reply_to":"5fc1f717_73a318b3","updated":"2019-03-29 14:49:10.000000000","message":"Yeah I tried to follow the pattern from above","commit_id":"74ef3a67096ca8203cd344e4ee32c71ab340ab1b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0f85574e8d7f9cfa4ac0e6d9bea7de2afd36c70b","unresolved":false,"context_lines":[{"line_number":697,"context_line":"                            self._cleanup_when_reschedule_fails("},{"line_number":698,"context_line":"                                context, instance, exc, legacy_request_spec,"},{"line_number":699,"context_line":"                                requested_networks)"},{"line_number":700,"context_line":"                            return"},{"line_number":701,"context_line":"                    else:"},{"line_number":702,"context_line":"                        # Some deployments use different schedulers that do not"},{"line_number":703,"context_line":"                        # use Placement, so they will not have an"}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_88616f14","line":700,"range":{"start_line":700,"start_character":28,"end_line":700,"end_character":34},"updated":"2019-04-02 23:55:33.000000000","message":"We\u0027re in a loop but the return here is OK because we\u0027re in a reschedule block and in that case we\u0027ll only have one instance.","commit_id":"b096d9303acfea81ca56394cab681d2b2eed2d91"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5cc0484a6b9e71522786c7a8f3baf9fc813b5f48","unresolved":false,"context_lines":[{"line_number":714,"context_line":"                    msg \u003d (\"Exhausted all hosts available for retrying build \""},{"line_number":715,"context_line":"                           \"failures for instance %(instance_uuid)s.\" %"},{"line_number":716,"context_line":"                           {\"instance_uuid\": instance.uuid})"},{"line_number":717,"context_line":"                    raise exception.MaxRetriesExceeded(reason\u003dmsg)"},{"line_number":718,"context_line":"            instance.availability_zone \u003d ("},{"line_number":719,"context_line":"                availability_zones.get_host_availability_zone(context,"},{"line_number":720,"context_line":"                        host.service_host))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_0887bfb8","line":717,"updated":"2019-04-02 23:53:30.000000000","message":"This would also result in the instance being stuck in BUILD status.","commit_id":"b096d9303acfea81ca56394cab681d2b2eed2d91"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3de77efc7dfc72ed81708868099d44f739ea9bb","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                           \"failures for instance %(instance_uuid)s.\" %"},{"line_number":716,"context_line":"                           {\"instance_uuid\": instance.uuid})"},{"line_number":717,"context_line":"                    raise exception.MaxRetriesExceeded(reason\u003dmsg)"},{"line_number":718,"context_line":"            instance.availability_zone \u003d ("},{"line_number":719,"context_line":"                availability_zones.get_host_availability_zone(context,"},{"line_number":720,"context_line":"                        host.service_host))"},{"line_number":721,"context_line":"            try:"},{"line_number":722,"context_line":"                # NOTE(danms): This saves the az change above, refreshes our"},{"line_number":723,"context_line":"                # instance, and tells us if it has been deleted underneath us"}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_88ee4f89","line":720,"range":{"start_line":718,"start_character":12,"end_line":720,"end_character":43},"updated":"2019-04-02 23:47:38.000000000","message":"This is another location where things can blow up and the server is left in BUILD status, in a case I just hit it was due to bug 1781286.","commit_id":"b096d9303acfea81ca56394cab681d2b2eed2d91"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5cc0484a6b9e71522786c7a8f3baf9fc813b5f48","unresolved":false,"context_lines":[{"line_number":769,"context_line":"                    # TODO(alaski): Handle block_device_mapping cleanup"},{"line_number":770,"context_line":"                    if inst_mapping:"},{"line_number":771,"context_line":"                        inst_mapping.destroy()"},{"line_number":772,"context_line":"                    return"},{"line_number":773,"context_line":"            else:"},{"line_number":774,"context_line":"                # NOTE(lyarwood): If this is a reschedule then recreate any"},{"line_number":775,"context_line":"                # attachments that were previously removed when cleaning up"}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_c890d7f0","line":772,"updated":"2019-04-02 23:53:30.000000000","message":"Shouldn\u0027t this be a continue like L728?","commit_id":"b096d9303acfea81ca56394cab681d2b2eed2d91"}],"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"07c28dee48d175c317be4f34c30dfe4c33e41d40","unresolved":false,"context_lines":[{"line_number":246,"context_line":"class InstanceHelperMixin(object):"},{"line_number":247,"context_line":"    def _wait_for_server_parameter(self, admin_api, server, expected_params,"},{"line_number":248,"context_line":"                                   max_retries\u003d10,"},{"line_number":249,"context_line":"                                   fail_when_run_out_of_retries\u003dTrue):"},{"line_number":250,"context_line":"        retry_count \u003d 0"},{"line_number":251,"context_line":"        while True:"},{"line_number":252,"context_line":"            server \u003d admin_api.get_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_3386f015","side":"PARENT","line":249,"range":{"start_line":249,"start_character":35,"end_line":249,"end_character":63},"updated":"2019-03-29 13:59:51.000000000","message":"Why is this removed? I guess because nothing is passing False to it anymore.","commit_id":"fd3b86d1c35efdd8356233863b8ad5b628df8d29"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"86afb744d5e66042204b5d7eb8d6ea3384c2e74a","unresolved":false,"context_lines":[{"line_number":246,"context_line":"class InstanceHelperMixin(object):"},{"line_number":247,"context_line":"    def _wait_for_server_parameter(self, admin_api, server, expected_params,"},{"line_number":248,"context_line":"                                   max_retries\u003d10,"},{"line_number":249,"context_line":"                                   fail_when_run_out_of_retries\u003dTrue):"},{"line_number":250,"context_line":"        retry_count \u003d 0"},{"line_number":251,"context_line":"        while True:"},{"line_number":252,"context_line":"            server \u003d admin_api.get_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_d652fa68","side":"PARENT","line":249,"range":{"start_line":249,"start_character":35,"end_line":249,"end_character":63},"in_reply_to":"5fc1f717_3386f015","updated":"2019-03-29 14:49:10.000000000","message":"Yes, it is unused now. It was only needed for the functional test while it is reproduced the bug.","commit_id":"fd3b86d1c35efdd8356233863b8ad5b628df8d29"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ca19995ef557a4ace4a4d1e51d02857dbf2f577e","unresolved":false,"context_lines":[{"line_number":4046,"context_line":"            # instead of going to ERROR state"},{"line_number":4047,"context_line":"            server \u003d self._wait_for_state_change("},{"line_number":4048,"context_line":"                self.admin_api, server, \u0027ERROR\u0027,"},{"line_number":4049,"context_line":"                fail_when_run_out_of_retries\u003dFalse)"},{"line_number":4050,"context_line":""},{"line_number":4051,"context_line":"            self.assertEqual(\u0027BUILD\u0027, server[\u0027status\u0027])"},{"line_number":4052,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5fc1f717_b538c8d2","side":"PARENT","line":4049,"range":{"start_line":4049,"start_character":16,"end_line":4049,"end_character":50},"updated":"2019-03-26 20:25:17.000000000","message":"So can you now remove this goofiness from the base class?","commit_id":"092f71a38a9caa57c3f1c7356f469c6fb8de57c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2722e6f3fde8ffd0f82cbae4e415c4155aee9280","unresolved":false,"context_lines":[{"line_number":4046,"context_line":"            # instead of going to ERROR state"},{"line_number":4047,"context_line":"            server \u003d self._wait_for_state_change("},{"line_number":4048,"context_line":"                self.admin_api, server, \u0027ERROR\u0027,"},{"line_number":4049,"context_line":"                fail_when_run_out_of_retries\u003dFalse)"},{"line_number":4050,"context_line":""},{"line_number":4051,"context_line":"            self.assertEqual(\u0027BUILD\u0027, server[\u0027status\u0027])"},{"line_number":4052,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5fc1f717_12a9a58e","side":"PARENT","line":4049,"range":{"start_line":4049,"start_character":16,"end_line":4049,"end_character":50},"in_reply_to":"5fc1f717_b538c8d2","updated":"2019-03-27 09:56:56.000000000","message":"Done","commit_id":"092f71a38a9caa57c3f1c7356f469c6fb8de57c4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1ab56ff25a954796f6873eb59cef7e039d61e194","unresolved":false,"context_lines":[{"line_number":6733,"context_line":"                \u0027_fill_provider_mapping\u0027,"},{"line_number":6734,"context_line":"                side_effect\u003d["},{"line_number":6735,"context_line":"                    fill,"},{"line_number":6736,"context_line":"                    exception.ConsumerAllocationRetrievalFailed("},{"line_number":6737,"context_line":"                        consumer_uuid\u003duuids.inst1, error\u003d\u0027testing\u0027)],"},{"line_number":6738,"context_line":"                autospec\u003dTrue):"},{"line_number":6739,"context_line":"            server \u003d self._create_server("}],"source_content_type":"text/x-python","patch_set":5,"id":"5fc1f717_06d93981","line":6736,"range":{"start_line":6736,"start_character":30,"end_line":6736,"end_character":63},"updated":"2019-03-29 04:19:20.000000000","message":"the `_fill_provider_mapping` doesn\u0027t raise this exception any more, since this patch https://review.openstack.org/#/c/638711/10.\n\nAnd I just merged the previous patch...","commit_id":"bd6c5b0416ce2d95849b65217748933a176a31a7"}],"nova/tests/unit/virt/xenapi/test_xenapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"07c28dee48d175c317be4f34c30dfe4c33e41d40","unresolved":false,"context_lines":[{"line_number":3380,"context_line":"                          self.conn.remove_from_aggregate, self.context,"},{"line_number":3381,"context_line":"                          aggregate, \u0027fake_host\u0027)"},{"line_number":3382,"context_line":""},{"line_number":3383,"context_line":"    @mock.patch(\u0027nova.exception_wrapper._emit_exception_notification\u0027,"},{"line_number":3384,"context_line":"                new\u003dmock.Mock())"},{"line_number":3385,"context_line":"    @mock.patch(\u0027nova.virt.xenapi.driver.XenAPIDriver.add_to_aggregate\u0027,"},{"line_number":3386,"context_line":"                new\u003dmock.Mock("}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_d39f6c4f","line":3383,"updated":"2019-03-29 13:59:51.000000000","message":"Why is this needed? Seems totally unrelated.","commit_id":"74ef3a67096ca8203cd344e4ee32c71ab340ab1b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"86afb744d5e66042204b5d7eb8d6ea3384c2e74a","unresolved":false,"context_lines":[{"line_number":3380,"context_line":"                          self.conn.remove_from_aggregate, self.context,"},{"line_number":3381,"context_line":"                          aggregate, \u0027fake_host\u0027)"},{"line_number":3382,"context_line":""},{"line_number":3383,"context_line":"    @mock.patch(\u0027nova.exception_wrapper._emit_exception_notification\u0027,"},{"line_number":3384,"context_line":"                new\u003dmock.Mock())"},{"line_number":3385,"context_line":"    @mock.patch(\u0027nova.virt.xenapi.driver.XenAPIDriver.add_to_aggregate\u0027,"},{"line_number":3386,"context_line":"                new\u003dmock.Mock("}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_964c72c9","line":3383,"in_reply_to":"5fc1f717_53285ced","updated":"2019-03-29 14:49:10.000000000","message":"I don\u0027t recall the reason. Removed the change.","commit_id":"74ef3a67096ca8203cd344e4ee32c71ab340ab1b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ddbda81de7e070f425b7168d912f247abfb81b60","unresolved":false,"context_lines":[{"line_number":3380,"context_line":"                          self.conn.remove_from_aggregate, self.context,"},{"line_number":3381,"context_line":"                          aggregate, \u0027fake_host\u0027)"},{"line_number":3382,"context_line":""},{"line_number":3383,"context_line":"    @mock.patch(\u0027nova.exception_wrapper._emit_exception_notification\u0027,"},{"line_number":3384,"context_line":"                new\u003dmock.Mock())"},{"line_number":3385,"context_line":"    @mock.patch(\u0027nova.virt.xenapi.driver.XenAPIDriver.add_to_aggregate\u0027,"},{"line_number":3386,"context_line":"                new\u003dmock.Mock("}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_53285ced","line":3383,"in_reply_to":"5fc1f717_d39f6c4f","updated":"2019-03-29 14:02:21.000000000","message":"I removed this and the test still passes so it seems we don\u0027t need this.","commit_id":"74ef3a67096ca8203cd344e4ee32c71ab340ab1b"}]}
