)]}'
{"watcher/decision_engine/strategy/strategies/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":"10449994b22cbd3fe39a579b6405a37f30cdf99b","unresolved":false,"context_lines":[{"line_number":634,"context_line":"            return src_type is None or volume.volume_type \u003d\u003d src_type"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"        target_volumes \u003d []"},{"line_number":637,"context_line":"        for volume in self.storage_model.get_all_volumes().values():"},{"line_number":638,"context_line":"            pool_name \u003d volume.host"},{"line_number":639,"context_line":"            for migrate_input in self.migrate_storage_pools:"},{"line_number":640,"context_line":"                src_pool \u003d migrate_input[\"src_pool\"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b9de2bf_585b16e8","line":637,"updated":"2026-06-24 17:01:21.000000000","message":"get_volumes() previously filtered volumes through storage_model.has_node(volume.id) to skip volumes not in the model. The new code removes this check entirely. While iterating get_all_volumes() makes the check unnecessary, the comment explaining scope constraints was also removed.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Future maintainers may not understand why volumes outside the storage model are excluded from migration targets, since the filtering is now implicit via get_all_volumes(). If the model is incomplete, those volumes will silently not be migrated.\n\n**Suggestion**:\nAdd a brief comment before the loop explaining that get_all_volumes() returns only volumes tracked in the storage cluster data model and that volumes not in the model are intentionally excluded. Optionally add a debug log noting the total volume count being evaluated.","commit_id":"2413dbe55c3a7d03d85afed8bf2621cf7320164d"}],"watcher/tests/unit/decision_engine/strategy/strategies/test_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":"10449994b22cbd3fe39a579b6405a37f30cdf99b","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        except exception.PoolNotFound:"},{"line_number":120,"context_line":"            pool \u003d element.Pool("},{"line_number":121,"context_line":"                name\u003dhost,"},{"line_number":122,"context_line":"                total_volumes\u003d1,"},{"line_number":123,"context_line":"                total_capacity_gb\u003d500,"},{"line_number":124,"context_line":"                free_capacity_gb\u003d420,"},{"line_number":125,"context_line":"                provisioned_capacity_gb\u003d80,"}],"source_content_type":"text/x-python","patch_set":1,"id":"49862435_addd7987","line":122,"updated":"2026-06-24 17:01:21.000000000","message":"The add_volume_to_model test helper creates Pool objects with total_volumes\u003d1 hardcoded. When multiple volumes share the same pool (common in several tests), the pool total_volumes count will be incorrect.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: More accurate test fixtures that reflect real-world pool state, reducing the risk of tests passing against incorrect model data.\n\n**Recommendation**:\nAfter adding the volume to the pool, increment pool.total_volumes if the pool already exists. Alternatively, remove the hardcoded value and let the model manage the count if add_volume handles it.","commit_id":"2413dbe55c3a7d03d85afed8bf2621cf7320164d"},{"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":"10449994b22cbd3fe39a579b6405a37f30cdf99b","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            try:"},{"line_number":132,"context_line":"                node \u003d model.get_node_by_name(node_name)"},{"line_number":133,"context_line":"            except exception.StorageNodeNotFound:"},{"line_number":134,"context_line":"                node \u003d element.StorageNode("},{"line_number":135,"context_line":"                    host\u003dnode_name,"},{"line_number":136,"context_line":"                    zone\u003d\u0027zone\u0027,"},{"line_number":137,"context_line":"                    status\u003d\u0027enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"93801fcb_cbe27f95","line":134,"updated":"2026-06-24 17:01:21.000000000","message":"The add_volume_to_model test helper hardcodes StorageNode volume_type\u003d[\u0027type1\u0027] for all newly created nodes. When a test adds a volume with a different volume_type to a new pool, the StorageNode will not list that type, creating a model inconsistency.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Makes the test helper more robust by reflecting the actual volume_type being added, preventing false-positive test passes when node type filtering logic is added to the strategy later.\n\n**Recommendation**:\nDerive the StorageNode volume_type from the volume being added: volume_type\u003d[kwargs.get(\u0027volume_type\u0027, \u0027type1\u0027)], or set it to a broader list like [\u0027type1\u0027, \u0027type2\u0027, \u0027type3\u0027] to cover all test scenarios.","commit_id":"2413dbe55c3a7d03d85afed8bf2621cf7320164d"}]}
