)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"fcb94b1a955ab1cce632486265083e21c9ed65bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7eb78990_0267bc10","updated":"2025-08-18 15:04:46.000000000","message":"+1 for this fix and handle https://bugs.launchpad.net/watcher/+bug/2119957 separately","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"0ad15460b5da4770945219ad40bd3bedce48f588","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f0ddafd2_16bcbafa","updated":"2025-08-13 09:52:36.000000000","message":"Looks good.","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"05cf108fa845a3899bedadddf35a3bec8fbed250","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"80191ea8_0c90d35e","updated":"2025-09-15 12:46:45.000000000","message":"W -1: going to rebase on top of other zone_migration fixes","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"3f7dd824ada7a4f720f8526bfecfa858d5c2b185","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4f96a238_73de725d","updated":"2025-08-07 12:40:54.000000000","message":"as agreed on Watcher meeting, let\u0027s merge this fix and fill a new bug for replacing using nova client by the model to get the list of instances separatedly.","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"09c19035df56e34f8fccbcf0f8c121a6fd28225a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9818780a_3d2d9a87","updated":"2025-08-01 01:06:06.000000000","message":"check-rdo","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"}],"watcher/decision_engine/strategy/strategies/zone_migration.py":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"d6e039cdefacdcb8b240fc5e28d79024c0f4f47a","unresolved":true,"context_lines":[{"line_number":540,"context_line":"                return False"},{"line_number":541,"context_line":"            return False"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        return [i for i in self.nova.get_instance_list()"},{"line_number":544,"context_line":"                if getattr(i, \u0027OS-EXT-SRV-ATTR:host\u0027) in src_node_list and"},{"line_number":545,"context_line":"                _is_instance_in_model(i)]"},{"line_number":546,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ce3d782c_b9676557","line":543,"range":{"start_line":543,"start_character":0,"end_line":543,"end_character":2},"updated":"2025-08-06 13:42:09.000000000","message":"IMO, the actual bug is that we are taking the list of instances in the host from nova API instead of the existing model, and that can lead to lack-of-sync situations. Instead, I\u0027d say we should rely on the model for listing the instances on the hosts. wdyt?","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b05af22034df4b10aa842149126015f27f4fd825","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                return False"},{"line_number":541,"context_line":"            return False"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        return [i for i in self.nova.get_instance_list()"},{"line_number":544,"context_line":"                if getattr(i, \u0027OS-EXT-SRV-ATTR:host\u0027) in src_node_list and"},{"line_number":545,"context_line":"                _is_instance_in_model(i)]"},{"line_number":546,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1ba54727_45d02bea","line":543,"range":{"start_line":543,"start_character":0,"end_line":543,"end_character":2},"in_reply_to":"1de792a7_4cb2da4e","updated":"2025-08-07 13:27:10.000000000","message":"We agreed in watcher meeting[1] that we should file a separeted bug to tackle the api calls issue, which we can further discuss if it will be candidate for backporting too. Thanks for raising the discussion Alfredo.\n[1] https://meetings.opendev.org/meetings/watcher/2025/watcher.2025-08-07-12.00.log.html#l-104","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"84eea48f58e48605ec306f17d3d0bc2fd4f8d5d4","unresolved":true,"context_lines":[{"line_number":540,"context_line":"                return False"},{"line_number":541,"context_line":"            return False"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        return [i for i in self.nova.get_instance_list()"},{"line_number":544,"context_line":"                if getattr(i, \u0027OS-EXT-SRV-ATTR:host\u0027) in src_node_list and"},{"line_number":545,"context_line":"                _is_instance_in_model(i)]"},{"line_number":546,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1de792a7_4cb2da4e","line":543,"range":{"start_line":543,"start_character":0,"end_line":543,"end_character":2},"in_reply_to":"4f357f3d_3a109dee","updated":"2025-08-06 14:40:14.000000000","message":"yes, your solution will work. I think it\u0027s more a design pattern topic. My understanding is that ideally strategies should never use nova or cinder api directly, at least to list objects as volumes, instances or compute nodes. Instead should rely on the model to provide some consistency and reduce usage of external APIs. Also, using the model instead of api calls we get features provided by the model as applying an scope filter on top defined in the audit.\n\nWRT portability, I\u0027m not sure, tbh. Currently the model provides a method to retrieve all the instances in a host get_node_instances that we may rely one as we do in other strategies https://github.com/openstack/watcher/blob/a1e7156c7e8ffe65de56b90634acc031f1bdf35c/watcher/decision_engine/strategy/strategies/workload_stabilization.py#L429. Said that, I\u0027m not sure how much changes we\u0027d need to do in the strategy (fields of instances from nova and model are different so we probably need adjustments).","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3e69628332dd13a5643df18538b83e7e6bdd593c","unresolved":true,"context_lines":[{"line_number":540,"context_line":"                return False"},{"line_number":541,"context_line":"            return False"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        return [i for i in self.nova.get_instance_list()"},{"line_number":544,"context_line":"                if getattr(i, \u0027OS-EXT-SRV-ATTR:host\u0027) in src_node_list and"},{"line_number":545,"context_line":"                _is_instance_in_model(i)]"},{"line_number":546,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4f357f3d_3a109dee","line":543,"range":{"start_line":543,"start_character":0,"end_line":543,"end_character":2},"in_reply_to":"6b708113_8dd67498","updated":"2025-08-06 14:02:07.000000000","message":"In the end, it will only consider the instances that are already in the model, so the only advantage here is: if an instance was deleted or moved, but not the model yet, it will not be considered in the solution.","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c56bba7f554c60bbd5d84ad26a211290d2e2a6e3","unresolved":true,"context_lines":[{"line_number":540,"context_line":"                return False"},{"line_number":541,"context_line":"            return False"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        return [i for i in self.nova.get_instance_list()"},{"line_number":544,"context_line":"                if getattr(i, \u0027OS-EXT-SRV-ATTR:host\u0027) in src_node_list and"},{"line_number":545,"context_line":"                _is_instance_in_model(i)]"},{"line_number":546,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"6b708113_8dd67498","line":543,"range":{"start_line":543,"start_character":0,"end_line":543,"end_character":2},"in_reply_to":"ce3d782c_b9676557","updated":"2025-08-06 14:00:08.000000000","message":"I think that this strategy is the only one that does that indeed (or maybe there is another), but yes, this needs to be discussed I think, but this change here is more backportable I guess. We can discuss on changing this behavior (to only look at the model) for the current release only maybe?","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"d6e039cdefacdcb8b240fc5e28d79024c0f4f47a","unresolved":true,"context_lines":[{"line_number":560,"context_line":"                return False"},{"line_number":561,"context_line":"            return False"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        return [i for i in self.cinder.get_volume_list()"},{"line_number":564,"context_line":"                if getattr(i, \u0027os-vol-host-attr:host\u0027) in src_pool_list and"},{"line_number":565,"context_line":"                _is_volume_in_model(i)]"},{"line_number":566,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f02db99c_a7186428","line":563,"range":{"start_line":563,"start_character":27,"end_line":563,"end_character":54},"updated":"2025-08-06 13:42:09.000000000","message":"same for volumes","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c56bba7f554c60bbd5d84ad26a211290d2e2a6e3","unresolved":true,"context_lines":[{"line_number":560,"context_line":"                return False"},{"line_number":561,"context_line":"            return False"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        return [i for i in self.cinder.get_volume_list()"},{"line_number":564,"context_line":"                if getattr(i, \u0027os-vol-host-attr:host\u0027) in src_pool_list and"},{"line_number":565,"context_line":"                _is_volume_in_model(i)]"},{"line_number":566,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1e0f32bb_8c21c927","line":563,"range":{"start_line":563,"start_character":27,"end_line":563,"end_character":54},"in_reply_to":"f02db99c_a7186428","updated":"2025-08-06 14:00:08.000000000","message":"ditto","commit_id":"4b26927db4a77575dbe91d7d883ad6e80f2db96b"}]}
