)]}'
{"nova/tests/functional/regressions/test_bug_1670627.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"455740ad2087cfa7c9ece2fa1d2cd34dd512e19d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    record is created in the cell0 database and the BuildRequest is deleted."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    The API would have made a quota reservation before this when creating the"},{"line_number":33,"context_line":"    instance."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    When the user deletes the instance, the API code sees that the instance is"},{"line_number":36,"context_line":"    living in cell0 and deletes it from cell0. The original quota reservation"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_aba10cfa","line":33,"updated":"2017-03-10 19:09:59.000000000","message":"Reservations are deleted at quota.commit() time, so I don\u0027t think there is a reservation leftover. The steps are:\n\n1) quota.reserve creates a reservation record and updates the resource usage record to increment \u0027reserved\u0027 which is counted as part of usage\n2) quota.commit deletes the reservation record and updates the resource usage record to decrement \u0027reserved\u0027 and increment \u0027in_use\u0027 which is counted as part of usage","commit_id":"92966b2cd1ab72b38133e5425360e3b542db0df0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"50a464f55657372eb1ba4c0ed20318c5a80fa6c7","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    record is created in the cell0 database and the BuildRequest is deleted."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    The API would have made a quota reservation before this when creating the"},{"line_number":33,"context_line":"    instance."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    When the user deletes the instance, the API code sees that the instance is"},{"line_number":36,"context_line":"    living in cell0 and deletes it from cell0. The original quota reservation"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_7a56f306","line":33,"in_reply_to":"9a30ddce_aba10cfa","updated":"2017-03-11 03:53:42.000000000","message":"I\u0027m taking this as you want me to just replace the sentence with the steps you have listed here?","commit_id":"92966b2cd1ab72b38133e5425360e3b542db0df0"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"455740ad2087cfa7c9ece2fa1d2cd34dd512e19d","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    When the user deletes the instance, the API code sees that the instance is"},{"line_number":36,"context_line":"    living in cell0 and deletes it from cell0. The original quota reservation"},{"line_number":37,"context_line":"    was made in the cell (nova) database and was not decremented."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    So a user that has several failed instance builds eventually runs out of"},{"line_number":40,"context_line":"    quota even though they successfully deleted their servers."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_6b8b9468","line":37,"updated":"2017-03-10 19:09:59.000000000","message":"The problem isn\u0027t that the reservation record is still around, it\u0027s that the usage record \u0027in_use\u0027 field hasn\u0027t been decremented.","commit_id":"92966b2cd1ab72b38133e5425360e3b542db0df0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"50a464f55657372eb1ba4c0ed20318c5a80fa6c7","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    When the user deletes the instance, the API code sees that the instance is"},{"line_number":36,"context_line":"    living in cell0 and deletes it from cell0. The original quota reservation"},{"line_number":37,"context_line":"    was made in the cell (nova) database and was not decremented."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    So a user that has several failed instance builds eventually runs out of"},{"line_number":40,"context_line":"    quota even though they successfully deleted their servers."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_9a59e737","line":37,"in_reply_to":"9a30ddce_6b8b9468","updated":"2017-03-11 03:53:42.000000000","message":"OK, to avoid having to talk about commits and reservations and reserved vs in_use, maybe I\u0027ll just say usage isn\u0027t decremented.","commit_id":"92966b2cd1ab72b38133e5425360e3b542db0df0"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3b7697ebb1190f5d5edf77065175a68ee6fefd94","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self.addCleanup(self._delete_server, server[\u0027id\u0027])"},{"line_number":121,"context_line":"        self._wait_for_instance_status(server[\u0027id\u0027], \u0027ERROR\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Check quota to see we\u0027ve decremented (usage has gone up 1)."},{"line_number":124,"context_line":"        current_usage \u003d self.api.get_limits()"},{"line_number":125,"context_line":"        self.assertEqual(starting_usage[\u0027absolute\u0027][\u0027totalInstancesUsed\u0027] + 1,"},{"line_number":126,"context_line":"                         current_usage[\u0027absolute\u0027][\u0027totalInstancesUsed\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_8740cb35","line":123,"updated":"2017-03-10 14:07:07.000000000","message":"the use of the word \"decremented\" followed by \"gone up 1\" caused my brain to come to a screeching halt","commit_id":"92966b2cd1ab72b38133e5425360e3b542db0df0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b4926d2344b21a64667f5b12501e855bd4850c79","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self.addCleanup(self._delete_server, server[\u0027id\u0027])"},{"line_number":121,"context_line":"        self._wait_for_instance_status(server[\u0027id\u0027], \u0027ERROR\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Check quota to see we\u0027ve decremented (usage has gone up 1)."},{"line_number":124,"context_line":"        current_usage \u003d self.api.get_limits()"},{"line_number":125,"context_line":"        self.assertEqual(starting_usage[\u0027absolute\u0027][\u0027totalInstancesUsed\u0027] + 1,"},{"line_number":126,"context_line":"                         current_usage[\u0027absolute\u0027][\u0027totalInstancesUsed\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_93bc84bc","line":123,"in_reply_to":"9a30ddce_8740cb35","updated":"2017-03-10 17:13:08.000000000","message":"Yeah I know, me too a bit, this is mostly copying wording from the compute API parts that this is testing.","commit_id":"92966b2cd1ab72b38133e5425360e3b542db0df0"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"ef1fe69c8113fa13424c4f75142e002984f63def","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self.addCleanup(self._delete_server, server[\u0027id\u0027])"},{"line_number":121,"context_line":"        self._wait_for_instance_status(server[\u0027id\u0027], \u0027ERROR\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Check quota to see we\u0027ve decremented (usage has gone up 1)."},{"line_number":124,"context_line":"        current_usage \u003d self.api.get_limits()"},{"line_number":125,"context_line":"        self.assertEqual(starting_usage[\u0027absolute\u0027][\u0027totalInstancesUsed\u0027] + 1,"},{"line_number":126,"context_line":"                         current_usage[\u0027absolute\u0027][\u0027totalInstancesUsed\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_f48cc6db","line":123,"in_reply_to":"9a30ddce_93bc84bc","updated":"2017-03-10 18:29:46.000000000","message":"This comment should say \"incremented.\"\n\nThe places where it says \"decremented\" in compute API are referring to decreasing the usage upon a delete. It was trying to explain that quota.reserve and quota.commit are not just for increasing usage, they are for decreasing usage too.","commit_id":"92966b2cd1ab72b38133e5425360e3b542db0df0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"50a464f55657372eb1ba4c0ed20318c5a80fa6c7","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self.addCleanup(self._delete_server, server[\u0027id\u0027])"},{"line_number":121,"context_line":"        self._wait_for_instance_status(server[\u0027id\u0027], \u0027ERROR\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Check quota to see we\u0027ve decremented (usage has gone up 1)."},{"line_number":124,"context_line":"        current_usage \u003d self.api.get_limits()"},{"line_number":125,"context_line":"        self.assertEqual(starting_usage[\u0027absolute\u0027][\u0027totalInstancesUsed\u0027] + 1,"},{"line_number":126,"context_line":"                         current_usage[\u0027absolute\u0027][\u0027totalInstancesUsed\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_ba44eb49","line":123,"in_reply_to":"9a30ddce_f48cc6db","updated":"2017-03-11 03:53:42.000000000","message":"Incremented what? Usage? I think so, so I\u0027ll change to that. Quota limits don\u0027t change, it\u0027s the usage that does.","commit_id":"92966b2cd1ab72b38133e5425360e3b542db0df0"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3570256f7bacbc9051481892c11d5fc4863c2774","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Now check the quota again. Because we have not fixed the bug, the"},{"line_number":133,"context_line":"        # quota is still going to be showing a usage for instances. When the"},{"line_number":134,"context_line":"        # bug is fixed, ending usage should be current usage - 1."},{"line_number":135,"context_line":"        ending_usage \u003d self.api.get_limits()"},{"line_number":136,"context_line":"        self.assertEqual(current_usage[\u0027absolute\u0027][\u0027totalInstancesUsed\u0027],"},{"line_number":137,"context_line":"                         ending_usage[\u0027absolute\u0027][\u0027totalInstancesUsed\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_dfd443ed","line":134,"range":{"start_line":134,"start_character":47,"end_line":134,"end_character":65},"updated":"2017-03-10 16:01:16.000000000","message":"or starting_usage","commit_id":"92966b2cd1ab72b38133e5425360e3b542db0df0"}]}
