)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f94c1e487bb0996046e51b937af11adc5610f860","unresolved":true,"context_lines":[{"line_number":97,"context_line":"  - test_execute_basic_strategy_with_instance_scope (PASS)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Summary:"},{"line_number":100,"context_line":"- Total: 16 new tests (14 strategy-specific + 2 generic)"},{"line_number":101,"context_line":"- Host scope tests: 7 (all should PASS)"},{"line_number":102,"context_line":"- Instance scope tests: 7 (4 PASS, 3 FAIL and document bugs)"},{"line_number":103,"context_line":"- Bugs documented:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"8d77ab28_852ad8de","line":100,"range":{"start_line":100,"start_character":2,"end_line":100,"end_character":56},"updated":"2026-09-10 14:27:36.000000000","message":"I am not sure how long this is going to take on CI, but would increase the time to complete, which can turn to a problem in future, while we add more tests for new features. We should discuss with the team about this, if we should only add one or two scenario tests, and rely on more functional tests in watcher repo itself.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"4ca9378b8a5212cc9878b14aa05eb9a4ec33d85f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8c042b89_58f01632","updated":"2026-07-02 10:42:04.000000000","message":"Audit Scope test suite to be used to verify fixes for:\n - Host Maintenance: https://bugs.launchpad.net/watcher/+bug/2154805\n - Node Resource Consolidation: https://bugs.launchpad.net/watcher/+bug/2154806\n - Zone Migration: https://bugs.launchpad.net/watcher/+bug/2154807","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f94c1e487bb0996046e51b937af11adc5610f860","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"39031071_2af89e6d","updated":"2026-09-10 14:27:36.000000000","message":"I think that we should or remove run_scope_tests or set it to default\u003dtrue for now, so we can tests everything in all branches (while we also backport fixes)","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"e59c8e6762218d5b58efc09674a81831a7e04900","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2a48cfa5_aabff5ec","updated":"2026-07-08 08:34:27.000000000","message":"recheck","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"79edf5f248466b5890c8409c031d06239fecf3c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"416a457b_d13cd496","updated":"2026-07-07 10:37:47.000000000","message":"recheck","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"6c7a26768e62698c66accfc925e292c89a9752d0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"baeb93e3_b00d7535","in_reply_to":"39031071_2af89e6d","updated":"2026-09-15 13:26:20.000000000","message":"Yes, you are right. I have set to to default\u003dtrue so it will be executed always by now.\n\nYou can set now a depends-on in your fix to run those tests and check the status","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"}],"tox.ini":[{"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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"minversion \u003d 3.18.0"},{"line_number":3,"context_line":"envlist \u003d py3,pypy,pep8"},{"line_number":4,"context_line":"skipsdist \u003d True"}],"source_content_type":"text/x-properties","patch_set":2,"id":"cc7a81c3_8ac6392a","line":1,"updated":"2026-07-02 11:41:05.000000000","message":"The [DNM] (Do Not Merge) prefix in the commit subject signals this is a work-in-progress draft that must not be merged.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Merging a DNM commit would introduce the critical issues (missing expectedFailure, wrong bug numbers) into the gate, breaking CI when run_scope_tests is enabled.\n\n**Suggestion**:\nRemove the [DNM] prefix only after all blocking issues are resolved. The commit subject should be reworded to describe the feature without the DNM marker before final review.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"[flake8]"},{"line_number":71,"context_line":"show-source\u003dTrue"},{"line_number":72,"context_line":"ignore\u003d H105,E123,E226,N320,H202,W503,W504"},{"line_number":73,"context_line":"builtins\u003d _"},{"line_number":74,"context_line":"enable-extensions \u003d H106,H203"},{"line_number":75,"context_line":"exclude\u003d.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,demo/,releasenotes"}],"source_content_type":"text/x-properties","patch_set":2,"id":"a7ded3f2_ff3ccba1","line":72,"updated":"2026-07-02 11:41:05.000000000","message":"W504 (line break after binary operator) was added to the flake8 ignore list alongside the existing W503 ignore, which is redundant when W503 is already suppressed.\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: With W503 already ignored, W504 does not change behavior since pep8 considers the two mutually exclusive. The addition is harmless but may indicate the changed code introduced a line-break style not previously used.\n\n**Suggestion**:\nVerify whether W504 is truly needed. If the changed code introduced line breaks after binary operators, consider formatting the code to avoid them instead, or document the rationale for ignoring both W503 and W504.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"fd982a60626df5169b75ebf3b30b17cf37fce4e4","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"[flake8]"},{"line_number":71,"context_line":"show-source\u003dTrue"},{"line_number":72,"context_line":"ignore\u003d H105,E123,E226,N320,H202,W503,W504"},{"line_number":73,"context_line":"builtins\u003d _"},{"line_number":74,"context_line":"enable-extensions \u003d H106,H203"},{"line_number":75,"context_line":"exclude\u003d.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,demo/,releasenotes"}],"source_content_type":"text/x-properties","patch_set":5,"id":"359f3809_9e5a6e14","line":72,"updated":"2026-09-16 14:09:32.000000000","message":"The change appends W504 (line break after binary operator) to the flake8 ignore list in tox.ini. Previously the project ignored only W503, which enforced break-before-operator continuations. The new threshold expressions in test_execute_workload_balance.py break after \u0027*\u0027, so instead of reformatting two lines, the check is disabled for the whole project, leaving no enforced convention for operator line breaks in future code.\n\n**Severity**: SUGGESTION | **Confidence**: 0.85\n\n**Impact**: The shared lint configuration is loosened for all future code to fit two lines, so mixed break-before and break-after operator styles can accumulate without lint feedback, eroding the previously enforced OpenStack continuation style.\n\n**Recommendation**:\nReformat the two expressions to break before the operator (e.g. \u0027(len(instances_host1) - 0.5)\u0027 then \u0027* (0.8 / int(hypervisor[\"vcpus\"])) * 100)\u0027) and remove W504 from the ignore list, keeping the lint contract unchanged.","commit_id":"d1e415b1ff929e995bd5bcd771adb8610c19848a"}],"watcher_tempest_plugin/config.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f94c1e487bb0996046e51b937af11adc5610f860","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4f56b035_d708cec6","line":212,"range":{"start_line":206,"start_character":0,"end_line":212,"end_character":0},"updated":"2026-09-10 14:27:36.000000000","message":"Since this feature should work in all stable releases, we can merge the fixes and backports before merging this patch, so we don\u0027t need this in the end. Something that we can\u0027t do for new features.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"53fa4e3c7df9da786987685a1a94385dbebe868c","unresolved":false,"context_lines":[{"line_number":203,"context_line":"             \"are not met. Requires Watcher to support the action \""},{"line_number":204,"context_line":"             \"skipping feature.\""},{"line_number":205,"context_line":"    ),"},{"line_number":206,"context_line":"    cfg.BoolOpt("},{"line_number":207,"context_line":"        \"run_scope_tests\","},{"line_number":208,"context_line":"        default\u003dTrue,"},{"line_number":209,"context_line":"        help\u003d\"Whether or not to run audit scope tests.\""}],"source_content_type":"text/x-python","patch_set":4,"id":"12708510_38ecf0c7","line":206,"updated":"2026-09-15 13:52:37.000000000","message":"The new cfg.BoolOpt(\"run_scope_tests\") defaults to True. The commit message states the option defaults to False (\u0027CONF.optimize.run_scope_tests (default: False)\u0027), and every other gating option in the same OptimizeGroup (run_continuous_audit_tests, run_extended_attributes_tests, run_zone_migration_extra_tests, run_zone_migration_storage_tests, run_bfv_tests, run_skipped_action_tests) defaults to False. Three of the new tests contain assertions explicitly written and commented to fail by design to document watcher bugs, and they are gated only by live_migration and compute-node-count skip checks, so the default True turns them on everywhere by default.\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Impact**: Any default tempest run of this plugin where live migration is enabled and at least 2-3 compute nodes exist (the standard watcher multinode CI topology) executes the three bug-documenting tests and reports failures, turning default CI runs red and blocking merges. The documented opt-in behavior of the new option is inverted, and operators who never asked for scope tests get them, with failures.\n\n**Priority**: Before merge\n**Recommendation**:\nChange the default to False in config.py so scope tests are opt-in exactly as the commit message documents, matching every other run_* gating option in this group.","commit_id":"fbf77b7592fa8905dbbaee4f572df79056edc313"},{"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":"fd982a60626df5169b75ebf3b30b17cf37fce4e4","unresolved":false,"context_lines":[{"line_number":203,"context_line":"             \"are not met. Requires Watcher to support the action \""},{"line_number":204,"context_line":"             \"skipping feature.\""},{"line_number":205,"context_line":"    ),"},{"line_number":206,"context_line":"    cfg.BoolOpt("},{"line_number":207,"context_line":"        \"run_scope_tests\","},{"line_number":208,"context_line":"        default\u003dTrue,"},{"line_number":209,"context_line":"        help\u003d\"Whether or not to run audit scope tests.\""}],"source_content_type":"text/x-python","patch_set":5,"id":"dee076e8_aaec448f","line":206,"updated":"2026-09-16 14:09:32.000000000","message":"The new config option is registered with default\u003dTrue, but the commit message states it defaults to False and exists to allow selective execution of scope tests. Every sibling opt-in flag in the same group (run_bfv_tests, run_skipped_action_tests, run_zone_migration_extra_tests, run_zone_migration_storage_tests) defaults to False. Three new scope tests hard-code failure messages and docstrings stating they are expected to FAIL to document watcher bugs (zone_migration, host_maintenance, node_resource_consolidation instance-scope), so with default\u003dTrue they are not skipped in any default tempest run. The two generic tests in test_audit_scope.py carry the \u0027scope\u0027 attribute but are not gated by this flag at all, so the flag also fails to deliver the selective execution described.\n\n**Severity**: HIGH | **Confidence**: 0.92\n\n**Impact**: Any default run of the watcher scenario suite, including this project\u0027s own gate and downstream verification jobs, executes the three guaranteed-failing tests and goes red until an operator discovers the flag and sets run_scope_tests\u003dFalse. The intentionally-failing bug-documentation tests leak into default CI instead of being opt-in, which is the opposite of the documented intent.\n\n**Priority**: Before merge\n**Recommendation**:\nChange the option default to False, matching the commit message and the established opt-in convention of run_bfv_tests and the other optional test flags; scope tests are then enabled explicitly via [optimize] run_scope_tests \u003d True as the commit message documents.","commit_id":"d1e415b1ff929e995bd5bcd771adb8610c19848a"}],"watcher_tempest_plugin/tests/scenario/test_audit_scope.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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    GOAL \u003d \"dummy\""},{"line_number":52,"context_line":"    STRATEGY \u003d \"dummy\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @decorators.idempotent_id(\u0027a1b2c3d4-e5f6-4789-a012-3456789abcde\u0027)"},{"line_number":55,"context_line":"    @decorators.attr(type\u003d[\u0027scope\u0027])"},{"line_number":56,"context_line":"    def test_audit_scope_with_compute_nodes(self):"},{"line_number":57,"context_line":"        \"\"\"Verify that scope filters data model to specified compute nodes."}],"source_content_type":"text/x-python","patch_set":2,"id":"2bedeb45_04d80339","line":54,"updated":"2026-07-02 11:41:05.000000000","message":"All newly added idempotent_id UUIDs are hand-crafted placeholder patterns (e.g. a1b2c3d4-e5f6-4789-a012-3456789abcde) rather than genuine random UUIDs.\n\n**Severity**: HIGH | **Confidence**: 0.8\n\n**Risk**: Tempest idempotent_id relies on globally unique random UUIDs. Placeholder-style sequential UUIDs risk future collisions across plugin installations and conflict with the purpose of the check-uuid pep8 target.\n\n**Priority**: Before merge\n**Why This Matters**: The project runs check-uuid --package in its pep8 job. While these may be technically unique today, the predictable non-random pattern is fragile and against tempest conventions for test identification.\n\n**Recommendation**:\nGenerate proper random UUIDs using the project\u0027s own [testenv:uuidgen] target (check-uuid --fix) or uuidgen, and replace all hand-crafted values across the 8 changed test files.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # Define scope: exclude the third compute node"},{"line_number":82,"context_line":"        # This effectively limits the scope to the first two nodes"},{"line_number":83,"context_line":"        scoped_nodes \u003d [compute_nodes[0][\u0027host\u0027], compute_nodes[1][\u0027host\u0027]]"},{"line_number":84,"context_line":"        excluded_node \u003d compute_nodes[2][\u0027host\u0027]"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        audit_scope \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"07cb2d17_8269f5d6","line":83,"updated":"2026-07-02 11:41:05.000000000","message":"The same audit_scope exclude dict structure (13 lines) and data-model entity extraction loop are copy-pasted verbatim across 8+ test files, representing hundreds of lines of duplicated logic.\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: Any change to the scope format or model-extraction logic requires editing 8+ files identically, creating a significant maintenance burden and high risk of drift between tests.\n\n**Priority**: Before merge\n**Why This Matters**: The project already has a base.py with shared helpers. The scope dict construction and the for-elem-in-context extraction loop are prime candidates for shared helpers that would eliminate ~200 lines of duplication.\n\n**Recommendation**:\nAdd shared helpers to base.py, e.g. build_host_exclude_scope(host) returning the exclude dict and extract_model_entities(body) returning (nodes_set, instances_list). Extend create_audit_template_for_strategy to accept an optional scope parameter.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            }"},{"line_number":100,"context_line":"        ]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        LOG.info(f\"Creating audit excluding node: {excluded_node}\")"},{"line_number":103,"context_line":"        LOG.info(f\"Scoped nodes (via exclusion): {scoped_nodes}\")"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        # Create audit template with scope"}],"source_content_type":"text/x-python","patch_set":2,"id":"7e9317b6_29bcc8eb","line":102,"updated":"2026-07-02 11:41:05.000000000","message":"f-strings are used inside LOG.info() calls throughout all new test files instead of the OpenStack-preferred percent-style lazy interpolation.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: f-strings force eager string construction even when the INFO log level is disabled. The percent-style (LOG.info(\u0027msg: %s\u0027, val)) enables lazy evaluation and is the dominant OpenStack/oslo convention.\n\n**Suggestion**:\nReplace f-string LOG calls with percent-style lazy interpolation: LOG.info(\u0027Creating audit excluding node: %s\u0027, excluded_node). There are 15+ such occurrences across test_audit_scope.py, test_execute_basic_optim.py, and all other changed test files.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        LOG.info(f\"Scoped nodes (via exclusion): {scoped_nodes}\")"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        # Create audit template with scope"},{"line_number":106,"context_line":"        _, goal \u003d self.client.show_goal(self.GOAL)"},{"line_number":107,"context_line":"        _, strategy \u003d self.client.show_strategy(self.STRATEGY)"},{"line_number":108,"context_line":"        _, audit_template \u003d self.create_audit_template("},{"line_number":109,"context_line":"            goal[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"6b4c477f_0645a2ff","line":106,"updated":"2026-07-02 11:41:05.000000000","message":"The show_goal + show_strategy + create_audit_template triplet is repeated identically in every scope test (~6 lines each, 16 tests).\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: Extending the existing create_audit_template_for_strategy() helper in base.py to accept an optional scope parameter would eliminate ~96 lines of boilerplate.\n\n**Recommendation**:\nAdd scope\u003dNone kwarg to create_audit_template_for_strategy in base.py and use it in all scope tests instead of the manual show_goal/show_strategy/create_audit_template sequence.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @decorators.idempotent_id(\u0027c3d4e5f6-a7b8-4901-c234-56789abcdef0\u0027)"},{"line_number":156,"context_line":"    @decorators.attr(type\u003d[\u0027scope\u0027])"},{"line_number":157,"context_line":"    def test_audit_scope_with_multiple_compute_nodes(self):"},{"line_number":158,"context_line":"        \"\"\"Verify that scope works with multiple compute nodes specified."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        This test validates that when multiple compute nodes are specified"}],"source_content_type":"text/x-python","patch_set":2,"id":"a358ac9f_d3da686e","line":157,"updated":"2026-07-02 11:41:05.000000000","message":"test_audit_scope_with_multiple_compute_nodes is functionally identical to test_audit_scope_with_compute_nodes: both exclude exactly one node from a 3-node setup with the same assertions.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: The test name implies multi-node exclusion but tests single-node exclusion. It wastes CI resources (instance creation, audit execution) without adding coverage beyond the first test.\n\n**Suggestion**:\nEither make the second test genuinely exclude 2 of 4+ nodes to test real multi-node exclusion, or remove it as redundant.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"53fa4e3c7df9da786987685a1a94385dbebe868c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    min_microversion \u003d \"1.3\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @classmethod"},{"line_number":42,"context_line":"    def skip_checks(cls):"},{"line_number":43,"context_line":"        super().skip_checks()"},{"line_number":44,"context_line":"        if not CONF.compute_feature_enabled.live_migration:"},{"line_number":45,"context_line":"            raise cls.skipException(\"Live migration is not enabled\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ec4bb5b1_5c42bc4a","line":42,"updated":"2026-09-15 13:52:37.000000000","message":"The commit message states \u0027The scope tests are gated by a new configuration option: CONF.optimize.run_scope_tests\u0027. All seven strategy Scope classes implement this skip check, but the two tests in TestAuditScopeComputeModel inherit only the live_migration skip from TestAuditScopeBase and never consult run_scope_tests, so setting the option to False does not disable them.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: Setting run_scope_tests \u003d False in tempest.conf does not disable these two heavyweight three-node scenario tests; they run whenever live migration is enabled. The same gating decision is enforced inconsistently across the new test classes, so the documented opt-out is incomplete and the two enforcement points can drift apart in future edits.\n\n**Suggestion**:\nAdd the same \u0027if not CONF.optimize.run_scope_tests: raise cls.skipException(\"Audit scope tests are not enabled.\")\u0027 gate to TestAuditScopeBase.skip_checks, consistent with the other Scope classes.","commit_id":"fbf77b7592fa8905dbbaee4f572df79056edc313"}],"watcher_tempest_plugin/tests/scenario/test_execute_host_maintenance.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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    @decorators.idempotent_id(\u0027e5f6a7b8-c9d0-4e1f-2a3b-4c5d6e7f8a9b\u0027)"},{"line_number":208,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027host_maintenance\u0027, \u0027scope\u0027])"},{"line_number":209,"context_line":"    def test_execute_host_maintenance_with_instance_scope(self):"},{"line_number":210,"context_line":"        \"\"\"Verify that instance exclusion via scope works (or fails)."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        This test validates whether host_maintenance respects the"}],"source_content_type":"text/x-python","patch_set":2,"id":"591dc957_ba2999d9","line":209,"updated":"2026-07-02 11:41:05.000000000","message":"The three expected-failure tests reference bugs only in docstrings (with the wrong number). Tempest supports machine-readable @decorators.related(\u0027bug\u0027, \u0027NNNNN\u0027) linkage.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Machine-readable bug linkage is more durable than docstring comments and enables automated tracking of when expected failures can be removed once bugs are fixed.\n\n**Recommendation**:\nAfter correcting the bug numbers (critical C2), consider adding @decorators.related(\u0027bug\u0027, \u00272154805\u0027) to each failing test for robust tracking.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    @decorators.idempotent_id(\u0027e5f6a7b8-c9d0-4e1f-2a3b-4c5d6e7f8a9b\u0027)"},{"line_number":208,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027host_maintenance\u0027, \u0027scope\u0027])"},{"line_number":209,"context_line":"    def test_execute_host_maintenance_with_instance_scope(self):"},{"line_number":210,"context_line":"        \"\"\"Verify that instance exclusion via scope works (or fails)."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        This test validates whether host_maintenance respects the"}],"source_content_type":"text/x-python","patch_set":2,"id":"f987948f_a8711722","line":209,"updated":"2026-07-02 11:41:05.000000000","message":"Three tests documented as \u0027expected to FAIL\u0027 lack the @decorators.expectedFailure decorator. When run_scope_tests\u003dTrue they will fail as hard gate errors instead of xfails.\n\n**Severity**: CRITICAL | **Confidence**: 1.0\n\n**Risk**: Enabling run_scope_tests in any CI job will turn the gate red with hard test failures rather than recording known-bug xfails, defeating the stated purpose of the patch.\n\n**Priority**: Before merge\n**Why This Matters**: The commit message explicitly states \u00273 FAIL and document bugs\u0027. Without expectedFailure the tests cannot serve their intended purpose of documenting bugs without blocking CI.\n\n**Recommendation**:\nAdd @decorators.expectedFailure to test_execute_host_maintenance_with_instance_scope, test_execute_node_resource_consolidation_with_instance_scope, and test_execute_zone_migration_with_instance_scope. Alternatively use @decorators.skip_because(bug\u003d\u0027...\u0027) to skip until the bugs are fixed.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        does NOT check this flag, so this test is expected to FAIL,"},{"line_number":215,"context_line":"        documenting the bug."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        Related bug: https://bugs.launchpad.net/watcher/+bug/2151776"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        Steps:"},{"line_number":220,"context_line":"        1. Create 2 instances on maintenance_node"}],"source_content_type":"text/x-python","patch_set":2,"id":"5265dc5a_5c9bfbcb","line":217,"updated":"2026-07-02 11:41:05.000000000","message":"Bug number mismatch: all three failing-test docstrings reference bug #2151776, but the commit message references distinct bugs #2154805, #2154806, #2154807 for each strategy.\n\n**Severity**: CRITICAL | **Confidence**: 0.9\n\n**Risk**: Incorrect bug references mislead developers tracing test failures and break the bug-tracking linkage that these tests are specifically designed to provide.\n\n**Priority**: Before merge\n**Why This Matters**: The tests exist to document specific strategy bugs. Pointing all three at the wrong single bug number (2151776) makes the tracking useless and contradicts the commit message.\n\n**Recommendation**:\nCorrect each docstring to reference the matching bug from the commit message: host_maintenance to #2154805, node_resource_consolidation to #2154806, zone_migration to #2154807. The same wrong reference appears at test_execute_node_resource_consolidation.py:196 and test_execute_zone_migration.py:255.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        3. Create audit with host_maintenance"},{"line_number":223,"context_line":"        4. Verify excluded instance is NOT migrated (will fail - bug)"},{"line_number":224,"context_line":"        \"\"\""},{"line_number":225,"context_line":"        self.check_min_enabled_compute_nodes(2)"},{"line_number":226,"context_line":"        self.addCleanup(self.rollback_compute_nodes_status)"},{"line_number":227,"context_line":"        self.addCleanup(self.wait_delete_instances_from_model)"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7b0efab9_9bb89521","line":225,"updated":"2026-07-02 11:41:05.000000000","message":"test_execute_host_maintenance_with_instance_scope places both instances on a single maintenance_node, unlike the zone_migration and vm_workload_consolidation instance_scope tests which spread instances across two hosts.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Consistent multi-host instance placement across all instance_scope tests would make the suite easier to reason about and provide more thorough coverage of the exclusion path.\n\n**Recommendation**:\nEvaluate whether 2 instances on a single host sufficiently exercises the instance-exclusion path for host_maintenance. If the strategy only migrates from the maintenance node, the current setup may be acceptable, but document the rationale.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"}],"watcher_tempest_plugin/tests/scenario/test_execute_node_resource_consolidation.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":"7de235d482badc6ba0b1f25920edb30c63c6462b","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        _, action_plans \u003d self.client.list_action_plans("},{"line_number":264,"context_line":"            audit_uuid\u003daudit[\u0027uuid\u0027])"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        if len(action_plans[\u0027action_plans\u0027]) \u003e 0:"},{"line_number":267,"context_line":"            action_plan \u003d action_plans[\u0027action_plans\u0027][0]"},{"line_number":268,"context_line":"            _, action_plan_detail \u003d self.client.show_action_plan("},{"line_number":269,"context_line":"                action_plan[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"6996b1c5_0eb665c5","line":266,"updated":"2026-07-02 11:41:05.000000000","message":"node_resource_consolidation instance_scope test nests all assertions inside if-len-greater-than-0 conditionals, so it passes vacuously if no action plan or migrate actions are produced.\n\n**Severity**: HIGH | **Confidence**: 0.8\n\n**Risk**: If the strategy produces zero actions (e.g. instances too small to consolidate), the test passes without verifying that the excluded instance was respected. The instance-exclusion bug goes undetected.\n\n**Priority**: Before merge\n**Why This Matters**: A test that can pass without exercising the behavior under test provides false confidence. The same conditional-guard pattern affects host_scope tests in basic_optim, workload_balance, workload_stabilization, and vm_workload_consolidation.\n\n**Recommendation**:\nAssert that an action plan with migrate actions exists before the conditional checks, or restructure to use get_action_plan_and_validate_actions (as host_maintenance does) which fails if no actions are produced.","commit_id":"dbee62ca0aea5de2d23501df78f19fec3effb542"},{"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":"fd982a60626df5169b75ebf3b30b17cf37fce4e4","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        _, action_plans \u003d self.client.list_action_plans("},{"line_number":264,"context_line":"            audit_uuid\u003daudit[\u0027uuid\u0027])"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        if len(action_plans[\u0027action_plans\u0027]) \u003e 0:"},{"line_number":267,"context_line":"            action_plan \u003d action_plans[\u0027action_plans\u0027][0]"},{"line_number":268,"context_line":"            _, action_plan_detail \u003d self.client.show_action_plan("},{"line_number":269,"context_line":"                action_plan[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"32547f2c_c29400a0","line":266,"updated":"2026-09-16 14:09:32.000000000","message":"In six of the eight extended strategy files, the new Scope tests execute their action-plan and action assertions only inside \u0027if len(action_plans[\"action_plans\"]) \u003e 0:\u0027 and \u0027if len(migrate_actions) \u003e 0:\u0027 blocks. If watcher produces no action plan, or an action plan with no migrate actions, the test completes with no strategy-level assertion at all. The instance-scope tests never assert that the non-excluded instances WERE recommended for migration, so an over-exclusion regression that empties the action plan (the mirror image of the bugs this suite documents) passes silently. This also undermines the bug-documentation design: test_execute_node_resource_consolidation_with_instance_scope is documented as expected to FAIL, yet it passes vacuously whenever the strategy recommends nothing.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: Regressions in exactly the behavior this suite targets are masked: an empty or migrate-free action plan yields a green run, the PASS-expected instance-scope tests cannot detect over-exclusion, and the expected-FAIL node_resource_consolidation test loses its documented failure signal on environments where the strategy recommends nothing.\n\n**Suggestion**:\nAssert unconditionally that the finished audit produced an action plan, and where the scenario expects migrations, assert that the expected non-excluded instance UUIDs appear in migrated_uuids before or alongside the existing assertNotIn exclusion checks; reusing get_action_plan_and_validate_actions as the sibling regular tests do provides this for free.","commit_id":"d1e415b1ff929e995bd5bcd771adb8610c19848a"}],"watcher_tempest_plugin/tests/scenario/test_execute_zone_migration.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":"53fa4e3c7df9da786987685a1a94385dbebe868c","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        Related bug: https://bugs.launchpad.net/watcher/+bug/2151776"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        Steps:"},{"line_number":258,"context_line":"        1. Create 2 instances on host1 and 2 on host2"},{"line_number":259,"context_line":"        2. Define scope excluding 1 instance from each host"},{"line_number":260,"context_line":"        3. Create audit with zone_migration (host1+host2 -\u003e host3)"},{"line_number":261,"context_line":"        4. Verify excluded instances are NOT in action plan (will fail)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df6d15aa_d951a8c3","line":258,"updated":"2026-09-15 13:52:37.000000000","message":"The three new instance-scope test docstrings each say \u0027Related bug: https://bugs.launchpad.net/watcher/+bug/2151776\u0027, but the change message documents three distinct bugs: #2154805 (host_maintenance ignores instance exclusions), #2154806 (node_resource_consolidation), and #2154807 (zone_migration), and links all three. A single bug number cannot represent three distinct per-strategy defects, so at least two of the three docstring references point to the wrong bug report.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: The permanent in-code documentation directs maintainers who investigate or fix these strategy defects to one shared bug report that contradicts the change\u0027s own bug list, misattributing at least two of the three bugs and slowing the future fixes these tests are meant to track.\n\n**Suggestion**:\nUpdate each docstring to cite the bug the commit message documents (2154805 for host_maintenance, 2154806 for node_resource_consolidation, 2154807 for zone_migration); if 2151776 is actually the correct umbrella bug, instead correct the commit message and say so in the docstrings.","commit_id":"fbf77b7592fa8905dbbaee4f572df79056edc313"},{"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":"fd982a60626df5169b75ebf3b30b17cf37fce4e4","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        Related bug: https://bugs.launchpad.net/watcher/+bug/2151776"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        Steps:"},{"line_number":258,"context_line":"        1. Create 2 instances on host1 and 2 on host2"},{"line_number":259,"context_line":"        2. Define scope excluding 1 instance from each host"},{"line_number":260,"context_line":"        3. Create audit with zone_migration (host1+host2 -\u003e host3)"},{"line_number":261,"context_line":"        4. Verify excluded instances are NOT in action plan (will fail)"}],"source_content_type":"text/x-python","patch_set":5,"id":"76634d13_6e503662","line":258,"updated":"2026-09-16 14:09:32.000000000","message":"All three instance-scope tests that are expected to fail embed \u0027Related bug: https://bugs.launchpad.net/watcher/+bug/2151776\u0027. The commit message instead maps these same tests to three distinct reports: Bug #2154805 (host_maintenance ignores instance exclusions), Bug #2154806 (node_resource_consolidation), and Bug #2154807 (zone_migration), and lists them under \u0027Related bugs\u0027 as what this suite documents. The tests and the commit message therefore disagree about which bug each failing test documents; one of the two references is wrong, or the tests omit the per-strategy bugs entirely.\n\n**Severity**: SUGGESTION | **Confidence**: 0.85\n\n**Impact**: Broken traceability for future triage: a maintainer investigating the failing scope tests follows the docstring links to one report while the commit-message links point to three others, so the per-strategy bugs can appear unreferenced by the tests that are supposed to document them, and fixes may not remove or flip the right tests.\n\n**Recommendation**:\nConfirm the correct reports and cite the per-strategy IDs (2154805-07) in the matching test docstrings; keep the 2151776 link only if it is the umbrella report, and say so in the docstring to avoid ambiguity.","commit_id":"d1e415b1ff929e995bd5bcd771adb8610c19848a"}]}
