)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fb85ddd0b6fc77e340a55721c27b05717074bd3c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"58b93254_2f91c5f5","updated":"2022-08-08 09:18:30.000000000","message":"could you please add functional testcases to show what will be the API response in case of the failure.","commit_id":"16a1b78915287b96a0a4857a9deb9679cc2ff288"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4d0f5c942dfad1408f9296eb6f806c33e2a75f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5c3c593b_92a57c12","updated":"2022-08-08 11:03:53.000000000","message":"this also need unit tests to assert the new exaction is thrown.","commit_id":"16a1b78915287b96a0a4857a9deb9679cc2ff288"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c68593ba3590fe4eed553fe647bab3bc52270cc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b55bded1_5ac36217","updated":"2022-08-19 12:45:45.000000000","message":"you need to add unit or functional tests to assert the new behavior where the qemu guest agent is present and not preseent and asset the exception is raised correctly\n\nonce that is done i think this will be good","commit_id":"372f1dce8aa62c82b1d09cd9f2e0e21556f5f246"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"dda2aa87bc364d8286a921f7895909796daefcde","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"dd064800_0495c691","updated":"2022-08-24 15:45:49.000000000","message":"Added unit test case test_set_quiesced_agent_connection_fails","commit_id":"9ec89b8f392b85236b8298a67e7d9e18874966c5"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"63167dd710dc74b45e011815e4dc957a766c0f64","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"c803e66f_ffc737b9","updated":"2022-10-17 09:08:51.000000000","message":"recheck timeout for ServersTestBootFromVolume","commit_id":"5f4417d7b4b5a55cbbc5aec5f52cb8413a604fe0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2a39d88c784ffd21da5f221a35f6eaefa551937","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ac74bd30_99b6872c","updated":"2022-11-29 10:11:30.000000000","message":"Fix looks OK, but please use the constant instead of the magic number","commit_id":"45fb55397f88b18dfd6044652679d06e68de0e53"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"58ca552df620184b3b671401971c383e4c64f6b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"d91a1dbf_a51a8dce","updated":"2022-11-14 08:50:56.000000000","message":"sounds good","commit_id":"45fb55397f88b18dfd6044652679d06e68de0e53"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d69809cfc835cdea873fa8d33412fa98165c654f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"8d3d675b_9e1fc8fa","updated":"2022-11-29 14:54:38.000000000","message":"Thank you!","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"5d9b9d44383ef72d20744e5a77d73f756e65ec0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"cc794a8a_747abba3","updated":"2022-12-02 03:32:45.000000000","message":"recheck nova cell tempest test","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"06af32ba0ca23415db130b8157b0d00f491ba0eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"16ec1edc_85b479e1","updated":"2022-12-03 06:21:02.000000000","message":"recheck nova ceph (unrelated)","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"60c5bf629e5b3662c63cf3dea022883e4dc6de20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"d4335efb_ab401eb1","updated":"2022-12-02 08:13:10.000000000","message":"recheck nova ceph failed","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"3e79a98bc7ea2fe94d31d8af3e99669113cc425c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f4332d7e_d8cfc524","updated":"2022-12-02 06:21:05.000000000","message":"recheck nova ceph failed at gate","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"7c5fe0dfdae1dc25310c3e227459f93a9162157a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"a20eb51b_4b54d75d","updated":"2022-12-02 07:21:28.000000000","message":"recheck nova ceph test volume","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"1b8829a5caf71a084bf6a7eaf73274a37ffd3cc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"539022f2_51c79db1","updated":"2022-12-02 09:53:37.000000000","message":"recheck nova ceph tests","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"759f6872f45bf252d363e57469d1273d13b44316","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"387dc452_55b45145","updated":"2022-12-03 09:44:23.000000000","message":"recheck nova live migration job failed (unrelated)","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"66650c966f3acf6004189eafafe7a26f4f682813","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"da647859_4d68403c","updated":"2022-12-02 07:18:17.000000000","message":"recheck tempest test_volume failed","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"c1425db6e2ae90823b240bc849d3fbcf9709ae49","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"0901f0bb_31987818","updated":"2022-12-03 01:24:11.000000000","message":"recheck test_vgpu.VGPUTests","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"20eb455c0c6311beadeac8eedc32679269146a57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"597347c7_3147d51a","updated":"2022-12-01 11:08:13.000000000","message":"recheck volume backed known issue","commit_id":"c8d5397b0a671fddfa9b9c27bc7790a439a18caf"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"58ca552df620184b3b671401971c383e4c64f6b8","unresolved":true,"context_lines":[{"line_number":1354,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":1355,"context_line":"                        \u0027createImage\u0027, id)"},{"line_number":1356,"context_line":"        except exception.InstanceQuiesceFailed as err:"},{"line_number":1357,"context_line":"            raise exc.HTTPConflict(explanation\u003derr.format_message())"},{"line_number":1358,"context_line":"        except exception.Invalid as err:"},{"line_number":1359,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.format_message())"},{"line_number":1360,"context_line":"        except exception.OverQuota as e:"}],"source_content_type":"text/x-python","patch_set":12,"id":"e3e363e3_aed3192e","line":1357,"range":{"start_line":1357,"start_character":22,"end_line":1357,"end_character":34},"updated":"2022-11-14 08:50:56.000000000","message":"works for me, it returns a 409.","commit_id":"45fb55397f88b18dfd6044652679d06e68de0e53"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1e304cfd28e4ce53b6fa088efb800a92996eab2b","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":1355,"context_line":"                        \u0027createImage\u0027, id)"},{"line_number":1356,"context_line":"        except exception.InstanceQuiesceFailed as err:"},{"line_number":1357,"context_line":"            raise exc.HTTPConflict(explanation\u003derr.format_message())"},{"line_number":1358,"context_line":"        except exception.Invalid as err:"},{"line_number":1359,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.format_message())"},{"line_number":1360,"context_line":"        except exception.OverQuota as e:"}],"source_content_type":"text/x-python","patch_set":12,"id":"e70aa026_b76fb960","line":1357,"range":{"start_line":1357,"start_character":22,"end_line":1357,"end_character":34},"in_reply_to":"e3e363e3_aed3192e","updated":"2022-12-01 08:17:52.000000000","message":"Ack","commit_id":"45fb55397f88b18dfd6044652679d06e68de0e53"}],"nova/exception.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4f8fee6f92a1159f727557c8a7a3fe945d81be0e","unresolved":true,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"class InstanceQuiesceFailed(Invalid):"},{"line_number":211,"context_line":"    msg_fmt \u003d _(\"Failed to instance quiescing: %(reason)s\")"},{"line_number":212,"context_line":"    code \u003d 409"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b052b028_b1429311","line":211,"range":{"start_line":211,"start_character":17,"end_line":211,"end_character":45},"updated":"2022-08-19 09:19:45.000000000","message":"\"Instance quiescing failed:  %(reason)s\"\n\nor \n\n\"Failed to quiesce instance: %(reason)s\"","commit_id":"895cc3c45135f07e7fc1907e79a632e7be3b79ae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c68593ba3590fe4eed553fe647bab3bc52270cc8","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"class InstanceQuiesceFailed(Invalid):"},{"line_number":211,"context_line":"    msg_fmt \u003d _(\"Failed to instance quiescing: %(reason)s\")"},{"line_number":212,"context_line":"    code \u003d 409"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"6ec057d4_c8bda5c0","line":211,"range":{"start_line":211,"start_character":17,"end_line":211,"end_character":45},"in_reply_to":"b052b028_b1429311","updated":"2022-08-19 12:45:45.000000000","message":"Done","commit_id":"895cc3c45135f07e7fc1907e79a632e7be3b79ae"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"dda2aa87bc364d8286a921f7895909796daefcde","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"class InstanceQuiesceFailed(Invalid):"},{"line_number":211,"context_line":"    msg_fmt \u003d _(\"Failed to instance quiescing: %(reason)s\")"},{"line_number":212,"context_line":"    code \u003d 409"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ec1e8a9e_2616212a","line":211,"range":{"start_line":211,"start_character":17,"end_line":211,"end_character":45},"in_reply_to":"b052b028_b1429311","updated":"2022-08-24 15:45:49.000000000","message":"Done","commit_id":"895cc3c45135f07e7fc1907e79a632e7be3b79ae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4f8fee6f92a1159f727557c8a7a3fe945d81be0e","unresolved":true,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"class InstanceQuiesceFailed(Invalid):"},{"line_number":211,"context_line":"    msg_fmt \u003d _(\"Failed to instance quiescing: %(reason)s\")"},{"line_number":212,"context_line":"    code \u003d 409"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"class InvalidConfiguration(Invalid):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bc5309af_fdba839f","line":212,"updated":"2022-08-19 09:19:45.000000000","message":"+1 thanks for making this a 409","commit_id":"895cc3c45135f07e7fc1907e79a632e7be3b79ae"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"dda2aa87bc364d8286a921f7895909796daefcde","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"class InstanceQuiesceFailed(Invalid):"},{"line_number":211,"context_line":"    msg_fmt \u003d _(\"Failed to instance quiescing: %(reason)s\")"},{"line_number":212,"context_line":"    code \u003d 409"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"class InvalidConfiguration(Invalid):"}],"source_content_type":"text/x-python","patch_set":2,"id":"744119c7_e7b36ecb","line":212,"in_reply_to":"bc5309af_fdba839f","updated":"2022-08-24 15:45:49.000000000","message":"Ack","commit_id":"895cc3c45135f07e7fc1907e79a632e7be3b79ae"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c68593ba3590fe4eed553fe647bab3bc52270cc8","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"class InstanceQuiesceFailed(Invalid):"},{"line_number":211,"context_line":"    msg_fmt \u003d _(\"Failed to instance quiescing: %(reason)s\")"},{"line_number":212,"context_line":"    code \u003d 409"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"class InvalidConfiguration(Invalid):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d116f606_965bc400","line":212,"in_reply_to":"bc5309af_fdba839f","updated":"2022-08-19 12:45:45.000000000","message":"Ack","commit_id":"895cc3c45135f07e7fc1907e79a632e7be3b79ae"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"58ca552df620184b3b671401971c383e4c64f6b8","unresolved":true,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"class InstanceQuiesceFailed(Invalid):"},{"line_number":221,"context_line":"    msg_fmt \u003d _(\"Failed to quiesce instance: %(reason)s\")"},{"line_number":222,"context_line":"    code \u003d 409"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"class InvalidConfiguration(Invalid):"}],"source_content_type":"text/x-python","patch_set":12,"id":"926a8cba_ba0bdd61","line":222,"range":{"start_line":222,"start_character":0,"end_line":222,"end_character":14},"updated":"2022-11-14 08:50:56.000000000","message":"nit : unnecessary","commit_id":"45fb55397f88b18dfd6044652679d06e68de0e53"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"06af32ba0ca23415db130b8157b0d00f491ba0eb","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"class InstanceQuiesceFailed(Invalid):"},{"line_number":221,"context_line":"    msg_fmt \u003d _(\"Failed to quiesce instance: %(reason)s\")"},{"line_number":222,"context_line":"    code \u003d 409"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"class InvalidConfiguration(Invalid):"}],"source_content_type":"text/x-python","patch_set":12,"id":"be7365c7_10f3ace2","line":222,"range":{"start_line":222,"start_character":0,"end_line":222,"end_character":14},"in_reply_to":"926a8cba_ba0bdd61","updated":"2022-12-03 06:21:02.000000000","message":"Ack","commit_id":"45fb55397f88b18dfd6044652679d06e68de0e53"}],"nova/tests/functional/regressions/test_bug_1980720.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c9f7c1e5be41d9bc9ec440654fcd6fdf25773a4e","unresolved":true,"context_lines":[{"line_number":57,"context_line":"        with mock.patch.object(nova_fixtures.libvirt.Domain,"},{"line_number":58,"context_line":"                \u0027fsFreeze\u0027) as mock_obj:"},{"line_number":59,"context_line":"            ex \u003d nova_fixtures.libvirt.libvirtError(\"Error\")"},{"line_number":60,"context_line":"            ex.err \u003d (nova_fixtures.libvirt.VIR_ERR_AGENT_UNRESPONSIVE,)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"            mock_obj.side_effect \u003d ex"},{"line_number":63,"context_line":"            excep \u003d self.assertRaises("}],"source_content_type":"text/x-python","patch_set":11,"id":"c78c1387_7e1b6dd9","line":60,"updated":"2022-10-17 12:55:30.000000000","message":"you need to seet the error code to 86\nsicne that is what you are checkign for here\nhttps://review.opendev.org/c/openstack/nova/+/852171/11/nova/virt/libvirt/driver.py#3254","commit_id":"5f4417d7b4b5a55cbbc5aec5f52cb8413a604fe0"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"be2eb613a78543f8daac87d4bc425da663165934","unresolved":true,"context_lines":[{"line_number":57,"context_line":"        with mock.patch.object(nova_fixtures.libvirt.Domain,"},{"line_number":58,"context_line":"                \u0027fsFreeze\u0027) as mock_obj:"},{"line_number":59,"context_line":"            ex \u003d nova_fixtures.libvirt.libvirtError(\"Error\")"},{"line_number":60,"context_line":"            ex.err \u003d (nova_fixtures.libvirt.VIR_ERR_AGENT_UNRESPONSIVE,)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"            mock_obj.side_effect \u003d ex"},{"line_number":63,"context_line":"            excep \u003d self.assertRaises("}],"source_content_type":"text/x-python","patch_set":11,"id":"d75b84ee_a5e96c44","line":60,"in_reply_to":"c78c1387_7e1b6dd9","updated":"2022-10-18 12:56:02.000000000","message":"yes, this constant value is 86 https://github.com/openstack/nova/blob/master/nova/tests/fixtures/libvirt.py#L164","commit_id":"5f4417d7b4b5a55cbbc5aec5f52cb8413a604fe0"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"06af32ba0ca23415db130b8157b0d00f491ba0eb","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        with mock.patch.object(nova_fixtures.libvirt.Domain,"},{"line_number":58,"context_line":"                \u0027fsFreeze\u0027) as mock_obj:"},{"line_number":59,"context_line":"            ex \u003d nova_fixtures.libvirt.libvirtError(\"Error\")"},{"line_number":60,"context_line":"            ex.err \u003d (nova_fixtures.libvirt.VIR_ERR_AGENT_UNRESPONSIVE,)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"            mock_obj.side_effect \u003d ex"},{"line_number":63,"context_line":"            excep \u003d self.assertRaises("}],"source_content_type":"text/x-python","patch_set":11,"id":"e1506d51_01427570","line":60,"in_reply_to":"d75b84ee_a5e96c44","updated":"2022-12-03 06:21:02.000000000","message":"Done","commit_id":"5f4417d7b4b5a55cbbc5aec5f52cb8413a604fe0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c9f7c1e5be41d9bc9ec440654fcd6fdf25773a4e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"f3b0c91b_355dbb22","line":68,"updated":"2022-10-17 12:55:30.000000000","message":"so this should be a 409\nhttps://review.opendev.org/c/openstack/nova/+/852171/11/nova/exception.py#220\n\nand we shoudl assert that \"Failed to quiesce instance\" is i in the message body.","commit_id":"5f4417d7b4b5a55cbbc5aec5f52cb8413a604fe0"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"06af32ba0ca23415db130b8157b0d00f491ba0eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"6dfcf054_d0a07a2e","line":68,"in_reply_to":"4c8d421e_fbd554f4","updated":"2022-12-03 06:21:02.000000000","message":"Done","commit_id":"5f4417d7b4b5a55cbbc5aec5f52cb8413a604fe0"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"be2eb613a78543f8daac87d4bc425da663165934","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4c8d421e_fbd554f4","line":68,"in_reply_to":"f3b0c91b_355dbb22","updated":"2022-10-18 12:56:02.000000000","message":"Handled exception in API, now its returning correct 409","commit_id":"5f4417d7b4b5a55cbbc5aec5f52cb8413a604fe0"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"0c267dacd65f7b4496cff6476e73bae3d83010ec","unresolved":true,"context_lines":[{"line_number":3245,"context_line":"            if \u0027QEMU guest agent is not connected\u0027 in err_msg:"},{"line_number":3246,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3247,"context_line":"                    \" inside the instance.\")"},{"line_number":3248,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3249,"context_line":"            else:"},{"line_number":3250,"context_line":"                raise exception.InternalError(msg)"},{"line_number":3251,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7edf36e1_24f72aa6","line":3248,"range":{"start_line":3248,"start_character":32,"end_line":3248,"end_character":45},"updated":"2022-08-04 13:52:13.000000000","message":"Should we also catch this at https://github.com/openstack/nova/blob/512fbdfa9933f2e9b48bcded537ffb394979b24b/nova/api/openstack/compute/servers.py#L1339 ?","commit_id":"16a1b78915287b96a0a4857a9deb9679cc2ff288"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"dda2aa87bc364d8286a921f7895909796daefcde","unresolved":false,"context_lines":[{"line_number":3245,"context_line":"            if \u0027QEMU guest agent is not connected\u0027 in err_msg:"},{"line_number":3246,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3247,"context_line":"                    \" inside the instance.\")"},{"line_number":3248,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3249,"context_line":"            else:"},{"line_number":3250,"context_line":"                raise exception.InternalError(msg)"},{"line_number":3251,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"c3289f7a_72f21887","line":3248,"range":{"start_line":3248,"start_character":32,"end_line":3248,"end_character":45},"in_reply_to":"2200dd09_e1c4f954","updated":"2022-08-24 15:45:49.000000000","message":"Done","commit_id":"16a1b78915287b96a0a4857a9deb9679cc2ff288"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b4d0f5c942dfad1408f9296eb6f806c33e2a75f9","unresolved":true,"context_lines":[{"line_number":3245,"context_line":"            if \u0027QEMU guest agent is not connected\u0027 in err_msg:"},{"line_number":3246,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3247,"context_line":"                    \" inside the instance.\")"},{"line_number":3248,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3249,"context_line":"            else:"},{"line_number":3250,"context_line":"                raise exception.InternalError(msg)"},{"line_number":3251,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ef71530b_03f56d3e","line":3248,"range":{"start_line":3248,"start_character":32,"end_line":3248,"end_character":45},"in_reply_to":"2caf6bf0_cc35dd68","updated":"2022-08-08 11:03:53.000000000","message":"this possible should be a 409 eventually but yes I agree that adding a \nInstanceQuiesceFailed exception makes sense.\n\nthe image is declaring that guest must have its files system frozen and ware are unable to do so because the QEMU guest agent is not in stall.\n\nin the specific case of the bug the image properly was likely set incorrectly on the image since the expectation is that if you set that then teh guest agent will be installed in the image.\n\n\nits not a 400 as the request is valid but the state of the vm does not full file the preconditions in this case that the guest agent is installed in the image as required by \n\n$ openstack image create --disk-format raw --container-format bare \\\n      --property description\u003dtest --property hw_disk_bus\u003dscsi \\\n      --property hw_qemu_guest_agent\u003dyes \\\n      --property hw_scsi_model\u003dvirtio-scsi \\\n      --property os_require_quiesce\u003dyes --file ubuntu2004.img test-image\n      \nso I think 409 conflict is correct as its in an invalid state for the operation given the the requirement to quiesce the disk that has explicitly been imposed.","commit_id":"16a1b78915287b96a0a4857a9deb9679cc2ff288"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fb85ddd0b6fc77e340a55721c27b05717074bd3c","unresolved":true,"context_lines":[{"line_number":3245,"context_line":"            if \u0027QEMU guest agent is not connected\u0027 in err_msg:"},{"line_number":3246,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3247,"context_line":"                    \" inside the instance.\")"},{"line_number":3248,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3249,"context_line":"            else:"},{"line_number":3250,"context_line":"                raise exception.InternalError(msg)"},{"line_number":3251,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"2caf6bf0_cc35dd68","line":3248,"range":{"start_line":3248,"start_character":32,"end_line":3248,"end_character":45},"in_reply_to":"7edf36e1_24f72aa6","updated":"2022-08-08 09:18:30.000000000","message":"1) I would use something more specific than NovaException here. I would add a new exception like InstanceQuiesceFailed(Invalid) (similarly to the existing InstanceQuiesceNotSupported exception)\n2) then most probably in the API layer we don\u0027t need to catch anything extra as the Invalid base exception is translated to HTTP 400 response automatically. (need test cases to see if the automatic translation works for each affected action as I\u0027m not 100% sure)\n3) to answer you question, as quiesce is used there that code path is affected, but if you follow the above points then you probably don\u0027t need to add specific code there.","commit_id":"16a1b78915287b96a0a4857a9deb9679cc2ff288"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4f8fee6f92a1159f727557c8a7a3fe945d81be0e","unresolved":false,"context_lines":[{"line_number":3245,"context_line":"            if \u0027QEMU guest agent is not connected\u0027 in err_msg:"},{"line_number":3246,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3247,"context_line":"                    \" inside the instance.\")"},{"line_number":3248,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3249,"context_line":"            else:"},{"line_number":3250,"context_line":"                raise exception.InternalError(msg)"},{"line_number":3251,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"2200dd09_e1c4f954","line":3248,"range":{"start_line":3248,"start_character":32,"end_line":3248,"end_character":45},"in_reply_to":"af3c8378_a20fd5b4","updated":"2022-08-19 09:19:45.000000000","message":"Done","commit_id":"16a1b78915287b96a0a4857a9deb9679cc2ff288"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fae595780443d460accd9958294a0dd5552c6d0e","unresolved":true,"context_lines":[{"line_number":3245,"context_line":"            if \u0027QEMU guest agent is not connected\u0027 in err_msg:"},{"line_number":3246,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3247,"context_line":"                    \" inside the instance.\")"},{"line_number":3248,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3249,"context_line":"            else:"},{"line_number":3250,"context_line":"                raise exception.InternalError(msg)"},{"line_number":3251,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"af3c8378_a20fd5b4","line":3248,"range":{"start_line":3248,"start_character":32,"end_line":3248,"end_character":45},"in_reply_to":"ef71530b_03f56d3e","updated":"2022-08-09 07:25:50.000000000","message":"ack, 409 works for me","commit_id":"16a1b78915287b96a0a4857a9deb9679cc2ff288"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a9159ac7ed300a04f48cc9b2eafeb1fad57e1205","unresolved":true,"context_lines":[{"line_number":3251,"context_line":"                   % {\u0027instance_name\u0027: instance.name,"},{"line_number":3252,"context_line":"                      \u0027error_code\u0027: error_code, \u0027ex\u0027: err_msg})"},{"line_number":3253,"context_line":""},{"line_number":3254,"context_line":"            if \u0027QEMU guest agent is not connected\u0027 in err_msg:"},{"line_number":3255,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3256,"context_line":"                    \" inside the instance.\")"},{"line_number":3257,"context_line":"                raise exception.InstanceQuiesceFailed(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"8ac86a85_2583a1b2","line":3254,"updated":"2022-09-06 09:06:44.000000000","message":"You should not match strings if possible as these string might change without any notice. If you look at the bugreport then the stack trace there states that:\n  nova.exception.InternalError: Error from libvirt while quiescing instance-001f899f: [Error Code 86] Guest agent is not responding: QEMU guest agent is not connected\n\nSo we know that libvirt has a specific error code for this issue. 86. This is less likely to change without notice.\n\nThere is a constant for it in the libvirt library based on https://libvirt.org/docs/libvirt-appdev-guide-python/en-US/html/libvirt_application_development_guide_using_python-Error_Handling.html","commit_id":"e34a75a729f440096ed12623f4394f9bfe6b8a1d"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"2802fda796a7edd77f0f71c193e350cd051fa0ad","unresolved":false,"context_lines":[{"line_number":3251,"context_line":"                   % {\u0027instance_name\u0027: instance.name,"},{"line_number":3252,"context_line":"                      \u0027error_code\u0027: error_code, \u0027ex\u0027: err_msg})"},{"line_number":3253,"context_line":""},{"line_number":3254,"context_line":"            if \u0027QEMU guest agent is not connected\u0027 in err_msg:"},{"line_number":3255,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3256,"context_line":"                    \" inside the instance.\")"},{"line_number":3257,"context_line":"                raise exception.InstanceQuiesceFailed(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a9da58d_64c24cdc","line":3254,"in_reply_to":"8ac86a85_2583a1b2","updated":"2022-10-12 11:57:33.000000000","message":"Done","commit_id":"e34a75a729f440096ed12623f4394f9bfe6b8a1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a9159ac7ed300a04f48cc9b2eafeb1fad57e1205","unresolved":true,"context_lines":[{"line_number":3254,"context_line":"            if \u0027QEMU guest agent is not connected\u0027 in err_msg:"},{"line_number":3255,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3256,"context_line":"                    \" inside the instance.\")"},{"line_number":3257,"context_line":"                raise exception.InstanceQuiesceFailed(reason\u003dmsg)"},{"line_number":3258,"context_line":"            else:"},{"line_number":3259,"context_line":"                raise exception.InternalError(msg)"},{"line_number":3260,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"75c2b395_e1384ed0","line":3257,"updated":"2022-09-06 09:06:44.000000000","message":"You are raising a new exception type here so you need to make sure that this is properly handle somewhere higher in the call stack. I would add a functional test that injects this error on the libvirt driver level and assert that the API response is not HTTP 500 any more.","commit_id":"e34a75a729f440096ed12623f4394f9bfe6b8a1d"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"63167dd710dc74b45e011815e4dc957a766c0f64","unresolved":false,"context_lines":[{"line_number":3254,"context_line":"            if \u0027QEMU guest agent is not connected\u0027 in err_msg:"},{"line_number":3255,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3256,"context_line":"                    \" inside the instance.\")"},{"line_number":3257,"context_line":"                raise exception.InstanceQuiesceFailed(reason\u003dmsg)"},{"line_number":3258,"context_line":"            else:"},{"line_number":3259,"context_line":"                raise exception.InternalError(msg)"},{"line_number":3260,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"d8473e6a_be0f0019","line":3257,"in_reply_to":"75c2b395_e1384ed0","updated":"2022-10-17 09:08:51.000000000","message":"added regression functional test\nhttps://review.opendev.org/c/openstack/nova/+/861357","commit_id":"e34a75a729f440096ed12623f4394f9bfe6b8a1d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2a39d88c784ffd21da5f221a35f6eaefa551937","unresolved":true,"context_lines":[{"line_number":3251,"context_line":"                   % {\u0027instance_name\u0027: instance.name,"},{"line_number":3252,"context_line":"                      \u0027error_code\u0027: error_code, \u0027ex\u0027: err_msg})"},{"line_number":3253,"context_line":""},{"line_number":3254,"context_line":"            if error_code \u003d\u003d 86:"},{"line_number":3255,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3256,"context_line":"                    \" inside the instance.\")"},{"line_number":3257,"context_line":"                raise exception.InstanceQuiesceFailed(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"209bc538_244a17eb","line":3254,"updated":"2022-11-29 10:11:30.000000000","message":"Here you have the list of constants that is exposed in the python binding[1]. So you can simply use\n\n    if error_code \u003d\u003d libvirt.​VIR_ERR_AGENT_UNRESPONSIVE:\n    \ninstead of the magic number 86.\n\n[1] https://libvirt.org/docs/libvirt-appdev-guide-python/en-US/html/libvirt_application_development_guide_using_python-Error_Handling.html","commit_id":"45fb55397f88b18dfd6044652679d06e68de0e53"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"06af32ba0ca23415db130b8157b0d00f491ba0eb","unresolved":false,"context_lines":[{"line_number":3251,"context_line":"                   % {\u0027instance_name\u0027: instance.name,"},{"line_number":3252,"context_line":"                      \u0027error_code\u0027: error_code, \u0027ex\u0027: err_msg})"},{"line_number":3253,"context_line":""},{"line_number":3254,"context_line":"            if error_code \u003d\u003d 86:"},{"line_number":3255,"context_line":"                msg +\u003d (\", libvirt cannot connect to the qemu-guest-agent\""},{"line_number":3256,"context_line":"                    \" inside the instance.\")"},{"line_number":3257,"context_line":"                raise exception.InstanceQuiesceFailed(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"e6054a1b_09f8c665","line":3254,"in_reply_to":"209bc538_244a17eb","updated":"2022-12-03 06:21:02.000000000","message":"Done","commit_id":"45fb55397f88b18dfd6044652679d06e68de0e53"}]}
