)]}'
{"watcher/applier/actions/resize.py":[{"robot_id":"zuul","robot_run_id":"37bfc67a6535476b855ff534482bf1d6","url":"https://zuul.teim.app/t/main/buildset/37bfc67a6535476b855ff534482bf1d6","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":"aa3db473fb44400c721eb28b031268f58933a922","patch_set":1,"id":"43a4107f_a0e0dcb5","line":101,"updated":"2026-02-24 10:03:27.000000000","message":"Documentation could clarify why ActionSkipped is used for missing instance while ActionExecutionFailure is used for missing flavor\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Better understanding of the design decision - missing instance is transient (may be deleted by user) while missing flavor is configuration error\n\n**Recommendation**:\nConsider adding a brief comment explaining the rationale: missing instance \u003d skip (resource gone, not actionable), missing flavor \u003d fail (configuration issue that should be fixed). This helps future maintainers understand the semantic distinction.","commit_id":"0e5e1ea70c2fda4de5cc694604c2d2158f761601"},{"robot_id":"zuul","robot_run_id":"98bea0893aaa415ba2e6df0a943244b2","url":"https://zuul.teim.app/t/main/buildset/98bea0893aaa415ba2e6df0a943244b2","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":"4554a6b0801101e533b494d271fcd92b5a722c76","patch_set":2,"id":"c13c0e87_005dbe27","line":101,"updated":"2026-02-24 14:31:29.000000000","message":"Consider adding instance state validation as a precondition check\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Would prevent attempting resizes on instances in incompatible states (e.g., already being resized, in ERROR state), improving action reliability\n\n**Recommendation**:\nConsider adding a check for instance.vm_state or instance.status similar to migration.py which validates instance is ACTIVE before live migration. Resize operations typically require instances to be in ACTIVE or SHUTOFF states.","commit_id":"f40bd2f63760e7649980dc883dc62c68fa288dd0"},{"robot_id":"zuul","robot_run_id":"98bea0893aaa415ba2e6df0a943244b2","url":"https://zuul.teim.app/t/main/buildset/98bea0893aaa415ba2e6df0a943244b2","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":"4554a6b0801101e533b494d271fcd92b5a722c76","patch_set":2,"id":"c9af338e_1972429d","line":101,"updated":"2026-02-24 14:31:29.000000000","message":"No debug logging added in pre_condition method - inconsistent with existing action implementations\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: Lack of debug logging makes troubleshooting difficult when pre_condition checks fail or succeed, reducing operational visibility\n\n**Priority**: Before merge\n**Why This Matters**: Other actions like stop.py and migration.py include LOG.debug statements in pre_condition for visibility. Without logging, operators have reduced insight into why actions were skipped or failed during precondition phase.\n\n**Recommendation**:\nAdd LOG.debug statements before each precondition check to indicate what is being checked, similar to the pattern in stop.py pre_condition method. Example: LOG.debug(\u0027Checking resize preconditions for instance %s\u0027, self.instance_uuid) at method start.","commit_id":"f40bd2f63760e7649980dc883dc62c68fa288dd0"},{"robot_id":"zuul","robot_run_id":"98bea0893aaa415ba2e6df0a943244b2","url":"https://zuul.teim.app/t/main/buildset/98bea0893aaa415ba2e6df0a943244b2","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":"4554a6b0801101e533b494d271fcd92b5a722c76","patch_set":2,"id":"51584dc2_a9f95cb9","line":118,"updated":"2026-02-24 14:31:29.000000000","message":"Missing exception handling for NovaClientError in pre_condition - get_flavor_id can raise both ComputeResourceNotFound and NovaClientError exceptions\n\n**Severity**: CRITICAL | **Confidence**: 0.9\n\n**Risk**: NovaClientError exceptions (from SDK communication failures, auth errors, etc.) will not be caught and will be treated as generic exceptions in pre_condition, potentially causing incomplete error status handling\n\n**Priority**: Immediate\n**Why This Matters**: The get_flavor_id method can raise NovaClientError for SDK communication failures. Currently only ComputeResourceNotFound is caught, leaving NovaClientError to propagate. This is inconsistent with resize_instance method and could lead to improper error handling.\n\n**Recommendation**:\nAdd a catch block for NovaClientError exception after the ComputeResourceNotFound catch block. This should also raise ActionExecutionFailure to ensure proper action state management. Reference the pattern in migration.py pre_condition or resize_instance method for consistency.","commit_id":"f40bd2f63760e7649980dc883dc62c68fa288dd0"}],"watcher/tests/unit/applier/actions/test_resize.py":[{"robot_id":"zuul","robot_run_id":"37bfc67a6535476b855ff534482bf1d6","url":"https://zuul.teim.app/t/main/buildset/37bfc67a6535476b855ff534482bf1d6","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":"aa3db473fb44400c721eb28b031268f58933a922","patch_set":1,"id":"301415fb_f068b12e","line":94,"updated":"2026-02-24 10:03:27.000000000","message":"Test for edge case where both instance and flavor don\u0027t exist is not covered\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Improved test coverage would verify the error handling priority when multiple resources are missing\n\n**Recommendation**:\nAdd a test case where both find_instance and get_flavor_id raise exceptions. Current tests only cover each failure in isolation. The expected behavior is to fail on the first check (instance not found) since that check comes first.","commit_id":"0e5e1ea70c2fda4de5cc694604c2d2158f761601"}]}
