)]}'
{"watcher/applier/actions/shelve.py":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"240d71d3445890b188f2f94757d87a9e811205e9","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                    {\u0027uuid\u0027: self.instance_uuid, \u0027state\u0027: instance.vm_state},"},{"line_number":119,"context_line":"                )"},{"line_number":120,"context_line":"                return True"},{"line_number":121,"context_line":"            nova.connection.compute.unshelve_server(self.instance_uuid)"},{"line_number":122,"context_line":"            LOG.debug("},{"line_number":123,"context_line":"                \"Successfully reverted shelve action and unshelved \""},{"line_number":124,"context_line":"                \"instance %(uuid)s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"37323c1f_946ff854","line":121,"updated":"2026-08-08 03:06:46.000000000","message":"The _revert_shelve method calls nova.connection.compute.unshelve_server() directly, reaching into the raw openstacksdk connection instead of going through a NovaHelper method. Every other Nova API call in this codebase goes through nova_helper.py methods decorated with @nova_retries and @handle_n...\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: The unshelve call has no retry logic for transient connection errors, no translation of SDK exceptions to watcher exception types, and returns True immediately without waiting for the instance to become ACTIVE. If a subsequent action in the action plan depends on the instance being active, it may...\n\n**Suggestion**:\nAdd an unshelve_instance method to nova_helper.py (following the pattern of shelve_instance/stop_instance/start_instance with @nova_retries, @handle_nova_error, and wait_for_instance_state), then call that from _revert_shelve instead of accessing nova.connection.compute directly.","commit_id":"19e9f76aa18d194999cdc433f7ce5b33d3e17081"}]}
