)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab2bd51a88a8a471b7907ebeab76e328d86c0809","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"84933eaa_d447657d","updated":"2021-10-26 09:43:59.000000000","message":"Thanks Takashi for taking up this bugfix. The logic looks good but I have some questions and suggestions inline.\n","commit_id":"a5af29be8038fb80a1841c81eeabcb3ed9d26e16"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7021c962bf30ba85a6bb8c644e1455410cc486d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"f15c257a_1aa8e35a","updated":"2021-10-28 09:37:44.000000000","message":"This is looks good to me now. Thank you Takashi!","commit_id":"e5a34fffdf97fcda7d0abfdc9e23485479ca2c4f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"03dd8072f9905f3a4cee59bc98ee7c796b511ed9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"2d7f9658_c6ca9519","updated":"2021-11-04 08:38:18.000000000","message":"recheck","commit_id":"e5a34fffdf97fcda7d0abfdc9e23485479ca2c4f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"47a419e9948fc894c65b9e53b1b68e4d645a8e40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"74d2ceea_55a0752c","updated":"2021-10-28 09:38:51.000000000","message":"recheck both failure is unrealted","commit_id":"e5a34fffdf97fcda7d0abfdc9e23485479ca2c4f"}],"nova/scheduler/client/report.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab2bd51a88a8a471b7907ebeab76e328d86c0809","unresolved":true,"context_lines":[{"line_number":2266,"context_line":"            # Delete any allocations for this resource provider."},{"line_number":2267,"context_line":"            # Since allocations are by consumer, we get the consumers on this"},{"line_number":2268,"context_line":"            # host, which are its instances."},{"line_number":2269,"context_line":"            # NOTE(mriedem): This assumes the only allocations on this node"},{"line_number":2270,"context_line":"            # are instances, but there could be migration consumers if the"},{"line_number":2271,"context_line":"            # node is deleted during a migration or allocations from an"},{"line_number":2272,"context_line":"            # evacuated host (bug 1829479). Obviously an admin shouldn\u0027t"},{"line_number":2273,"context_line":"            # do that but...you know. I guess the provider deletion should fail"},{"line_number":2274,"context_line":"            # in that case which is what we\u0027d want to happen."}],"source_content_type":"text/x-python","patch_set":16,"id":"03b9b5a4_a1fe39e9","side":"PARENT","line":2271,"range":{"start_line":2269,"start_character":12,"end_line":2271,"end_character":48},"updated":"2021-10-26 09:43:59.000000000","message":"this part of the comment is still valid as you patch only handle the evacuations but not ongoing migrations","commit_id":"402fe188b4e7ff76109e8a5ea1f24a5e915eaa09"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0b1d4ceb437c83fe5a4f094ee9844b013da00a20","unresolved":false,"context_lines":[{"line_number":2266,"context_line":"            # Delete any allocations for this resource provider."},{"line_number":2267,"context_line":"            # Since allocations are by consumer, we get the consumers on this"},{"line_number":2268,"context_line":"            # host, which are its instances."},{"line_number":2269,"context_line":"            # NOTE(mriedem): This assumes the only allocations on this node"},{"line_number":2270,"context_line":"            # are instances, but there could be migration consumers if the"},{"line_number":2271,"context_line":"            # node is deleted during a migration or allocations from an"},{"line_number":2272,"context_line":"            # evacuated host (bug 1829479). Obviously an admin shouldn\u0027t"},{"line_number":2273,"context_line":"            # do that but...you know. I guess the provider deletion should fail"},{"line_number":2274,"context_line":"            # in that case which is what we\u0027d want to happen."}],"source_content_type":"text/x-python","patch_set":16,"id":"e1794d5b_bdaedc09","side":"PARENT","line":2271,"range":{"start_line":2269,"start_character":12,"end_line":2271,"end_character":48},"in_reply_to":"03b9b5a4_a1fe39e9","updated":"2021-10-26 10:47:04.000000000","message":"Done","commit_id":"402fe188b4e7ff76109e8a5ea1f24a5e915eaa09"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab2bd51a88a8a471b7907ebeab76e328d86c0809","unresolved":true,"context_lines":[{"line_number":2269,"context_line":"            # NOTE(mriedem): This assumes the only allocations on this node"},{"line_number":2270,"context_line":"            # are instances, but there could be migration consumers if the"},{"line_number":2271,"context_line":"            # node is deleted during a migration or allocations from an"},{"line_number":2272,"context_line":"            # evacuated host (bug 1829479). Obviously an admin shouldn\u0027t"},{"line_number":2273,"context_line":"            # do that but...you know. I guess the provider deletion should fail"},{"line_number":2274,"context_line":"            # in that case which is what we\u0027d want to happen."},{"line_number":2275,"context_line":"            instance_uuids \u003d objects.InstanceList.get_uuids_by_host_and_node("},{"line_number":2276,"context_line":"                context, host, nodename)"},{"line_number":2277,"context_line":"            for instance_uuid in instance_uuids:"}],"source_content_type":"text/x-python","patch_set":16,"id":"06ca64dc_a0d6fb1d","side":"PARENT","line":2274,"range":{"start_line":2272,"start_character":44,"end_line":2274,"end_character":61},"updated":"2021-10-26 09:43:59.000000000","message":"and this can be kept too as migration allocations still cause the failure here","commit_id":"402fe188b4e7ff76109e8a5ea1f24a5e915eaa09"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0b1d4ceb437c83fe5a4f094ee9844b013da00a20","unresolved":false,"context_lines":[{"line_number":2269,"context_line":"            # NOTE(mriedem): This assumes the only allocations on this node"},{"line_number":2270,"context_line":"            # are instances, but there could be migration consumers if the"},{"line_number":2271,"context_line":"            # node is deleted during a migration or allocations from an"},{"line_number":2272,"context_line":"            # evacuated host (bug 1829479). Obviously an admin shouldn\u0027t"},{"line_number":2273,"context_line":"            # do that but...you know. I guess the provider deletion should fail"},{"line_number":2274,"context_line":"            # in that case which is what we\u0027d want to happen."},{"line_number":2275,"context_line":"            instance_uuids \u003d objects.InstanceList.get_uuids_by_host_and_node("},{"line_number":2276,"context_line":"                context, host, nodename)"},{"line_number":2277,"context_line":"            for instance_uuid in instance_uuids:"}],"source_content_type":"text/x-python","patch_set":16,"id":"89000ab2_1766682e","side":"PARENT","line":2274,"range":{"start_line":2272,"start_character":44,"end_line":2274,"end_character":61},"in_reply_to":"06ca64dc_a0d6fb1d","updated":"2021-10-26 10:47:04.000000000","message":"Done","commit_id":"402fe188b4e7ff76109e8a5ea1f24a5e915eaa09"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab2bd51a88a8a471b7907ebeab76e328d86c0809","unresolved":false,"context_lines":[{"line_number":2253,"context_line":"            compute_node):"},{"line_number":2254,"context_line":"        filters \u003d {"},{"line_number":2255,"context_line":"            \u0027source_compute\u0027: compute_node.host,"},{"line_number":2256,"context_line":"            \u0027status\u0027: [\u0027done\u0027],"},{"line_number":2257,"context_line":"            \u0027migration_type\u0027: fields.MigrationType.EVACUATION,"},{"line_number":2258,"context_line":"        }"},{"line_number":2259,"context_line":"        with utils.temporary_mutation(context, read_deleted\u003d\u0027yes\u0027):"}],"source_content_type":"text/x-python","patch_set":16,"id":"7bb24ca7_6bcfd807","line":2256,"updated":"2021-10-26 09:43:59.000000000","message":"I agree, we should only delete allocation if the evacuation was successfull","commit_id":"a5af29be8038fb80a1841c81eeabcb3ed9d26e16"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab2bd51a88a8a471b7907ebeab76e328d86c0809","unresolved":true,"context_lines":[{"line_number":2256,"context_line":"            \u0027status\u0027: [\u0027done\u0027],"},{"line_number":2257,"context_line":"            \u0027migration_type\u0027: fields.MigrationType.EVACUATION,"},{"line_number":2258,"context_line":"        }"},{"line_number":2259,"context_line":"        with utils.temporary_mutation(context, read_deleted\u003d\u0027yes\u0027):"},{"line_number":2260,"context_line":"            evacuations \u003d objects.MigrationList.get_by_filters(context,"},{"line_number":2261,"context_line":"                                                               filters)"},{"line_number":2262,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"0c7b7f3f_b350c414","line":2259,"updated":"2021-10-26 09:43:59.000000000","message":"Interesting, why do you need to be able to read deleted migrations here? I don\u0027t think nova deletes migrations in \"done\" status","commit_id":"a5af29be8038fb80a1841c81eeabcb3ed9d26e16"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d2964565ad1185754301a9e4431cdd0a3ebc16c8","unresolved":true,"context_lines":[{"line_number":2256,"context_line":"            \u0027status\u0027: [\u0027done\u0027],"},{"line_number":2257,"context_line":"            \u0027migration_type\u0027: fields.MigrationType.EVACUATION,"},{"line_number":2258,"context_line":"        }"},{"line_number":2259,"context_line":"        with utils.temporary_mutation(context, read_deleted\u003d\u0027yes\u0027):"},{"line_number":2260,"context_line":"            evacuations \u003d objects.MigrationList.get_by_filters(context,"},{"line_number":2261,"context_line":"                                                               filters)"},{"line_number":2262,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"c5ea75e5_0c47ddfe","line":2259,"in_reply_to":"0c7b7f3f_b350c414","updated":"2021-10-26 10:12:00.000000000","message":"I implemented this following the logic to get list of evacuations when nova-compute starts.\nHowever you are correct and we don\u0027t need read_deleted\u003d\u0027yes\u0027. If a migration is deleted, then the instance is supposed to be deleted, so its allocation should be deleted as well.","commit_id":"a5af29be8038fb80a1841c81eeabcb3ed9d26e16"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7f617bb811bfb8a080a4ca975404d0a15343a0c9","unresolved":false,"context_lines":[{"line_number":2256,"context_line":"            \u0027status\u0027: [\u0027done\u0027],"},{"line_number":2257,"context_line":"            \u0027migration_type\u0027: fields.MigrationType.EVACUATION,"},{"line_number":2258,"context_line":"        }"},{"line_number":2259,"context_line":"        with utils.temporary_mutation(context, read_deleted\u003d\u0027yes\u0027):"},{"line_number":2260,"context_line":"            evacuations \u003d objects.MigrationList.get_by_filters(context,"},{"line_number":2261,"context_line":"                                                               filters)"},{"line_number":2262,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"33ac3736_077953e2","line":2259,"in_reply_to":"c5ea75e5_0c47ddfe","updated":"2021-10-26 10:26:53.000000000","message":"Done","commit_id":"a5af29be8038fb80a1841c81eeabcb3ed9d26e16"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab2bd51a88a8a471b7907ebeab76e328d86c0809","unresolved":false,"context_lines":[{"line_number":2261,"context_line":"                                                               filters)"},{"line_number":2262,"context_line":""},{"line_number":2263,"context_line":"        for evacuation in evacuations:"},{"line_number":2264,"context_line":"            if not self.remove_provider_tree_from_instance_allocation("},{"line_number":2265,"context_line":"                    context, evacuation.instance_uuid, compute_node.uuid):"},{"line_number":2266,"context_line":"                LOG.error(\"Failed to clean allocation of evacuated \""},{"line_number":2267,"context_line":"                          \"instance on the source node %s\","}],"source_content_type":"text/x-python","patch_set":16,"id":"5bf228ca_83f1f12c","line":2264,"range":{"start_line":2264,"start_character":24,"end_line":2264,"end_character":69},"updated":"2021-10-26 09:43:59.000000000","message":"yepp it is what we need as evacuation creates allocation on multiple RP trees","commit_id":"a5af29be8038fb80a1841c81eeabcb3ed9d26e16"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab2bd51a88a8a471b7907ebeab76e328d86c0809","unresolved":true,"context_lines":[{"line_number":2292,"context_line":"                    context, instance_uuid, force\u003dTrue)"},{"line_number":2293,"context_line":""},{"line_number":2294,"context_line":"            # When an instance is evacuated, its allocation remains in"},{"line_number":2295,"context_line":"            # the source compute node until the node recovers again. We should"},{"line_number":2296,"context_line":"            # remove such allocations left after evacuation."},{"line_number":2297,"context_line":"            self._remove_allocations_for_evacuated_instances(context,"},{"line_number":2298,"context_line":"                                                             compute_node)"},{"line_number":2299,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"0aedfbf8_ec55e180","line":2296,"range":{"start_line":2295,"start_character":69,"end_line":2296,"end_character":60},"updated":"2021-10-26 09:43:59.000000000","message":"I would be add a bit more context here:\n\"If the broken compute never recovered but instead it is decommissioned then we should delete the allocation of successfully evacuated instances during service delete.\"","commit_id":"a5af29be8038fb80a1841c81eeabcb3ed9d26e16"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7f617bb811bfb8a080a4ca975404d0a15343a0c9","unresolved":false,"context_lines":[{"line_number":2292,"context_line":"                    context, instance_uuid, force\u003dTrue)"},{"line_number":2293,"context_line":""},{"line_number":2294,"context_line":"            # When an instance is evacuated, its allocation remains in"},{"line_number":2295,"context_line":"            # the source compute node until the node recovers again. We should"},{"line_number":2296,"context_line":"            # remove such allocations left after evacuation."},{"line_number":2297,"context_line":"            self._remove_allocations_for_evacuated_instances(context,"},{"line_number":2298,"context_line":"                                                             compute_node)"},{"line_number":2299,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"d12d67b4_0d83c3e0","line":2296,"range":{"start_line":2295,"start_character":69,"end_line":2296,"end_character":60},"in_reply_to":"0aedfbf8_ec55e180","updated":"2021-10-26 10:26:53.000000000","message":"Done. Thanks for the suggestion. That looks definitely better.","commit_id":"a5af29be8038fb80a1841c81eeabcb3ed9d26e16"}],"nova/tests/functional/test_nova_manage.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab2bd51a88a8a471b7907ebeab76e328d86c0809","unresolved":true,"context_lines":[{"line_number":1849,"context_line":"        self.assertIn(\u0027Processed 1 allocation.\u0027, output)"},{"line_number":1850,"context_line":"        self.assertEqual(4, ret)"},{"line_number":1851,"context_line":""},{"line_number":1852,"context_line":"    # TODO(sbauza): Remove this test once bug #1829479 is fixed"},{"line_number":1853,"context_line":"    def test_audit_orphaned_allocations_from_deleted_compute_evacuate(self):"},{"line_number":1854,"context_line":"        \"\"\"Evacuate a server and the delete the source node so that it will"},{"line_number":1855,"context_line":"           leave a source allocation that the audit command will find."}],"source_content_type":"text/x-python","patch_set":16,"id":"4bb5da80_1472ad1e","side":"PARENT","line":1852,"updated":"2021-10-26 09:43:59.000000000","message":"Hm, I think we should keep this in a bit changed way. If the evacuation fails then we have the same situation even after your patch","commit_id":"402fe188b4e7ff76109e8a5ea1f24a5e915eaa09"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7f617bb811bfb8a080a4ca975404d0a15343a0c9","unresolved":true,"context_lines":[{"line_number":1849,"context_line":"        self.assertIn(\u0027Processed 1 allocation.\u0027, output)"},{"line_number":1850,"context_line":"        self.assertEqual(4, ret)"},{"line_number":1851,"context_line":""},{"line_number":1852,"context_line":"    # TODO(sbauza): Remove this test once bug #1829479 is fixed"},{"line_number":1853,"context_line":"    def test_audit_orphaned_allocations_from_deleted_compute_evacuate(self):"},{"line_number":1854,"context_line":"        \"\"\"Evacuate a server and the delete the source node so that it will"},{"line_number":1855,"context_line":"           leave a source allocation that the audit command will find."}],"source_content_type":"text/x-python","patch_set":16,"id":"6cd88780_08daaa2b","side":"PARENT","line":1852,"in_reply_to":"4bb5da80_1472ad1e","updated":"2021-10-26 10:26:53.000000000","message":"I\u0027ll give this another thought. The tricky part is that we need to migrate the instance from compute1 to delete its nova-compute service because delete request is not accepted when any instance is left on that node.","commit_id":"402fe188b4e7ff76109e8a5ea1f24a5e915eaa09"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7021c962bf30ba85a6bb8c644e1455410cc486d1","unresolved":true,"context_lines":[{"line_number":1849,"context_line":"        self.assertIn(\u0027Processed 1 allocation.\u0027, output)"},{"line_number":1850,"context_line":"        self.assertEqual(4, ret)"},{"line_number":1851,"context_line":""},{"line_number":1852,"context_line":"    # TODO(sbauza): Remove this test once bug #1829479 is fixed"},{"line_number":1853,"context_line":"    def test_audit_orphaned_allocations_from_deleted_compute_evacuate(self):"},{"line_number":1854,"context_line":"        \"\"\"Evacuate a server and the delete the source node so that it will"},{"line_number":1855,"context_line":"           leave a source allocation that the audit command will find."}],"source_content_type":"text/x-python","patch_set":16,"id":"9e8f67f1_771eeeb5","side":"PARENT","line":1852,"in_reply_to":"6cd88780_08daaa2b","updated":"2021-10-28 09:37:44.000000000","message":"What I\u0027m thinking is to still request the evacuation of the instance from compute1 but make the evacuation fail to spanw the instance on compute2 (e.g we need to inject some faults, like vif plug timeout). This will make the instance in ERROR state (I assume) and also the evacuation action be in error state. But I\u0027m not sure if the instance, and its allocation are moved back to compute1 or kept in compute2 in this case. \n\nAnyhow this can be done in a follow up. So I won\u0027t block this fix on this test case.","commit_id":"402fe188b4e7ff76109e8a5ea1f24a5e915eaa09"}],"nova/tests/unit/scheduler/client/test_report.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4e26ab7c7db56cd7c2c51865e6e0e4e9a8c4f611","unresolved":true,"context_lines":[{"line_number":3892,"context_line":"            mock_get.assert_called_once_with("},{"line_number":3893,"context_line":"                \u0027/allocations/%s\u0027 % uuids.consumer_uuid, version\u003d\u00271.28\u0027,"},{"line_number":3894,"context_line":"                global_request_id\u003dself.context.global_id)"},{"line_number":3895,"context_line":"            mock_put.essert_called_once_with("},{"line_number":3896,"context_line":"                \u0027/allocations/%s\u0027 % uuids.consumer_uuid, updated_allocations,"},{"line_number":3897,"context_line":"                version\u003d\u00271.28\u0027, global_request_id\u003dself.context.global_id)"},{"line_number":3898,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"4601d6e3_ee047ea0","line":3895,"range":{"start_line":3895,"start_character":21,"end_line":3895,"end_character":22},"updated":"2021-07-29 11:25:06.000000000","message":"whoops","commit_id":"6679b15899443361f88c6b4b86f375440bd96dcf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ec57463dd80c4334bdffcb0080d7ad58a3fd7ba3","unresolved":false,"context_lines":[{"line_number":3892,"context_line":"            mock_get.assert_called_once_with("},{"line_number":3893,"context_line":"                \u0027/allocations/%s\u0027 % uuids.consumer_uuid, version\u003d\u00271.28\u0027,"},{"line_number":3894,"context_line":"                global_request_id\u003dself.context.global_id)"},{"line_number":3895,"context_line":"            mock_put.essert_called_once_with("},{"line_number":3896,"context_line":"                \u0027/allocations/%s\u0027 % uuids.consumer_uuid, updated_allocations,"},{"line_number":3897,"context_line":"                version\u003d\u00271.28\u0027, global_request_id\u003dself.context.global_id)"},{"line_number":3898,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ed179ef2_2e635400","line":3895,"range":{"start_line":3895,"start_character":21,"end_line":3895,"end_character":22},"in_reply_to":"4601d6e3_ee047ea0","updated":"2021-07-29 11:50:57.000000000","message":"Done. Thank you for catching this. I have no idea why I left this edit...","commit_id":"6679b15899443361f88c6b4b86f375440bd96dcf"}],"releasenotes/notes/bug-1829479-cd2db21526965e6d.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab2bd51a88a8a471b7907ebeab76e328d86c0809","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #1829479 \u003chttps://bugs.launchpad.net/nova/+bug/1829479\u003e`_: Now"},{"line_number":5,"context_line":"    deleting a nova-compute service removes allocations of evacuated instances."},{"line_number":6,"context_line":"    This allows the associated resource provider to be deleted automatically"},{"line_number":7,"context_line":"    even if the nova-compute service cannot recover after all instances on"},{"line_number":8,"context_line":"    the node have been evacuated."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5caf3d51_1c012505","line":5,"range":{"start_line":5,"start_character":44,"end_line":5,"end_character":68},"updated":"2021-10-26 09:43:59.000000000","message":"nit: allocations of successfully evacuated","commit_id":"a5af29be8038fb80a1841c81eeabcb3ed9d26e16"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7f617bb811bfb8a080a4ca975404d0a15343a0c9","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #1829479 \u003chttps://bugs.launchpad.net/nova/+bug/1829479\u003e`_: Now"},{"line_number":5,"context_line":"    deleting a nova-compute service removes allocations of evacuated instances."},{"line_number":6,"context_line":"    This allows the associated resource provider to be deleted automatically"},{"line_number":7,"context_line":"    even if the nova-compute service cannot recover after all instances on"},{"line_number":8,"context_line":"    the node have been evacuated."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"cc8215ac_5233615e","line":5,"range":{"start_line":5,"start_character":44,"end_line":5,"end_character":68},"in_reply_to":"5caf3d51_1c012505","updated":"2021-10-26 10:26:53.000000000","message":"Done","commit_id":"a5af29be8038fb80a1841c81eeabcb3ed9d26e16"}]}
