)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"8c8ff128d6dcd669599bfe9718b1bbfe357bbc98","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Add check_instance_state validation to lock API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The lock API makes instance action event record in the beginning."},{"line_number":10,"context_line":"The instance action table has foriegn key to the instance uuid in"},{"line_number":11,"context_line":"the instances table. If the lock API is called before instance record"},{"line_number":12,"context_line":"is not registered in the main DB, the lock API returns 500 Internal"},{"line_number":13,"context_line":"Error."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fbe7dfab_3f23177c","line":10,"range":{"start_line":10,"start_character":30,"end_line":10,"end_character":37},"updated":"2025-04-03 07:07:24.000000000","message":"typo foreign","commit_id":"1505f098e24d91722e14b31b2aa66c64140725e6"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"2f2bb2dc7e83563fac52a001e543768b0eb9398b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add check_instance_state validation to lock API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The lock API makes instance action event record in the beginning."},{"line_number":10,"context_line":"The instance action table has foriegn key to the instance uuid in"},{"line_number":11,"context_line":"the instances table. If the lock API is called before instance record"},{"line_number":12,"context_line":"is not registered in the main DB, the lock API returns 500 Internal"},{"line_number":13,"context_line":"Error."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"2b5aff08_ca609285","line":10,"range":{"start_line":10,"start_character":30,"end_line":10,"end_character":37},"in_reply_to":"fbe7dfab_3f23177c","updated":"2025-04-03 08:46:18.000000000","message":"Done","commit_id":"1505f098e24d91722e14b31b2aa66c64140725e6"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"8c8ff128d6dcd669599bfe9718b1bbfe357bbc98","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7f84fb24_efb2a9ad","updated":"2025-04-03 07:07:24.000000000","message":"Hi Masahito, thanks for fixing this bug.\nA soft -1 just to notify you about a minor typo.\nOtherwise lgtm. 👍️","commit_id":"1505f098e24d91722e14b31b2aa66c64140725e6"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"2f2bb2dc7e83563fac52a001e543768b0eb9398b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"789e9525_93c85f87","in_reply_to":"7f84fb24_efb2a9ad","updated":"2025-04-03 08:46:18.000000000","message":"Thank for the quick reviewing 😊","commit_id":"1505f098e24d91722e14b31b2aa66c64140725e6"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"ff16b476b3a3e9f5f4e0cf804fe9b75df065a1ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"76edc7b8_c8a60899","updated":"2025-04-03 14:21:43.000000000","message":"recheck nova-ceph-multistore","commit_id":"5f5ec41f4746263e2bef81efb01cff3c75d6719b"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"e8787f9761ba935569f78488ea51a9800ee793cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fd4f6e20_c5de93f8","updated":"2025-11-27 14:44:36.000000000","message":"Do shelved servers have a launched at? I\u0027m wondering because https://docs.openstack.org/api-guide/compute/server_concepts.html#server-actions states that `unshelve` is one of the actions that\u0027s prevented, so I\u0027d assume I should be able to lock a shelved server.","commit_id":"3042858006ee033fdff202c0cac8f216113454ad"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a44db78b9ba21e67460fc88edb3f00325035d75b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ed9e907e_b64cfdbc","updated":"2025-11-27 15:25:44.000000000","message":"could you please create a functional reproducer that shows the original issues in a separate commit then add this patch top of that?","commit_id":"3042858006ee033fdff202c0cac8f216113454ad"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"1c76bd11fa7cae898e8bc583eb2c4a534e54d5a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cadec42a_d11f5733","in_reply_to":"96e27a7c_6e0e27f5","updated":"2025-12-16 04:13:52.000000000","message":"@gibizer@gmail.com @kajinamit@oss.nttdata.com Thanks. Submitted the bug reproducer commit and rebased this patch on top of it.","commit_id":"3042858006ee033fdff202c0cac8f216113454ad"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"75c7d86341da7fd037845f1f957170cae4380887","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"96e27a7c_6e0e27f5","in_reply_to":"ed9e907e_b64cfdbc","updated":"2025-11-27 18:20:12.000000000","message":"+1 (adding this to mark this comment unresolved)\nAdding a reproducer test to nova/tests/functional/regressions to demonstrate the problem and validate the issue is resolved in this change would be useful, especially seeing that the current code does not really simulate the instance being absent from cell dbs.","commit_id":"3042858006ee033fdff202c0cac8f216113454ad"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"748aa27b1b605bba7304fe54ce20161112eb2003","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"96babff9_871a15cf","in_reply_to":"fd4f6e20_c5de93f8","updated":"2025-11-27 15:31:26.000000000","message":"I tested\n 1. Creating an instance\n 2. Shelve the instance\nand see launched_at is kept after shelve completes. (Grepping the code shows that launched_at is only set when an instance is launched and has no chance of reset)","commit_id":"3042858006ee033fdff202c0cac8f216113454ad"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"2838982272855e83babaa755fb4a173cc10f5627","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9b1fb13a_e3bc32e8","updated":"2026-07-14 04:20:02.000000000","message":"Thanks for the comment.","commit_id":"33c01eb54bae0ac60ee1bf77330117ab4aea3588"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"580115530e844ce98a1e945f5a3c90c86af11ba2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7ed0dc07_2b78c452","updated":"2026-05-29 16:38:07.000000000","message":"it would be nice to have a short release note for this as well","commit_id":"33c01eb54bae0ac60ee1bf77330117ab4aea3588"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9c12761f7b697a18d71f76c1dbe78e5cc8d8fdfa","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a519c08d_0206097c","in_reply_to":"7ed0dc07_2b78c452","updated":"2026-05-29 16:40:03.000000000","message":"actully it would also be good to update the api ref to add a note that instance action shoudl only be performed on isntace after the inital isntance creation has completed as well to properly docuemnt this precondition in the api ref.","commit_id":"33c01eb54bae0ac60ee1bf77330117ab4aea3588"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"2838982272855e83babaa755fb4a173cc10f5627","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a95a0c7a_b523743e","in_reply_to":"a519c08d_0206097c","updated":"2026-07-14 04:20:02.000000000","message":"Done","commit_id":"33c01eb54bae0ac60ee1bf77330117ab4aea3588"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2238164caa326e1e2cebfb9ed45a664b7370a936","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8ee75ffd_d3715fc3","updated":"2026-07-14 13:12:18.000000000","message":"minor nit in the api ref but i think directionally this looks good\nbut we need to improve the regression test as i noted in the previous patch.\noverall the unit test coverage looks good in this patch as does the release note.","commit_id":"07148105110301dae1279cca820109788d5b12fb"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"af8c920fccf031b16ad4e7d392bee63d598e94e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"267bc12c_c7be59ae","updated":"2026-07-14 06:52:53.000000000","message":"recheck nova-alt-configurations nova-grenade-multinode","commit_id":"07148105110301dae1279cca820109788d5b12fb"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"914c153adcd79fd0686598b7ac82035f95bac963","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9164d965_7f8ec19c","updated":"2026-07-15 14:18:45.000000000","message":"recheck nova-alt-configurations","commit_id":"7bec05f57c95ec57871d37d2c09c0a2d2139b352"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"ff5b99198bd06dc7d20a54e9f9e544e78a5ef456","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3956cd24_0eacb49c","updated":"2026-07-16 01:03:43.000000000","message":"recheck openstack-tox-cover","commit_id":"7bec05f57c95ec57871d37d2c09c0a2d2139b352"}],"api-ref/source/servers-admin-action.inc":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2238164caa326e1e2cebfb9ed45a664b7370a936","unresolved":true,"context_lines":[{"line_number":11,"context_line":"reset networking on, reset the state of a server,"},{"line_number":12,"context_line":"and evacuate a server from a failed host to a new host."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"You can perform any action on a server once the server completes its initial"},{"line_number":15,"context_line":"server boot."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Inject Network Information (injectNetworkInfo Action)"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-c++src","patch_set":6,"id":"cd77aeb7_98143828","line":15,"range":{"start_line":14,"start_character":0,"end_line":15,"end_character":12},"updated":"2026-07-14 13:12:18.000000000","message":"i woudl reverse this call out\n```suggestion\nA precondition of calling the server actions API is that the server\nhas completed its initial creation, attempts to use server actions\nin a server that is still in progress can result in a client error\ndepening on how far the the instance creation workflow has progressed.\n```","commit_id":"07148105110301dae1279cca820109788d5b12fb"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"c34ca9e2ff1e703f35340364361dd50d897bcd5c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"reset networking on, reset the state of a server,"},{"line_number":12,"context_line":"and evacuate a server from a failed host to a new host."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"You can perform any action on a server once the server completes its initial"},{"line_number":15,"context_line":"server boot."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Inject Network Information (injectNetworkInfo Action)"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-c++src","patch_set":6,"id":"c27df324_32d29b7f","line":15,"range":{"start_line":14,"start_character":0,"end_line":15,"end_character":12},"in_reply_to":"cd77aeb7_98143828","updated":"2026-07-15 07:08:04.000000000","message":"Done","commit_id":"07148105110301dae1279cca820109788d5b12fb"}],"nova/api/openstack/compute/admin_actions.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2238164caa326e1e2cebfb9ed45a664b7370a936","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                state_error, \u0027injectNetworkInfo\u0027, id)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @wsgi.response(202)"},{"line_number":67,"context_line":"    @wsgi.expected_errors((404, 409))"},{"line_number":68,"context_line":"    @wsgi.action(\u0027os-resetState\u0027)"},{"line_number":69,"context_line":"    @validation.schema(schema.reset_state)"},{"line_number":70,"context_line":"    @validation.response_body_schema(schema.reset_state_response)"}],"source_content_type":"text/x-python","patch_set":6,"id":"0fc341ed_b2d9cf43","line":67,"updated":"2026-07-14 13:12:18.000000000","message":"so while 409 is the correct error code to use semanticly\n\nits not one of the errorcode allowed to be intoduced if it wis previously unused by an endpoint\n\n\nhttps://docs.openstack.org/nova/latest/contributor/microversions.html#id3:~:text\u003d1%5D-,When,415,-%2E\n\nwith that said other instance actions already return a 409\n\nso i think this is valid and correct but its boarderline.\n\nits only correct becauyse\n\nPOST /servers/{server_id}/action can return 409 in other cases today. if it did not we would have to return a 404 here.\n\na 404 i not nessiarly incorrect either or a 400 becuase calling reset-state on a server that is still being created will break it in an unrecoverabl way.","commit_id":"07148105110301dae1279cca820109788d5b12fb"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"c34ca9e2ff1e703f35340364361dd50d897bcd5c","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                state_error, \u0027injectNetworkInfo\u0027, id)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @wsgi.response(202)"},{"line_number":67,"context_line":"    @wsgi.expected_errors((404, 409))"},{"line_number":68,"context_line":"    @wsgi.action(\u0027os-resetState\u0027)"},{"line_number":69,"context_line":"    @validation.schema(schema.reset_state)"},{"line_number":70,"context_line":"    @validation.response_body_schema(schema.reset_state_response)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ebd28f1_e45b0162","line":67,"in_reply_to":"0fc341ed_b2d9cf43","updated":"2026-07-15 07:08:04.000000000","message":"All other action API returns 409 now.\n\nThe check_instance_state raises InstanceInvalidState Exception and it\u0027s converted to HTTPConflict 409 by the raise_http_conflict_for_instance_invalid_state.\n\nhttps://opendev.org/openstack/nova/src/branch/master/nova/api/openstack/common.py#L330-L346\n\nSample link for the stop server action\n\nhttps://opendev.org/openstack/nova/src/branch/master/nova/api/openstack/compute/servers.py#L1570-L1573","commit_id":"07148105110301dae1279cca820109788d5b12fb"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"580115530e844ce98a1e945f5a3c90c86af11ba2","unresolved":true,"context_lines":[{"line_number":4929,"context_line":"        return self.compute_rpcapi.get_console_output(context,"},{"line_number":4930,"context_line":"                instance\u003dinstance, tail_length\u003dtail_length)"},{"line_number":4931,"context_line":""},{"line_number":4932,"context_line":"    @check_instance_state(must_have_launched\u003dTrue)"},{"line_number":4933,"context_line":"    def lock(self, context, instance, reason\u003dNone):"},{"line_number":4934,"context_line":"        \"\"\"Lock the given instance.\"\"\""},{"line_number":4935,"context_line":"        # Only update the lock if we are an admin (non-owner)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bb3dba8f_416bd7db","line":4932,"range":{"start_line":4932,"start_character":4,"end_line":4932,"end_character":50},"updated":"2026-05-29 16:38:07.000000000","message":"this looks like a valid fix to me\n\nwe need to check all the instance actiosn to ensure they \nhave either    @check_instance_state or @check_instance_host\nas approate to gurard agsint this in general.\n\nam i dont have time to do that right now but if this si the only instnace action that is ungarued then i think this is fine to proceed if not we shuld likely fix the rest in the same patch.","commit_id":"33c01eb54bae0ac60ee1bf77330117ab4aea3588"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"2838982272855e83babaa755fb4a173cc10f5627","unresolved":false,"context_lines":[{"line_number":4929,"context_line":"        return self.compute_rpcapi.get_console_output(context,"},{"line_number":4930,"context_line":"                instance\u003dinstance, tail_length\u003dtail_length)"},{"line_number":4931,"context_line":""},{"line_number":4932,"context_line":"    @check_instance_state(must_have_launched\u003dTrue)"},{"line_number":4933,"context_line":"    def lock(self, context, instance, reason\u003dNone):"},{"line_number":4934,"context_line":"        \"\"\"Lock the given instance.\"\"\""},{"line_number":4935,"context_line":"        # Only update the lock if we are an admin (non-owner)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6b33ab_66dd1ee6","line":4932,"range":{"start_line":4932,"start_character":4,"end_line":4932,"end_character":50},"in_reply_to":"bb3dba8f_416bd7db","updated":"2026-07-14 04:20:02.000000000","message":"The four action APIs don\u0027t have either @check_instance_state or @check_instance_host.\n\n- lock action API\n- unlock action API\n- inject networkinfo action API\n- reset state action API\n\nAdded the decorator to the APIs.","commit_id":"33c01eb54bae0ac60ee1bf77330117ab4aea3588"}]}
