)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b35a368f82f77a2a563ddcddd0d8ba1eacab1ad6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"01fa465c_5239f90e","updated":"2025-08-26 19:31:20.000000000","message":"It seems that we are also missing setting the default latest version in:\nhttps://github.com/openstack/python-watcherclient/blob/489d8c3e746d4c8ed6481b201f880a6e26c5bb7d/watcherclient/common/httpclient.py#L44\nwhich seems to be the default version for osc.\nI don\u0027t know too much about the client code.\nI also planning to update these version to 1.6 in another patch, so I can check that too.\nTHanks","commit_id":"1b3a0c6a79ceb60f396b35f1d3cd34deba5ebbd4"}],"doc/source/cli/details.rst":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b35a368f82f77a2a563ddcddd0d8ba1eacab1ad6","unresolved":true,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"Update action state command."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Currently, the only supported destinationstate is ``SKIPPED`` and the update will be"},{"line_number":232,"context_line":"accepted only if the action is in ``PENDING`` state."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"**Positional arguments:**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dedc15fe_41b7b5cc","line":231,"range":{"start_line":231,"start_character":30,"end_line":231,"end_character":46},"updated":"2025-08-26 19:31:20.000000000","message":"destination state","commit_id":"1b3a0c6a79ceb60f396b35f1d3cd34deba5ebbd4"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"1293701332f15f7bee1bccbdba0baad336597697","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"Update action state command."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Currently, the only supported destinationstate is ``SKIPPED`` and the update will be"},{"line_number":232,"context_line":"accepted only if the action is in ``PENDING`` state."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"**Positional arguments:**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"d9dd0123_970ddf32","line":231,"range":{"start_line":231,"start_character":30,"end_line":231,"end_character":46},"in_reply_to":"dedc15fe_41b7b5cc","updated":"2025-08-28 13:58:50.000000000","message":"Done","commit_id":"1b3a0c6a79ceb60f396b35f1d3cd34deba5ebbd4"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b35a368f82f77a2a563ddcddd0d8ba1eacab1ad6","unresolved":true,"context_lines":[{"line_number":231,"context_line":"Currently, the only supported destinationstate is ``SKIPPED`` and the update will be"},{"line_number":232,"context_line":"accepted only if the action is in ``PENDING`` state."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"**Positional arguments:**"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"``\u003caction\u003e``"},{"line_number":237,"context_line":"  UUID of the action"}],"source_content_type":"text/x-rst","patch_set":2,"id":"52f3584c_75acdd83","line":234,"range":{"start_line":234,"start_character":0,"end_line":234,"end_character":25},"updated":"2025-08-26 19:31:20.000000000","message":"Shouldn\u0027t include \u0027state\u0027 here also? at least for now is the only op available","commit_id":"1b3a0c6a79ceb60f396b35f1d3cd34deba5ebbd4"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"1293701332f15f7bee1bccbdba0baad336597697","unresolved":false,"context_lines":[{"line_number":231,"context_line":"Currently, the only supported destinationstate is ``SKIPPED`` and the update will be"},{"line_number":232,"context_line":"accepted only if the action is in ``PENDING`` state."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"**Positional arguments:**"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"``\u003caction\u003e``"},{"line_number":237,"context_line":"  UUID of the action"}],"source_content_type":"text/x-rst","patch_set":2,"id":"47db2cf9_1f05b9b4","line":234,"range":{"start_line":234,"start_character":0,"end_line":234,"end_character":25},"in_reply_to":"52f3584c_75acdd83","updated":"2025-08-28 13:58:50.000000000","message":"Done","commit_id":"1b3a0c6a79ceb60f396b35f1d3cd34deba5ebbd4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2eacafaef43e37c6ea33b18d282467b3a6d76e0e","unresolved":true,"context_lines":[{"line_number":231,"context_line":"Currently, the only supported destinationstate is ``SKIPPED`` and the update will be"},{"line_number":232,"context_line":"accepted only if the action is in ``PENDING`` state."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"**Positional arguments:**"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"``\u003caction\u003e``"},{"line_number":237,"context_line":"  UUID of the action"}],"source_content_type":"text/x-rst","patch_set":2,"id":"63a0b0ce_b21a2332","line":234,"range":{"start_line":234,"start_character":0,"end_line":234,"end_character":25},"in_reply_to":"52f3584c_75acdd83","updated":"2025-08-28 13:55:00.000000000","message":"no because its not actually a positional arg its a keyword arg --state \u003cvalue\u003e","commit_id":"1b3a0c6a79ceb60f396b35f1d3cd34deba5ebbd4"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"1e2899b7b3c219702306b8e87df565025d9d2332","unresolved":true,"context_lines":[{"line_number":241,"context_line":"``-h, --help``"},{"line_number":242,"context_line":"  show this help message and exit"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"``--state \u003cstate\u003e``"},{"line_number":245,"context_line":"  State of the action."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"``--reason \u003creason\u003e``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a3abb789_922da06e","line":244,"range":{"start_line":244,"start_character":4,"end_line":244,"end_character":9},"updated":"2025-08-28 13:11:10.000000000","message":"\u0027state\u0027 is a required param:\n\nhttps://review.opendev.org/c/openstack/python-watcherclient/+/956911/4/watcherclient/v1/action_shell.py#173","commit_id":"c2f8b2f795689d5b739eb949206f2ebaee3360ba"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"1293701332f15f7bee1bccbdba0baad336597697","unresolved":true,"context_lines":[{"line_number":241,"context_line":"``-h, --help``"},{"line_number":242,"context_line":"  show this help message and exit"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"``--state \u003cstate\u003e``"},{"line_number":245,"context_line":"  State of the action."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"``--reason \u003creason\u003e``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf344957_b422ddf0","line":244,"range":{"start_line":244,"start_character":4,"end_line":244,"end_character":9},"in_reply_to":"a3abb789_922da06e","updated":"2025-08-28 13:58:50.000000000","message":"Update: is should not be required since user should be able to update only one fields: state or status_message.","commit_id":"c2f8b2f795689d5b739eb949206f2ebaee3360ba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2eacafaef43e37c6ea33b18d282467b3a6d76e0e","unresolved":true,"context_lines":[{"line_number":241,"context_line":"``-h, --help``"},{"line_number":242,"context_line":"  show this help message and exit"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"``--state \u003cstate\u003e``"},{"line_number":245,"context_line":"  State of the action."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"``--reason \u003creason\u003e``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"188dc84c_36d332ec","line":244,"range":{"start_line":244,"start_character":4,"end_line":244,"end_character":9},"in_reply_to":"a3abb789_922da06e","updated":"2025-08-28 13:55:00.000000000","message":"thats a bug because it shoudl not be requried in the api\n\nso this shoudl b e part of optional args.","commit_id":"c2f8b2f795689d5b739eb949206f2ebaee3360ba"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"04cb2fe331cd1735c58b67fcffb0c7e4f11f1552","unresolved":false,"context_lines":[{"line_number":241,"context_line":"``-h, --help``"},{"line_number":242,"context_line":"  show this help message and exit"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"``--state \u003cstate\u003e``"},{"line_number":245,"context_line":"  State of the action."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"``--reason \u003creason\u003e``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d8b0aded_6e18134f","line":244,"range":{"start_line":244,"start_character":4,"end_line":244,"end_character":9},"in_reply_to":"bf344957_b422ddf0","updated":"2025-08-28 17:45:30.000000000","message":"Done","commit_id":"c2f8b2f795689d5b739eb949206f2ebaee3360ba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2eacafaef43e37c6ea33b18d282467b3a6d76e0e","unresolved":true,"context_lines":[{"line_number":236,"context_line":"``\u003caction\u003e``"},{"line_number":237,"context_line":"  UUID of the action"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"``--state \u003cstate\u003e``"},{"line_number":240,"context_line":"  State of the action."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"**Optional arguments:**"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"``-h, --help``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"89440951_cff9ff24","line":241,"range":{"start_line":239,"start_character":0,"end_line":241,"end_character":1},"updated":"2025-08-28 13:55:00.000000000","message":"this is not a postioanl arg so this is wrong even if we dont fix the api bug\n\nwe could have a required args section but lest just move this back to optional and ill try and fix the api bug.","commit_id":"07e32146b40dea81e7bdc4dd8181b1e1ce51a161"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"04cb2fe331cd1735c58b67fcffb0c7e4f11f1552","unresolved":false,"context_lines":[{"line_number":236,"context_line":"``\u003caction\u003e``"},{"line_number":237,"context_line":"  UUID of the action"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"``--state \u003cstate\u003e``"},{"line_number":240,"context_line":"  State of the action."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"**Optional arguments:**"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"``-h, --help``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"2f276440_8d27c675","line":241,"range":{"start_line":239,"start_character":0,"end_line":241,"end_character":1},"in_reply_to":"89440951_cff9ff24","updated":"2025-08-28 17:45:30.000000000","message":"Done","commit_id":"07e32146b40dea81e7bdc4dd8181b1e1ce51a161"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"1293701332f15f7bee1bccbdba0baad336597697","unresolved":true,"context_lines":[{"line_number":244,"context_line":"``--state \u003cstate\u003e``"},{"line_number":245,"context_line":"  New state for the action (e.g., SKIPPED)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"``--reason \u003creason\u003e``"},{"line_number":248,"context_line":"  Reason for the action state change."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":".. _watcher_actionplan_cancel:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"b361c61b_86004784","line":248,"range":{"start_line":247,"start_character":0,"end_line":248,"end_character":37},"updated":"2025-08-28 13:58:50.000000000","message":"The description needs to be updated, since it does not need to be related to the state change.\nShould we move this to --status_message\nDon\u0027t really need to be a reason for something?","commit_id":"dad0cff9d426747c415502b9c0af0158e6a5ea60"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c6c6ae4e01af651bb5bb5fc655ec04f1b9a7f14","unresolved":false,"context_lines":[{"line_number":244,"context_line":"``--state \u003cstate\u003e``"},{"line_number":245,"context_line":"  New state for the action (e.g., SKIPPED)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"``--reason \u003creason\u003e``"},{"line_number":248,"context_line":"  Reason for the action state change."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":".. _watcher_actionplan_cancel:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"52b0ceb2_b3e06bbb","line":248,"range":{"start_line":247,"start_character":0,"end_line":248,"end_character":37},"in_reply_to":"54bc9ad5_a971b810","updated":"2025-08-28 19:18:02.000000000","message":"... ok that also feel like a bug but i can accept that logic and we can change it in a futur microverson if we really want too.","commit_id":"dad0cff9d426747c415502b9c0af0158e6a5ea60"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"04cb2fe331cd1735c58b67fcffb0c7e4f11f1552","unresolved":false,"context_lines":[{"line_number":244,"context_line":"``--state \u003cstate\u003e``"},{"line_number":245,"context_line":"  New state for the action (e.g., SKIPPED)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"``--reason \u003creason\u003e``"},{"line_number":248,"context_line":"  Reason for the action state change."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":".. _watcher_actionplan_cancel:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"54bc9ad5_a971b810","line":248,"range":{"start_line":247,"start_character":0,"end_line":248,"end_character":37},"in_reply_to":"b361c61b_86004784","updated":"2025-08-28 17:45:30.000000000","message":"EDIT: I think that makes sense since the API will append this message as the reason for skipping the action, and not replacing the entire status_message (which can be another API option in future)","commit_id":"dad0cff9d426747c415502b9c0af0158e6a5ea60"}],"watcherclient/__init__.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c6c6ae4e01af651bb5bb5fc655ec04f1b9a7f14","unresolved":true,"context_lines":[{"line_number":32,"context_line":"# when client supported the max version, and bumped sequentially, otherwise"},{"line_number":33,"context_line":"# the client may break due to server side new version may include some"},{"line_number":34,"context_line":"# backward incompatible change."},{"line_number":35,"context_line":"API_MAX_VERSION \u003d api_versioning.APIVersion(\"1.5\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"4d5a9e5d_78d486e9","line":35,"updated":"2025-08-28 19:18:02.000000000","message":"we shoudl actully bump this to 1.6 seperately because of teh data model change.\nbut that is not for this patch.","commit_id":"d17bfa04ada4c830d2fa18e995c523e3e930328d"}],"watcherclient/tests/client_functional/v1/test_action.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c6c6ae4e01af651bb5bb5fc655ec04f1b9a7f14","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    audit_uuid \u003d None"},{"line_number":92,"context_line":"    action_uuid \u003d None"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @classmethod"},{"line_number":95,"context_line":"    def setUpClass(cls):"},{"line_number":96,"context_line":"        # Create audit template"},{"line_number":97,"context_line":"        template_raw_output \u003d cls.watcher("},{"line_number":98,"context_line":"            \u0027audittemplate create %s dummy -s dummy\u0027 % cls.audit_template_name)"},{"line_number":99,"context_line":"        template_output \u003d cls.parse_show_as_object(template_raw_output)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Create audit"},{"line_number":102,"context_line":"        audit_output \u003d cls.parse_show_as_object(cls.watcher("},{"line_number":103,"context_line":"            \u0027audit create -a %s\u0027 % template_output[\u0027Name\u0027]))"},{"line_number":104,"context_line":"        cls.audit_uuid \u003d audit_output[\u0027UUID\u0027]"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        # Wait for audit to complete"},{"line_number":107,"context_line":"        audit_created \u003d test_utils.call_until_true("},{"line_number":108,"context_line":"            func\u003dfunctools.partial(cls.has_audit_created, cls.audit_uuid),"},{"line_number":109,"context_line":"            duration\u003d600,"},{"line_number":110,"context_line":"            sleep_for\u003d2)"},{"line_number":111,"context_line":"        if not audit_created:"},{"line_number":112,"context_line":"            raise Exception(\u0027Audit has not been succeeded\u0027)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # Get an action to test updates on"},{"line_number":115,"context_line":"        action_list \u003d cls.parse_show(cls.watcher(\u0027action list --audit %s\u0027"},{"line_number":116,"context_line":"                                                 % cls.audit_uuid))"},{"line_number":117,"context_line":"        if action_list:"},{"line_number":118,"context_line":"            cls.action_uuid \u003d list(action_list[0])[0]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @classmethod"},{"line_number":121,"context_line":"    def tearDownClass(cls):"},{"line_number":122,"context_line":"        # Clean up: Delete Action Plan and all related actions"},{"line_number":123,"context_line":"        if cls.audit_uuid:"},{"line_number":124,"context_line":"            output \u003d cls.parse_show("},{"line_number":125,"context_line":"                cls.watcher(\u0027actionplan list --audit %s\u0027 % cls.audit_uuid))"},{"line_number":126,"context_line":"            if output:"},{"line_number":127,"context_line":"                action_plan_uuid \u003d list(output[0])[0]"},{"line_number":128,"context_line":"                raw_output \u003d cls.watcher("},{"line_number":129,"context_line":"                    \u0027actionplan delete %s\u0027 % action_plan_uuid)"},{"line_number":130,"context_line":"                cls.assertOutput(\u0027\u0027, raw_output)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"            # Delete audit"},{"line_number":133,"context_line":"            raw_output \u003d cls.watcher(\u0027audit delete %s\u0027 % cls.audit_uuid)"},{"line_number":134,"context_line":"            cls.assertOutput(\u0027\u0027, raw_output)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        # Delete template"},{"line_number":137,"context_line":"        raw_output \u003d cls.watcher("},{"line_number":138,"context_line":"            \u0027audittemplate delete %s\u0027 % cls.audit_template_name)"},{"line_number":139,"context_line":"        cls.assertOutput(\u0027\u0027, raw_output)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def test_action_update_with_state_and_reason(self):"},{"line_number":142,"context_line":"        \"\"\"Test updating action state with reason using API 1.5\"\"\""},{"line_number":143,"context_line":"        if not self.action_uuid:"}],"source_content_type":"text/x-python","patch_set":9,"id":"426a1b24_67b7ed3f","line":140,"range":{"start_line":94,"start_character":0,"end_line":140,"end_character":1},"updated":"2025-08-28 19:18:02.000000000","message":"we shoudl not be using the class version\n\ni dont think we shoudl be sharing and reusing the audit across tests.\n\nwith that said im opne to trying this for now but it makes it harder to reason about teh tests as it weaken the test isolation.\n\nwe may run theses testss srialy today but the order is still random and we shoudl not depen on that anyway so i am not a huge fan of this type of shared setup in devstrack based functional tests like this.","commit_id":"d17bfa04ada4c830d2fa18e995c523e3e930328d"}],"watcherclient/tests/unit/common/test_api_versioning.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c6c6ae4e01af651bb5bb5fc655ec04f1b9a7f14","unresolved":true,"context_lines":[{"line_number":155,"context_line":"        # Test versions \u003e\u003d 1.5 support action update"},{"line_number":156,"context_line":"        self.assertTrue(api_versioning.action_update_supported(\"1.5\"))"},{"line_number":157,"context_line":"        self.assertTrue(api_versioning.action_update_supported(\"1.6\"))"},{"line_number":158,"context_line":"        self.assertTrue(api_versioning.action_update_supported(\"2.0\"))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_action_update_supported_false(self):"},{"line_number":161,"context_line":"        # Test versions \u003c 1.5 do not support action update"}],"source_content_type":"text/x-python","patch_set":9,"id":"6988ca03_2ac6805c","line":158,"updated":"2025-08-28 19:18:02.000000000","message":"this should not pass\nit should be a api error in reality.\nit would get a 400 howeverver  in teh unit test it will work.\n\nin general we shoudl avoid testing  with fake verions like this.","commit_id":"d17bfa04ada4c830d2fa18e995c523e3e930328d"}],"watcherclient/v1/action_shell.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2eacafaef43e37c6ea33b18d282467b3a6d76e0e","unresolved":true,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        if not parsed_args.state:"},{"line_number":172,"context_line":"            raise exceptions.CommandError("},{"line_number":173,"context_line":"                _(\"State is required for action update\"))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        if not uuidutils.is_uuid_like(parsed_args.action):"},{"line_number":176,"context_line":"            raise exceptions.ValidationError()"}],"source_content_type":"text/x-python","patch_set":4,"id":"ef8fce01_a3c77a97","line":173,"updated":"2025-08-28 13:55:00.000000000","message":"this is a bug which ill file and try and fix shortly in the api.\n\nyou should be able toupdate the status message without updating th state if its already in the skipped field.\n\nthis iff should not be checkign for if the state changed but rather it the state is skipped.\n\nhttps://github.com/openstack/watcher/blob/master/watcher/api/controllers/v1/action.py#L444\n\nwe only allow moving form pending to skipped\n\nhttps://github.com/openstack/watcher/blob/master/watcher/api/controllers/v1/action.py#L417\n\nso there would be no way to fix a type if you acidently make oen when moving it to skiped an that is somethign that poeple will want to fix.\n\n\nwe do not need to validate the state on the client seize we will return a 409 conflict if the state is not correct in the api.","commit_id":"c2f8b2f795689d5b739eb949206f2ebaee3360ba"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8c6c6ae4e01af651bb5bb5fc655ec04f1b9a7f14","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        if not parsed_args.state:"},{"line_number":172,"context_line":"            raise exceptions.CommandError("},{"line_number":173,"context_line":"                _(\"State is required for action update\"))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        if not uuidutils.is_uuid_like(parsed_args.action):"},{"line_number":176,"context_line":"            raise exceptions.ValidationError()"}],"source_content_type":"text/x-python","patch_set":4,"id":"810aa5f4_1c3e1be2","line":173,"in_reply_to":"94951273_5c46f7c8","updated":"2025-08-28 19:18:02.000000000","message":"Acknowledged","commit_id":"c2f8b2f795689d5b739eb949206f2ebaee3360ba"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"04cb2fe331cd1735c58b67fcffb0c7e4f11f1552","unresolved":true,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        if not parsed_args.state:"},{"line_number":172,"context_line":"            raise exceptions.CommandError("},{"line_number":173,"context_line":"                _(\"State is required for action update\"))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        if not uuidutils.is_uuid_like(parsed_args.action):"},{"line_number":176,"context_line":"            raise exceptions.ValidationError()"}],"source_content_type":"text/x-python","patch_set":4,"id":"94951273_5c46f7c8","line":173,"in_reply_to":"ef8fce01_a3c77a97","updated":"2025-08-28 17:45:30.000000000","message":"Updating this just to check that one action is being requested (at least --state or --reason must be provided), and let the API validate the values.","commit_id":"c2f8b2f795689d5b739eb949206f2ebaee3360ba"}]}
