)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e3a9c74cd2cfd23c74592bddda03c9563b76c81a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"77f8a5af_1ddca6b3","updated":"2026-03-05 15:39:59.000000000","message":"thanks","commit_id":"7f0721e57c8c36a5637b2a6b5d764be31c96ede1"}],"watcher/tests/decision_engine/strategy/strategies/test_zone_migration.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"1d5018075a9457517861aae0e5efbdd3a80dcc83","unresolved":true,"context_lines":[{"line_number":1561,"context_line":"        self.assertEqual(dst_type, \"type3\")"},{"line_number":1562,"context_line":"        # check that after not matching type it falls backs to matching"},{"line_number":1563,"context_line":"        # src_pool"},{"line_number":1564,"context_line":"        pool \u003d \"src2@back1#pool1\""},{"line_number":1565,"context_line":"        dst_pool, dst_type \u003d self.strategy.get_dst_pool_and_type(pool)"},{"line_number":1566,"context_line":"        self.assertEqual(dst_pool, \"dst2@back2#pool1\")"},{"line_number":1567,"context_line":"        self.assertEqual(dst_type, \"type3\")"},{"line_number":1568,"context_line":"        # check not matching pool"},{"line_number":1569,"context_line":"        pool \u003d \"src3@back1#pool1\""},{"line_number":1570,"context_line":"        result \u003d self.strategy.get_dst_pool_and_type(pool)"}],"source_content_type":"text/x-python","patch_set":1,"id":"0375ce35_b2e83ed1","line":1567,"range":{"start_line":1564,"start_character":0,"end_line":1567,"end_character":43},"updated":"2025-11-28 14:10:31.000000000","message":"didn\u0027t get why you have this twice","commit_id":"aac548dcbe2f3257b2d6b847c1508bf6832eadb5"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"399ec947f4b484f395028e32c239fa9015f17cce","unresolved":true,"context_lines":[{"line_number":1561,"context_line":"        self.assertEqual(dst_type, \"type3\")"},{"line_number":1562,"context_line":"        # check that after not matching type it falls backs to matching"},{"line_number":1563,"context_line":"        # src_pool"},{"line_number":1564,"context_line":"        pool \u003d \"src2@back1#pool1\""},{"line_number":1565,"context_line":"        dst_pool, dst_type \u003d self.strategy.get_dst_pool_and_type(pool)"},{"line_number":1566,"context_line":"        self.assertEqual(dst_pool, \"dst2@back2#pool1\")"},{"line_number":1567,"context_line":"        self.assertEqual(dst_type, \"type3\")"},{"line_number":1568,"context_line":"        # check not matching pool"},{"line_number":1569,"context_line":"        pool \u003d \"src3@back1#pool1\""},{"line_number":1570,"context_line":"        result \u003d self.strategy.get_dst_pool_and_type(pool)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5d42075d_1f111a56","line":1567,"range":{"start_line":1564,"start_character":0,"end_line":1567,"end_character":43},"in_reply_to":"0375ce35_b2e83ed1","updated":"2025-11-28 14:23:01.000000000","message":"yeah that does not make much sense, I guess it\u0027s a leftover from copy-pasting at some point, I\u0027ve removed it thanks","commit_id":"aac548dcbe2f3257b2d6b847c1508bf6832eadb5"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"8c0fe90358445d19e532c207c00a91bb7e704e6e","unresolved":false,"context_lines":[{"line_number":1561,"context_line":"        self.assertEqual(dst_type, \"type3\")"},{"line_number":1562,"context_line":"        # check that after not matching type it falls backs to matching"},{"line_number":1563,"context_line":"        # src_pool"},{"line_number":1564,"context_line":"        pool \u003d \"src2@back1#pool1\""},{"line_number":1565,"context_line":"        dst_pool, dst_type \u003d self.strategy.get_dst_pool_and_type(pool)"},{"line_number":1566,"context_line":"        self.assertEqual(dst_pool, \"dst2@back2#pool1\")"},{"line_number":1567,"context_line":"        self.assertEqual(dst_type, \"type3\")"},{"line_number":1568,"context_line":"        # check not matching pool"},{"line_number":1569,"context_line":"        pool \u003d \"src3@back1#pool1\""},{"line_number":1570,"context_line":"        result \u003d self.strategy.get_dst_pool_and_type(pool)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f65d7663_f36e044e","line":1567,"range":{"start_line":1564,"start_character":0,"end_line":1567,"end_character":43},"in_reply_to":"5d42075d_1f111a56","updated":"2025-11-28 14:48:58.000000000","message":"Done","commit_id":"aac548dcbe2f3257b2d6b847c1508bf6832eadb5"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"33dc55f5b9786f29104c1831628f215d25a013ff","unresolved":true,"context_lines":[{"line_number":1569,"context_line":"        # combination"},{"line_number":1570,"context_line":"        self.input_parameters[\"storage_pools\"] \u003d ["},{"line_number":1571,"context_line":"            {"},{"line_number":1572,"context_line":"                \"src_pool\": \"src1@back1#pool1\","},{"line_number":1573,"context_line":"                \"dst_pool\": \"dst1@back1#pool1\","},{"line_number":1574,"context_line":"                \"dst_type\": \"type1\""},{"line_number":1575,"context_line":"            },"},{"line_number":1576,"context_line":"            {"},{"line_number":1577,"context_line":"                \"src_pool\": \"src1@back1#pool1\","}],"source_content_type":"text/x-python","patch_set":2,"id":"c04cb37c_90ba6e1e","line":1574,"range":{"start_line":1572,"start_character":0,"end_line":1574,"end_character":35},"updated":"2025-12-04 12:49:57.000000000","message":"Isn\u0027t this missing src_type?","commit_id":"e2e0a166d9bc177175e34dc2e4bcc097310e37f6"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"501fea108cdd9813116ae9b980baa9c86f60b9d7","unresolved":true,"context_lines":[{"line_number":1569,"context_line":"        # combination"},{"line_number":1570,"context_line":"        self.input_parameters[\"storage_pools\"] \u003d ["},{"line_number":1571,"context_line":"            {"},{"line_number":1572,"context_line":"                \"src_pool\": \"src1@back1#pool1\","},{"line_number":1573,"context_line":"                \"dst_pool\": \"dst1@back1#pool1\","},{"line_number":1574,"context_line":"                \"dst_type\": \"type1\""},{"line_number":1575,"context_line":"            },"},{"line_number":1576,"context_line":"            {"},{"line_number":1577,"context_line":"                \"src_pool\": \"src1@back1#pool1\","}],"source_content_type":"text/x-python","patch_set":2,"id":"72219448_88dd785c","line":1574,"range":{"start_line":1572,"start_character":0,"end_line":1574,"end_character":35},"in_reply_to":"125ee68e_c18b2c6b","updated":"2025-12-04 15:08:32.000000000","message":"yes, that is correct. The way I updated the method to fix the bug in the next patch in the series, it matches the most restrictive input possible. A possible (maybe a bit convoluted) use case for the highlighted parameters is a user wanting to move all volumes except for one type to a destination, and those with a particular type to another. If there were volumes with for example 3 or 4 different types, this would make the input parameters quite shorter","commit_id":"e2e0a166d9bc177175e34dc2e4bcc097310e37f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d1b3b99954b3fbf8c9a6c27c41ed13b1c778704b","unresolved":true,"context_lines":[{"line_number":1569,"context_line":"        # combination"},{"line_number":1570,"context_line":"        self.input_parameters[\"storage_pools\"] \u003d ["},{"line_number":1571,"context_line":"            {"},{"line_number":1572,"context_line":"                \"src_pool\": \"src1@back1#pool1\","},{"line_number":1573,"context_line":"                \"dst_pool\": \"dst1@back1#pool1\","},{"line_number":1574,"context_line":"                \"dst_type\": \"type1\""},{"line_number":1575,"context_line":"            },"},{"line_number":1576,"context_line":"            {"},{"line_number":1577,"context_line":"                \"src_pool\": \"src1@back1#pool1\","}],"source_content_type":"text/x-python","patch_set":2,"id":"d9b8bdd4_d2da7f20","line":1574,"range":{"start_line":1572,"start_character":0,"end_line":1574,"end_character":35},"in_reply_to":"72219448_88dd785c","updated":"2025-12-08 22:09:16.000000000","message":"we should proably have 2 seperate test for the two diffent cases.\n\nwe cant really retry and migrat evolume backend at the same time\n\ni tought we added a api scheam check to block that.\n\n\nin this case it ambiguous which  host \n\nvomues in \"src1@back1#pool1\" should bve moved too\n            {\n                \"src_pool\": \"src1@back1#pool1\",\n                \"dst_pool\": \"dst1@back1#pool1\",\n                \"dst_type\": \"type1\"\n            },\n            {\n                \"src_pool\": \"src1@back1#pool1\",\n                \"dst_pool\": \"dst3@back1#pool1\",\n                \"src_type\": \"type2\", \"dst_type\": \"type3\"\n            }\n            \nits valid to move voluems with  \"src_type\": \"type2\"\n\nto either destianton type or host.\n\nso this shoudl retrun a 400 bad request.","commit_id":"e2e0a166d9bc177175e34dc2e4bcc097310e37f6"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"f18f10464c0e19db3f3e92e49606f13ca16b8eee","unresolved":true,"context_lines":[{"line_number":1569,"context_line":"        # combination"},{"line_number":1570,"context_line":"        self.input_parameters[\"storage_pools\"] \u003d ["},{"line_number":1571,"context_line":"            {"},{"line_number":1572,"context_line":"                \"src_pool\": \"src1@back1#pool1\","},{"line_number":1573,"context_line":"                \"dst_pool\": \"dst1@back1#pool1\","},{"line_number":1574,"context_line":"                \"dst_type\": \"type1\""},{"line_number":1575,"context_line":"            },"},{"line_number":1576,"context_line":"            {"},{"line_number":1577,"context_line":"                \"src_pool\": \"src1@back1#pool1\","}],"source_content_type":"text/x-python","patch_set":2,"id":"125ee68e_c18b2c6b","line":1574,"range":{"start_line":1572,"start_character":0,"end_line":1574,"end_character":35},"in_reply_to":"c04cb37c_90ba6e1e","updated":"2025-12-04 12:55:40.000000000","message":"Actually, I\u0027d say there are two different use cases:\n\n1. One with same src_pool and different src_type (and different destinations)\n2. One where one has src_pool and src_type and the other element has only src_pool but src_type is undefined.\n\nIs that correct?","commit_id":"e2e0a166d9bc177175e34dc2e4bcc097310e37f6"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"dd9d69ec2a89c21ac0f10e02b57b5d641521e1f6","unresolved":true,"context_lines":[{"line_number":1569,"context_line":"        # combination"},{"line_number":1570,"context_line":"        self.input_parameters[\"storage_pools\"] \u003d ["},{"line_number":1571,"context_line":"            {"},{"line_number":1572,"context_line":"                \"src_pool\": \"src1@back1#pool1\","},{"line_number":1573,"context_line":"                \"dst_pool\": \"dst1@back1#pool1\","},{"line_number":1574,"context_line":"                \"dst_type\": \"type1\""},{"line_number":1575,"context_line":"            },"},{"line_number":1576,"context_line":"            {"},{"line_number":1577,"context_line":"                \"src_pool\": \"src1@back1#pool1\","}],"source_content_type":"text/x-python","patch_set":2,"id":"982fc341_638996f9","line":1574,"range":{"start_line":1572,"start_character":0,"end_line":1574,"end_character":35},"in_reply_to":"d9b8bdd4_d2da7f20","updated":"2025-12-10 10:32:57.000000000","message":"that\u0027s right, we merged that schema check, but since I created this patch before that one and I forgot to update the test cases. Since these tests do not create an audit, the schema check is not applied. I\u0027ve changed the test to remove the ambiguity. About the UX, I can see the ambiguity. We have a bug open to add validation for such cases https://bugs.launchpad.net/watcher/+bug/2121870 I would not add the validation to this patch.","commit_id":"e2e0a166d9bc177175e34dc2e4bcc097310e37f6"}],"watcher/tests/unit/decision_engine/strategy/strategies/test_zone_migration.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9d35b994d7c4d690dc45061ed9dfdecc1b727e3f","unresolved":true,"context_lines":[{"line_number":1551,"context_line":"                         [volume_on_src2, volume_on_src1])"},{"line_number":1552,"context_line":""},{"line_number":1553,"context_line":"    def test_get_dst_pool_and_type_matching_src_pool_type(self):"},{"line_number":1554,"context_line":"        # check that returns the right pool and type matching both  src_pool"},{"line_number":1555,"context_line":"        # and src_type"},{"line_number":1556,"context_line":"        pool \u003d \"src1@back1#pool1\""},{"line_number":1557,"context_line":"        dst_pool, dst_type \u003d self.strategy.get_dst_pool_and_type(pool)"},{"line_number":1558,"context_line":"        self.assertEqual(dst_pool, \"dst1@back1#pool1\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"4b7d1a47_e239859e","line":1555,"range":{"start_line":1554,"start_character":7,"end_line":1555,"end_character":22},"updated":"2026-03-05 15:56:11.000000000","message":"these comment dont really add anythin over the funtion name or reading the code\n\ncode comments in genreal shoudl not say waht the code does but why it does it\n\nif you need to respien  i woudl remvoe these","commit_id":"b484d2fdbba9afe6993991d40aa09280e0c05d77"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9d35b994d7c4d690dc45061ed9dfdecc1b727e3f","unresolved":true,"context_lines":[{"line_number":1564,"context_line":"        pool \u003d \"src2@back1#pool1\""},{"line_number":1565,"context_line":"        dst_pool, dst_type \u003d self.strategy.get_dst_pool_and_type(pool)"},{"line_number":1566,"context_line":"        self.assertEqual(dst_pool, \"dst2@back2#pool1\")"},{"line_number":1567,"context_line":"        self.assertEqual(dst_type, \"type3\")"},{"line_number":1568,"context_line":""},{"line_number":1569,"context_line":"    def test_get_dst_pool_and_type_not_matching_pool(self):"},{"line_number":1570,"context_line":"        # check not matching pool"}],"source_content_type":"text/x-python","patch_set":5,"id":"ced101e1_dd482703","line":1567,"updated":"2026-03-05 15:56:11.000000000","message":"so here the reason its type3 is really not obviousl (iuts from teh test seutp but this wouldhave been a good place to have a comment to say why.,","commit_id":"b484d2fdbba9afe6993991d40aa09280e0c05d77"}]}
