)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f15092c540a0917f0066ae38e454b0b763aa43bf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow force-delete even if task_state is not None"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As of now, if vm task_state is not \u0027None\u0027, user gets 500"},{"line_number":10,"context_line":"ClientException Error and instance deletion doesn\u0027t progress."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The same is not the case, when user tries with delete api"},{"line_number":13,"context_line":"instead of force-delete api, even if vm task_state is not \u0027None\u0027."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Fixed the issue by allowing force-delete to delete instance"},{"line_number":16,"context_line":"in task_state other than None."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ida1a9d8761cec9585f031ec25e5692b8bb55661e"},{"line_number":19,"context_line":"Closes-Bug: #1741000"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f91af0f_4b4b3f58","line":16,"range":{"start_line":9,"start_character":0,"end_line":16,"end_character":30},"updated":"2018-01-05 14:36:32.000000000","message":"So to summarize, we\u0027re inverting this? Previously we needed task_state \u003d\u003d None. Now we need task_state !\u003d None?","commit_id":"7b614d5516af7e9fbd958f0232e810543be65989"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"8c8335cbb7541e6b47d687aabad35d54aa698427","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow force-delete even if task_state is not None"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As of now, if vm task_state is not \u0027None\u0027, user gets 500"},{"line_number":10,"context_line":"ClientException Error and instance deletion doesn\u0027t progress."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The same is not the case, when user tries with delete api"},{"line_number":13,"context_line":"instead of force-delete api, even if vm task_state is not \u0027None\u0027."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Fixed the issue by allowing force-delete to delete instance"},{"line_number":16,"context_line":"in task_state other than None."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ida1a9d8761cec9585f031ec25e5692b8bb55661e"},{"line_number":19,"context_line":"Closes-Bug: #1741000"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f91af0f_02397fa2","line":16,"range":{"start_line":9,"start_character":0,"end_line":16,"end_character":30},"in_reply_to":"9f91af0f_4b4b3f58","updated":"2018-01-08 06:30:35.000000000","message":"We are not inverting it, I think it was not done as expected earlier. \nAs you can see check_instance_state decorator is confusing, where task_state\u003dNone implies that the valid task_state can be anything including \u0027None\u0027, while the default value of task_state\u003d(None,) implies that valid task_state is \u0027None\u0027.","commit_id":"7b614d5516af7e9fbd958f0232e810543be65989"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"6aadbe0dce47ec289fb66831b139b09cec562813","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Allow force-delete even if task_state is not None"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As of now, if vm task_state is not \u0027None\u0027, and user tries"},{"line_number":10,"context_line":"to force-delete instance, then he gets 500 ClientException"},{"line_number":11,"context_line":"Error and instance deletion doesn\u0027t progress."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The same is not the case, when user tries with delete api"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f93b717_1ab3100c","line":10,"range":{"start_line":10,"start_character":26,"end_line":10,"end_character":58},"updated":"2018-01-31 08:22:49.000000000","message":"As this patch is in Nova code, maybe you should not mention ClientException? just http 500","commit_id":"23e23e493ff9e267d688aff1b353f7e5e275b416"}],"nova/compute/api.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a5a107fc7c92fa630765ced9457f9d011c2a65ba","unresolved":false,"context_lines":[{"line_number":2138,"context_line":"            instance.save(expected_task_state\u003d[None])"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    @check_instance_lock"},{"line_number":2141,"context_line":"    @check_instance_state(task_state\u003dNone,"},{"line_number":2142,"context_line":"                          must_have_launched\u003dFalse)"},{"line_number":2143,"context_line":"    def force_delete(self, context, instance):"},{"line_number":2144,"context_line":"        \"\"\"Force delete an instance in any vm_state/task_state.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_0a61e836","line":2141,"updated":"2018-01-03 11:13:26.000000000","message":"Wow, that\u0027s a confusing interface on the definition of check_instance_state a default of a tuple containing None or a straight value of None meaning a different thing...","commit_id":"7b614d5516af7e9fbd958f0232e810543be65989"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f15092c540a0917f0066ae38e454b0b763aa43bf","unresolved":false,"context_lines":[{"line_number":2138,"context_line":"            instance.save(expected_task_state\u003d[None])"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"    @check_instance_lock"},{"line_number":2141,"context_line":"    @check_instance_state(task_state\u003dNone,"},{"line_number":2142,"context_line":"                          must_have_launched\u003dFalse)"},{"line_number":2143,"context_line":"    def force_delete(self, context, instance):"},{"line_number":2144,"context_line":"        \"\"\"Force delete an instance in any vm_state/task_state.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_ab3c4bbf","line":2141,"in_reply_to":"9f91af0f_0a61e836","updated":"2018-01-05 14:36:32.000000000","message":"I concur, though I\u0027m not sure what else you\u0027d do with this. Make both arguments required or default to a sentinel value?\n\n    task_sentinel \u003d object()\n\n    def check_instance_state(vm_state\u003dNone, task_state\u003dtask_sentinel,\n                             must_have_launched\u003dTrue):\n\nThat\u0027s a cleanup for later though.","commit_id":"7b614d5516af7e9fbd958f0232e810543be65989"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f15092c540a0917f0066ae38e454b0b763aa43bf","unresolved":false,"context_lines":[{"line_number":1212,"context_line":"    def test_delete_forced_when_task_state_is_not_none(self):"},{"line_number":1213,"context_line":"        for vm_state in self._get_vm_states():"},{"line_number":1214,"context_line":"            self._test_delete(\u0027force_delete\u0027, vm_steate\u003dvm_state,"},{"line_number":1215,"context_line":"                              task_state \u003d task_states.RESIZE_MIGRATING)"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    def test_delete_fast_if_host_not_set(self):"},{"line_number":1218,"context_line":"        self.useFixture(fixtures.AllServicesCurrent())"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_c83bd5e8","line":1215,"range":{"start_line":1215,"start_character":40,"end_line":1215,"end_character":43},"updated":"2018-01-05 14:36:32.000000000","message":"kill this whitespace","commit_id":"7b614d5516af7e9fbd958f0232e810543be65989"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"8c8335cbb7541e6b47d687aabad35d54aa698427","unresolved":false,"context_lines":[{"line_number":1212,"context_line":"    def test_delete_forced_when_task_state_is_not_none(self):"},{"line_number":1213,"context_line":"        for vm_state in self._get_vm_states():"},{"line_number":1214,"context_line":"            self._test_delete(\u0027force_delete\u0027, vm_steate\u003dvm_state,"},{"line_number":1215,"context_line":"                              task_state \u003d task_states.RESIZE_MIGRATING)"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    def test_delete_fast_if_host_not_set(self):"},{"line_number":1218,"context_line":"        self.useFixture(fixtures.AllServicesCurrent())"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_223e038c","line":1215,"range":{"start_line":1215,"start_character":40,"end_line":1215,"end_character":43},"in_reply_to":"9f91af0f_c83bd5e8","updated":"2018-01-08 06:30:35.000000000","message":"Done","commit_id":"7b614d5516af7e9fbd958f0232e810543be65989"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bd9bff253dfac05a8cb09334cbf43bcd0e5d6f12","unresolved":false,"context_lines":[{"line_number":1211,"context_line":""},{"line_number":1212,"context_line":"    def test_delete_forced_when_task_state_is_not_none(self):"},{"line_number":1213,"context_line":"        for vm_state in self._get_vm_states():"},{"line_number":1214,"context_line":"            self._test_delete(\u0027force_delete\u0027, vm_steate\u003dvm_state,"},{"line_number":1215,"context_line":"                              task_state\u003dtask_states.RESIZE_MIGRATING)"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    def test_delete_fast_if_host_not_set(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_bb255a5e","line":1214,"range":{"start_line":1214,"start_character":46,"end_line":1214,"end_character":55},"updated":"2018-01-30 13:43:43.000000000","message":"vm_state","commit_id":"bd699a568fa23b8d535f62d2cb4d373ea270a134"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"397a88a07f39572bee1643833a96f5ece4402567","unresolved":false,"context_lines":[{"line_number":1211,"context_line":""},{"line_number":1212,"context_line":"    def test_delete_forced_when_task_state_is_not_none(self):"},{"line_number":1213,"context_line":"        for vm_state in self._get_vm_states():"},{"line_number":1214,"context_line":"            self._test_delete(\u0027force_delete\u0027, vm_steate\u003dvm_state,"},{"line_number":1215,"context_line":"                              task_state\u003dtask_states.RESIZE_MIGRATING)"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    def test_delete_fast_if_host_not_set(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_40da0c4b","line":1214,"range":{"start_line":1214,"start_character":46,"end_line":1214,"end_character":55},"in_reply_to":"5f93b717_bb255a5e","updated":"2018-01-31 06:01:50.000000000","message":"Done","commit_id":"bd699a568fa23b8d535f62d2cb4d373ea270a134"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bd9bff253dfac05a8cb09334cbf43bcd0e5d6f12","unresolved":false,"context_lines":[{"line_number":1212,"context_line":"    def test_delete_forced_when_task_state_is_not_none(self):"},{"line_number":1213,"context_line":"        for vm_state in self._get_vm_states():"},{"line_number":1214,"context_line":"            self._test_delete(\u0027force_delete\u0027, vm_steate\u003dvm_state,"},{"line_number":1215,"context_line":"                              task_state\u003dtask_states.RESIZE_MIGRATING)"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    def test_delete_fast_if_host_not_set(self):"},{"line_number":1218,"context_line":"        self.useFixture(fixtures.AllServicesCurrent())"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_9b209e4a","line":1215,"range":{"start_line":1215,"start_character":30,"end_line":1215,"end_character":70},"updated":"2018-01-30 13:43:43.000000000","message":"the bug report says that force-delete is throwing a 500 when task_state is None, but you are putting task_state to RESIZE_MIGRATING here?","commit_id":"bd699a568fa23b8d535f62d2cb4d373ea270a134"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"397a88a07f39572bee1643833a96f5ece4402567","unresolved":false,"context_lines":[{"line_number":1212,"context_line":"    def test_delete_forced_when_task_state_is_not_none(self):"},{"line_number":1213,"context_line":"        for vm_state in self._get_vm_states():"},{"line_number":1214,"context_line":"            self._test_delete(\u0027force_delete\u0027, vm_steate\u003dvm_state,"},{"line_number":1215,"context_line":"                              task_state\u003dtask_states.RESIZE_MIGRATING)"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    def test_delete_fast_if_host_not_set(self):"},{"line_number":1218,"context_line":"        self.useFixture(fixtures.AllServicesCurrent())"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_20e58009","line":1215,"range":{"start_line":1215,"start_character":30,"end_line":1215,"end_character":70},"in_reply_to":"5f93b717_9b209e4a","updated":"2018-01-31 06:01:50.000000000","message":"Its not when task_state is \u0027None\u0027, its when task_state is not \u0027None\u0027. That\u0027s why I have put task_state to RESIZE_MIGRATING.","commit_id":"bd699a568fa23b8d535f62d2cb4d373ea270a134"}]}
