)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e1e9fa6e36a181d87a78055abba894f02d44992f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2b0ea75a_ffca9ab8","updated":"2025-05-20 13:21:08.000000000","message":"I have reviewed the fix before.\nThe reproducer looks good to me too.","commit_id":"356ff48bb8d8b157d13e806b3003e062d6911933"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"118c01ad3567f2153ed7e55dd03dcf2921fbcecc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7d4b17dd_43abae63","updated":"2025-08-27 14:32:11.000000000","message":"Looks good to me","commit_id":"356ff48bb8d8b157d13e806b3003e062d6911933"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"54609c1bc4778a06828ea8452b1525a3d88947c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"de9e8bec_fd21e342","updated":"2025-08-29 07:28:40.000000000","message":"recheck py39 removal patch has been merged","commit_id":"356ff48bb8d8b157d13e806b3003e062d6911933"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"54a18538978c795ddfc4fd6e2dee93533cd2254a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5b7cd173_8a06f6df","updated":"2025-08-28 13:39:32.000000000","message":"recheck same dep install issue","commit_id":"356ff48bb8d8b157d13e806b3003e062d6911933"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"afaf6d8c1bc0d0b3901881571ae92ab2b306cc6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a1e7c15b_c3922906","updated":"2025-08-27 18:29:06.000000000","message":"recheck some infra dep resolving issue","commit_id":"356ff48bb8d8b157d13e806b3003e062d6911933"}],"placement/tests/functional/db/test_allocation.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"33f9d14590ac768aff54d434d205bbc98b97c16b","unresolved":true,"context_lines":[{"line_number":599,"context_line":"            self.ctx, empty_rp)"},{"line_number":600,"context_line":"        self.assertEqual(0, len(allocations))"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def _test_change_allocation_over_capacity(self, pre_inv, post_inv):"},{"line_number":603,"context_line":"        \"\"\"Test allocation changes while a provider is over capacity.\"\"\""},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        # Create a provider with some over-committed inventory"}],"source_content_type":"text/x-python","patch_set":2,"id":"a6b306bc_6bfded1b","line":602,"range":{"start_line":602,"start_character":51,"end_line":602,"end_character":69},"updated":"2025-04-24 17:42:11.000000000","message":"based on how your calling this\n\ni think you were plannign to use these to modify the inventoy in line 607 and 627 respcitivly but these are currently unused.","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"33f9d14590ac768aff54d434d205bbc98b97c16b","unresolved":false,"context_lines":[{"line_number":599,"context_line":"            self.ctx, empty_rp)"},{"line_number":600,"context_line":"        self.assertEqual(0, len(allocations))"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def _test_change_allocation_over_capacity(self, pre_inv, post_inv):"},{"line_number":603,"context_line":"        \"\"\"Test allocation changes while a provider is over capacity.\"\"\""},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        # Create a provider with some over-committed inventory"}],"source_content_type":"text/x-python","patch_set":2,"id":"d3359b8c_f2e885f9","line":602,"updated":"2025-04-24 17:42:11.000000000","message":"im going to mostly ignore any formatting issue.\nyou can dedetnt some fo this but its passes pep8 so lets ignore it.","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"199a515a5ed02a744e2f1677dcc78763c0ae1860","unresolved":false,"context_lines":[{"line_number":599,"context_line":"            self.ctx, empty_rp)"},{"line_number":600,"context_line":"        self.assertEqual(0, len(allocations))"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def _test_change_allocation_over_capacity(self, pre_inv, post_inv):"},{"line_number":603,"context_line":"        \"\"\"Test allocation changes while a provider is over capacity.\"\"\""},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        # Create a provider with some over-committed inventory"}],"source_content_type":"text/x-python","patch_set":2,"id":"c21d9199_eff28e30","line":602,"range":{"start_line":602,"start_character":51,"end_line":602,"end_character":69},"in_reply_to":"8a8c5202_4fb67ee5","updated":"2025-04-24 19:10:17.000000000","message":"Done","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2dffbb0afad1d9381317becb7c0be1e72bc5e391","unresolved":true,"context_lines":[{"line_number":599,"context_line":"            self.ctx, empty_rp)"},{"line_number":600,"context_line":"        self.assertEqual(0, len(allocations))"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def _test_change_allocation_over_capacity(self, pre_inv, post_inv):"},{"line_number":603,"context_line":"        \"\"\"Test allocation changes while a provider is over capacity.\"\"\""},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        # Create a provider with some over-committed inventory"}],"source_content_type":"text/x-python","patch_set":2,"id":"8a8c5202_4fb67ee5","line":602,"range":{"start_line":602,"start_character":51,"end_line":602,"end_character":69},"in_reply_to":"a6b306bc_6bfded1b","updated":"2025-04-24 18:59:56.000000000","message":"Oops, yeah, looks like I lost an intermediate commit here. Probably stashed the actual change and never restored it. I\u0027ll try to fix this tomorrow.","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"33f9d14590ac768aff54d434d205bbc98b97c16b","unresolved":true,"context_lines":[{"line_number":627,"context_line":"        inv \u003d inv_obj.Inventory(self.ctx, resource_provider\u003dprovider,"},{"line_number":628,"context_line":"                                resource_class\u003dorc.VCPU, total\u003d10,"},{"line_number":629,"context_line":"                                max_unit\u003d10,"},{"line_number":630,"context_line":"                                allocation_ratio\u003d1.0)"},{"line_number":631,"context_line":"        provider.set_inventory([inv])"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        # Attempt to reduce the over-capacity situation by reducing one of the"}],"source_content_type":"text/x-python","patch_set":2,"id":"025578dc_4f05eaa7","line":630,"updated":"2025-04-24 17:42:11.000000000","message":"ok so here you simulating that the oeprator eitehr changed the allocation ratio in the config or vai the api.\n\nWe know operators have definitely done this before and got into this broken state, so this is effectively reproducing one of the known ways of causing this bug.\n\nmessing with reserved or phsyical hardware changes are tow other ways to end up here but it shoudl not matther in the context of this repoducer so +1","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"199a515a5ed02a744e2f1677dcc78763c0ae1860","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        inv \u003d inv_obj.Inventory(self.ctx, resource_provider\u003dprovider,"},{"line_number":628,"context_line":"                                resource_class\u003dorc.VCPU, total\u003d10,"},{"line_number":629,"context_line":"                                max_unit\u003d10,"},{"line_number":630,"context_line":"                                allocation_ratio\u003d1.0)"},{"line_number":631,"context_line":"        provider.set_inventory([inv])"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        # Attempt to reduce the over-capacity situation by reducing one of the"}],"source_content_type":"text/x-python","patch_set":2,"id":"e643297d_b2bf842f","line":630,"in_reply_to":"025578dc_4f05eaa7","updated":"2025-04-24 19:10:17.000000000","message":"Acknowledged","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"33f9d14590ac768aff54d434d205bbc98b97c16b","unresolved":true,"context_lines":[{"line_number":640,"context_line":"                                          used\u003d6)"},{"line_number":641,"context_line":"        self.assertRaises(exception.InvalidAllocationCapacityExceeded,"},{"line_number":642,"context_line":"                          alloc_obj.replace_all, self.ctx, [alloc_post])"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        # Attempt to reduce the over-capacity issue by reducing both"},{"line_number":645,"context_line":"        # allocations to 6 (one is still at 7, one is already at 6)."},{"line_number":646,"context_line":"        # Make sure that the check works as expected even with multiple"}],"source_content_type":"text/x-python","patch_set":2,"id":"75ac4cb6_47a46542","line":643,"updated":"2025-04-24 17:42:11.000000000","message":"So this is the case we want to support. \n\ni.e. making incremental progress.","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"199a515a5ed02a744e2f1677dcc78763c0ae1860","unresolved":false,"context_lines":[{"line_number":640,"context_line":"                                          used\u003d6)"},{"line_number":641,"context_line":"        self.assertRaises(exception.InvalidAllocationCapacityExceeded,"},{"line_number":642,"context_line":"                          alloc_obj.replace_all, self.ctx, [alloc_post])"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        # Attempt to reduce the over-capacity issue by reducing both"},{"line_number":645,"context_line":"        # allocations to 6 (one is still at 7, one is already at 6)."},{"line_number":646,"context_line":"        # Make sure that the check works as expected even with multiple"}],"source_content_type":"text/x-python","patch_set":2,"id":"6db0fa14_aa9497da","line":643,"in_reply_to":"75ac4cb6_47a46542","updated":"2025-04-24 19:10:17.000000000","message":"Acknowledged","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"33f9d14590ac768aff54d434d205bbc98b97c16b","unresolved":true,"context_lines":[{"line_number":655,"context_line":"                       for consumer in consumers]"},{"line_number":656,"context_line":"        self.assertRaises(exception.InvalidAllocationCapacityExceeded,"},{"line_number":657,"context_line":"                          alloc_obj.replace_all, self.ctx, allocs_post)"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        # Make sure that we can bring the provider out of over-capacity by"},{"line_number":660,"context_line":"        # reducing multiple allocations at once."},{"line_number":661,"context_line":"        allocs_post \u003d [alloc_obj.Allocation(consumer\u003dconsumer,"}],"source_content_type":"text/x-python","patch_set":2,"id":"0189c002_387845d8","line":658,"updated":"2025-04-24 17:42:11.000000000","message":"I\u0027m actually surprised this does not work today since both are in one post.\n\ni feel like this should have worked, but ok this is also a good test case.\n\nminor nit i feel liek these shoudl be 2 serepate tests but i guess its fine to combine both.","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"199a515a5ed02a744e2f1677dcc78763c0ae1860","unresolved":true,"context_lines":[{"line_number":655,"context_line":"                       for consumer in consumers]"},{"line_number":656,"context_line":"        self.assertRaises(exception.InvalidAllocationCapacityExceeded,"},{"line_number":657,"context_line":"                          alloc_obj.replace_all, self.ctx, allocs_post)"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        # Make sure that we can bring the provider out of over-capacity by"},{"line_number":660,"context_line":"        # reducing multiple allocations at once."},{"line_number":661,"context_line":"        allocs_post \u003d [alloc_obj.Allocation(consumer\u003dconsumer,"}],"source_content_type":"text/x-python","patch_set":2,"id":"6bd25f8d_212c2554","line":658,"in_reply_to":"0189c002_387845d8","updated":"2025-04-24 19:10:17.000000000","message":"Not sure what you mean by two separate tests. We have to use two allocations here because the gotcha is only in the case where we are adjusting one in the right direction but not all the allocations. Since nova only adjusts one instance at a time, it is stuck. If it adjusted multiples, it would be easier to get out of trouble in a single transaction.","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6a2c945897cb6c925b59060d38af469f8d35319","unresolved":false,"context_lines":[{"line_number":655,"context_line":"                       for consumer in consumers]"},{"line_number":656,"context_line":"        self.assertRaises(exception.InvalidAllocationCapacityExceeded,"},{"line_number":657,"context_line":"                          alloc_obj.replace_all, self.ctx, allocs_post)"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        # Make sure that we can bring the provider out of over-capacity by"},{"line_number":660,"context_line":"        # reducing multiple allocations at once."},{"line_number":661,"context_line":"        allocs_post \u003d [alloc_obj.Allocation(consumer\u003dconsumer,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab8815d_49f43046","line":658,"in_reply_to":"6bd25f8d_212c2554","updated":"2025-08-27 14:31:37.000000000","message":"lets just ignore this.\nmy meta comment was you kidn fo have 2 different but ver related tests in one\n\ni would have split each post into its won testcase.\n\nthat all i was trying to say but im ok with this as it is so marking it as resolved.","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"33f9d14590ac768aff54d434d205bbc98b97c16b","unresolved":true,"context_lines":[{"line_number":665,"context_line":"                       for consumer in consumers]"},{"line_number":666,"context_line":"        alloc_obj.replace_all(self.ctx, allocs_post)"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"    def test_change_allocation_over_capacity_ratio(self):"},{"line_number":669,"context_line":"        self._test_change_allocation_over_capacity("},{"line_number":670,"context_line":"            {\u0027allocation_ratio\u0027: 2.0},"},{"line_number":671,"context_line":"            {\u0027allocation_ratio\u0027: 1.0})"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    def test_change_allocation_over_capacity_reserved(self):"},{"line_number":674,"context_line":"        self._test_change_allocation_over_capacity("},{"line_number":675,"context_line":"            {\u0027reserved\u0027: 0},"},{"line_number":676,"context_line":"            {\u0027reserved\u0027: 1})"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"    @mock.patch(\u0027placement.objects.allocation.LOG\u0027)"},{"line_number":679,"context_line":"    def test_set_allocations_retry(self, mock_log):"},{"line_number":680,"context_line":"        \"\"\"Test server side allocation write retry handling.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9294b2ce_51149901","line":677,"range":{"start_line":668,"start_character":3,"end_line":677,"end_character":1},"updated":"2025-04-24 17:42:11.000000000","message":"and because the parmtere to the helper fuction are unused this is just the same test twice using only the allocation ratio\n\nis this corected in the second patch?","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"199a515a5ed02a744e2f1677dcc78763c0ae1860","unresolved":true,"context_lines":[{"line_number":665,"context_line":"                       for consumer in consumers]"},{"line_number":666,"context_line":"        alloc_obj.replace_all(self.ctx, allocs_post)"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"    def test_change_allocation_over_capacity_ratio(self):"},{"line_number":669,"context_line":"        self._test_change_allocation_over_capacity("},{"line_number":670,"context_line":"            {\u0027allocation_ratio\u0027: 2.0},"},{"line_number":671,"context_line":"            {\u0027allocation_ratio\u0027: 1.0})"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    def test_change_allocation_over_capacity_reserved(self):"},{"line_number":674,"context_line":"        self._test_change_allocation_over_capacity("},{"line_number":675,"context_line":"            {\u0027reserved\u0027: 0},"},{"line_number":676,"context_line":"            {\u0027reserved\u0027: 1})"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"    @mock.patch(\u0027placement.objects.allocation.LOG\u0027)"},{"line_number":679,"context_line":"    def test_set_allocations_retry(self, mock_log):"},{"line_number":680,"context_line":"        \"\"\"Test server side allocation write retry handling.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"b697be4a_cecf961e","line":677,"range":{"start_line":668,"start_character":3,"end_line":677,"end_character":1},"in_reply_to":"9294b2ce_51149901","updated":"2025-04-24 19:10:17.000000000","message":"Nope, just forgot to commit a stash. Coming in a sec...","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6a2c945897cb6c925b59060d38af469f8d35319","unresolved":false,"context_lines":[{"line_number":665,"context_line":"                       for consumer in consumers]"},{"line_number":666,"context_line":"        alloc_obj.replace_all(self.ctx, allocs_post)"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"    def test_change_allocation_over_capacity_ratio(self):"},{"line_number":669,"context_line":"        self._test_change_allocation_over_capacity("},{"line_number":670,"context_line":"            {\u0027allocation_ratio\u0027: 2.0},"},{"line_number":671,"context_line":"            {\u0027allocation_ratio\u0027: 1.0})"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    def test_change_allocation_over_capacity_reserved(self):"},{"line_number":674,"context_line":"        self._test_change_allocation_over_capacity("},{"line_number":675,"context_line":"            {\u0027reserved\u0027: 0},"},{"line_number":676,"context_line":"            {\u0027reserved\u0027: 1})"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"    @mock.patch(\u0027placement.objects.allocation.LOG\u0027)"},{"line_number":679,"context_line":"    def test_set_allocations_retry(self, mock_log):"},{"line_number":680,"context_line":"        \"\"\"Test server side allocation write retry handling.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"125460b0_47f04cca","line":677,"range":{"start_line":668,"start_character":3,"end_line":677,"end_character":1},"in_reply_to":"b697be4a_cecf961e","updated":"2025-08-27 14:31:37.000000000","message":"Acknowledged","commit_id":"2473ebd30926c9ab44013068332154b47d09598f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"118c01ad3567f2153ed7e55dd03dcf2921fbcecc","unresolved":false,"context_lines":[{"line_number":642,"context_line":"                          alloc_obj.replace_all, self.ctx, [alloc_post])"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        # Attempt to reduce the over-capacity issue by reducing both"},{"line_number":645,"context_line":"        # allocations to 6 (one is still at 7, one is already at 6)."},{"line_number":646,"context_line":"        # Make sure that the check works as expected even with multiple"},{"line_number":647,"context_line":"        # providers (i.e the per-transaction sum is what matters) and"},{"line_number":648,"context_line":"        # especially when the first is the one that drops the count."}],"source_content_type":"text/x-python","patch_set":3,"id":"08849bd7_a6be61d3","line":645,"range":{"start_line":645,"start_character":27,"end_line":645,"end_character":68},"updated":"2025-08-27 14:32:11.000000000","message":"nit: not true now due to the exception in L641. But will be true in the next patch so I\u0027m OK to keep it as is.","commit_id":"356ff48bb8d8b157d13e806b3003e062d6911933"}]}
