)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"7d93c2d8614c79758251cd9872275f0646a4f454","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"d3027881_cb2c6d3e","updated":"2026-07-29 09:56:12.000000000","message":"Thanks! good improvement.","commit_id":"3fee2c298285b74b1a079845842545b48b3bbabf"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"89864a4779da881360b14776fa484cd4b4ce14b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"2790e5a3_643e5aac","updated":"2026-08-03 14:07:34.000000000","message":"LGTM,thanks Joan","commit_id":"1458f13df36b4a7d0e5a1446d36e8b701933369b"}],"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"},{"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":"4be311b67d1a68e6bc0563140b05165f9a0a9c25","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        super().setUp()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self.m_n_helper \u003d self.useFixture("},{"line_number":41,"context_line":"            fixtures.MockPatch("},{"line_number":42,"context_line":"                \"watcher.common.nova_helper.NovaHelper\", autospec\u003dFalse"},{"line_number":43,"context_line":"            )"},{"line_number":44,"context_line":"        ).mock.return_value"}],"source_content_type":"text/x-python","patch_set":12,"id":"f9329df3_db59d910","line":41,"updated":"2026-07-27 11:22:22.000000000","message":"The new setUp uses fixtures.MockPatch with autospec\u003dFalse for both NovaHelper and CinderHelper. The previous code created mocks with mock.Mock(spec\u003dnova_helper.NovaHelper) and mock.Mock(spec\u003dcinder_helper.CinderHelper), which provided attribute-level spec checking. With autospec\u003dFalse the resulti...\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Tests lose attribute-level interface validation for NovaHelper and CinderHelper mocks. A typo or incorrect method name in test assertions or setup will silently pass rather than failing, reducing the ability of tests to catch interface mismatches between test expectations and the real helper clas...\n\n**Recommendation**:\nUse autospec\u003dTrue instead of autospec\u003dFalse for both MockPatch calls. This restores and improves upon the spec checking that existed in the previous code, ensuring the mock instances conform to the real NovaHelper and CinderHelper interfaces. If autospec\u003dTrue causes issues with __init__ signatures, consider using mock.Mock(spec\u003d...) on the return_value as the old code did.","commit_id":"3fee2c298285b74b1a079845842545b48b3bbabf"}]}
