)]}'
{"watcher/tests/unit/applier/actions/test_volume_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":"c3b01bd74b57a0207a7d719c22257e23a933efd1","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        return cinder_helper.Volume.from_openstacksdk("},{"line_number":94,"context_line":"            self.create_openstacksdk_volume(**kwargs)"},{"line_number":95,"context_line":"        )"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _create_instance(self, **kwargs):"},{"line_number":98,"context_line":"        kwargs.setdefault(\u0027id\u0027, self.INSTANCE_UUID)"},{"line_number":99,"context_line":"        return nova_helper.Server.from_openstacksdk("}],"source_content_type":"text/x-python","patch_set":3,"id":"8d97988e_989553e3","line":96,"updated":"2026-06-25 15:01:24.000000000","message":"The old fake_volume defaulted size to string \u00271\u0027; the new create_openstacksdk_volume defaults size to integer 1. This is a correct type fix (Volume.size is int), but no test asserts on volume.size, so the improvement goes unverified here.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: An explicit assertion or comment noting that size is now an int would guard against accidental regression to the old string default and document the improved fidelity.\n\n**Recommendation**:\nOptional: note in the _create_volume docstring that the size default is now an int to match the Volume dataclass, or add a size assertion in test_migrate_success where the volume is exercised.","commit_id":"9ddeb40a69e9dfe9d18581d3136a287d4077d1a1"},{"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":"c3b01bd74b57a0207a7d719c22257e23a933efd1","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        return cinder_helper.Volume.from_openstacksdk("},{"line_number":94,"context_line":"            self.create_openstacksdk_volume(**kwargs)"},{"line_number":95,"context_line":"        )"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _create_instance(self, **kwargs):"},{"line_number":98,"context_line":"        kwargs.setdefault(\u0027id\u0027, self.INSTANCE_UUID)"},{"line_number":99,"context_line":"        return nova_helper.Server.from_openstacksdk("}],"source_content_type":"text/x-python","patch_set":3,"id":"5d45f314_cebe73dc","line":96,"updated":"2026-06-25 15:01:24.000000000","message":"_create_volume hardcodes \u0027volume_type\u0027 and \u0027host\u0027 defaults inline, but the underlying create_openstacksdk_volume already provides its own defaults, creating two layers of defaults that could diverge over time.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Centralising defaults in the shared mixins (or documenting why the test overrides them) reduces the risk of the two default sets drifting and makes the test intent clearer.\n\n**Recommendation**:\nDrop the setdefault calls for \u0027volume_type\u0027/\u0027host\u0027 from _create_volume and pass explicit values only at call sites that need them, or align the mixin defaults to match the test expectations. Minor; acceptable as a follow-up cleanup.","commit_id":"9ddeb40a69e9dfe9d18581d3136a287d4077d1a1"},{"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":"03309be2a0971b793a8a825e5ae4a70887363242","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            self.create_openstacksdk_volume(**kwargs)"},{"line_number":95,"context_line":"        )"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _create_instance(self, **kwargs):"},{"line_number":98,"context_line":"        kwargs.setdefault(\u0027id\u0027, self.INSTANCE_UUID)"},{"line_number":99,"context_line":"        return nova_helper.Server.from_openstacksdk("},{"line_number":100,"context_line":"            self.create_openstacksdk_server(**kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"a43867b7_9880638e","line":97,"updated":"2026-06-26 10:23:14.000000000","message":"The _create_instance and _create_volume helpers create real dataclass objects whose contracts differ from old MagicMocks. Server.__post_init__ validates the UUID, so callers must pass valid UUIDs for the id parameter.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Helps future contributors avoid InvalidUUID errors when adding tests that pass a non-UUID id, and clarifies the stronger contract of real dataclass objects versus loose MagicMocks.\n\n**Recommendation**:\nOptionally add a comment above _create_instance and _create_volume noting they build real frozen dataclasses via from_openstacksdk, so values must conform to dataclass contracts (e.g. valid UUID for Server.uuid).","commit_id":"a32c1ad4999f78694e6b29655d79c00104bba411"}]}
