)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"fc78491e689b5483291ea7820f81fb9d76cf7957","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0aec4d9c_00aa77f4","updated":"2026-08-13 12:20:41.000000000","message":"Still missing API tests, which is going to be added soon","commit_id":"d706c421e96c8ed3444a9a41c3d46463284e0679"}],"watcher_tempest_plugin/tests/scenario/base.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":"d9daf1b4fc01504787f6d2fe39a15b16d8dfeedd","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"                    pipeline[\u0027uuid\u0027]),"},{"line_number":1035,"context_line":"                duration\u003d600,"},{"line_number":1036,"context_line":"                sleep_for\u003d2,"},{"line_number":1037,"context_line":"            ))"},{"line_number":1038,"context_line":"        except ValueError:"},{"line_number":1039,"context_line":"            self.fail(\"The audit pipeline has failed!\")"},{"line_number":1040,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"29495320_54cd107d","line":1037,"updated":"2026-08-12 23:56:16.000000000","message":"The create_audit_pipeline_and_wait method in scenario/base.py uses hardcoded duration\u003d600 and sleep_for\u003d2, and wait_for_pipeline in common/base.py uses a hardcoded default timeout\u003d600 and sleep_for\u003d2. The immediately preceding commit (5ef3d55) specifically replaced all hardcoded duration/sleep_fo...\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Operators and CI engineers cannot tune pipeline wait timeouts via configuration. A pipeline that takes longer than 600 seconds will always fail, even if the deployment needs a higher timeout. The configurable options were introduced specifically to address this class of problem.\n\n**Suggestion**:\nReplace hardcoded duration\u003d600 with CONF.optimize.resource_timeout and sleep_for\u003d2 with CONF.optimize.resource_check_interval in both create_audit_pipeline_and_wait (scenario/base.py) and wait_for_pipeline (common/base.py). The wait_for_pipeline signature could accept an optional timeout that defaults to CONF.optimize.resource_timeout.","commit_id":"d706c421e96c8ed3444a9a41c3d46463284e0679"},{"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":"834240421b21ae3b70b4d414ab0e9cdfd98dbc12","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"        \"\"\""},{"line_number":1057,"context_line":"        if audit_pipeline_uuid is not None:"},{"line_number":1058,"context_line":"            _, action_plans \u003d self.client.list_action_plans("},{"line_number":1059,"context_line":"                audit_pipeline_uuid\u003daudit_pipeline_uuid)"},{"line_number":1060,"context_line":"        elif audit_uuid is not None:"},{"line_number":1061,"context_line":"            _, action_plans \u003d self.client.list_action_plans("},{"line_number":1062,"context_line":"                audit_uuid\u003daudit_uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"4f3b5b1b_1983a6c1","line":1059,"updated":"2026-08-25 19:48:31.000000000","message":"BaseInfraOptimScenarioTest.create_audit_pipeline_and_wait re-implements the call_until_true polling loop of WatcherHelperMixin.wait_for_pipeline with hardcoded duration\u003d600 and sleep_for\u003d2. Every other wait in this codebase (create_audit_and_wait, execute_action_plan_and_validate_states, wait_for_audit, etc.) uses CONF.optimize.resource_timeout and CONF.optimize.resource_check_interval so operators can raise timeouts on slow/scaled CI environments.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: Pipeline waits cannot be tuned for slow gates (e.g., multinode jobs where resource_timeout is deliberately raised), so otherwise-valid runs can time out and flap; the duplication also means a future change to terminal-state handling or timing must be fixed in two places.\n\n**Suggestion**:\nIn create_audit_pipeline_and_wait, call self.wait_for_pipeline(pipeline[\u0027uuid\u0027], timeout\u003dCONF.optimize.resource_timeout) (or inline call_until_true with duration\u003dCONF.optimize.resource_timeout and sleep_for\u003dCONF.optimize.resource_check_interval), and consider having wait_for_pipeline default its timeout to CONF.optimize.resource_timeout as well.","commit_id":"98c2d2404a9f8ada3e0c2a8991f3e4b675ddedb0"}],"watcher_tempest_plugin/tests/scenario/test_audit_pipeline.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":"834240421b21ae3b70b4d414ab0e9cdfd98dbc12","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                        \u0027action_type\u0027: \u0027change_nova_service_state\u0027,"},{"line_number":320,"context_line":"                        \u0027resource_id\u0027: host1,"},{"line_number":321,"context_line":"                        \u0027input_parameters\u0027: {"},{"line_number":322,"context_line":"                            \u0027resource_name\u0027: host1,"},{"line_number":323,"context_line":"                            \u0027state\u0027: \u0027enabled\u0027,"},{"line_number":324,"context_line":"                        },"},{"line_number":325,"context_line":"                    },"}],"source_content_type":"text/x-python","patch_set":3,"id":"d53fbd76_d34bd5c9","line":322,"updated":"2026-08-25 19:48:31.000000000","message":"In TestAuditPipelineServiceStateCollapse the inline comment claims \u0027host2: disabled→disabled→disabled keeps last (1 action)\u0027 but stage 2 actually sets host2 to \u0027enabled\u0027 (the class docstring correctly says disabled→enabled→disabled). Additionally, the stage-2 \u0027enable\u0027 action for host2 passes a disabled_reason (\u0027watcher_test_stage2_host2\u0027), which is meaningless for an enable operation and could mask a schema mistake if the server ever validated it.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Impact**: A future maintainer verifying the collapse expectations against the stale comment may misread which state transitions the planner is expected to keep, making the test harder to evolve correctly; the stray disabled_reason on an enable action adds noise.\n\n**Recommendation**:\nFix the comment to \u0027host2: disabled→enabled→disabled keeps last (1 action)\u0027 (matching the docstring) and drop the disabled_reason key from the stage-2 \u0027enabled\u0027 action for host2.","commit_id":"98c2d2404a9f8ada3e0c2a8991f3e4b675ddedb0"}]}
