)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3fbbbe645157406fbb2ed20293ec929278cab26d","unresolved":true,"context_lines":[{"line_number":17,"context_line":"raises an exception if it finds that it needs to do a \u0027migrate\u0027 type"},{"line_number":18,"context_line":"volume migration and a destination storage pool is not passed."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Closes-Bug: 2108988"},{"line_number":21,"context_line":"Change-Id: Ida1f18b97697c041819e29f935aa5e232848226a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"2d799b8f_0588f5a6","line":20,"updated":"2025-05-16 11:37:38.000000000","message":"If we split this, it would be Partial-Bug, and then the follow-up patch will have Closes-Bug.","commit_id":"c215f6ac005b5085f14c7c87575759a6b029d5d6"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"ee5ddc168dcb0a9669d5962fba643947a108d4d0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"raises an exception if it finds that it needs to do a \u0027migrate\u0027 type"},{"line_number":18,"context_line":"volume migration and a destination storage pool is not passed."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Closes-Bug: 2108988"},{"line_number":21,"context_line":"Change-Id: Ida1f18b97697c041819e29f935aa5e232848226a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"76c931ba_04741872","line":20,"in_reply_to":"2d799b8f_0588f5a6","updated":"2025-05-16 11:52:14.000000000","message":"Acknowledged","commit_id":"c215f6ac005b5085f14c7c87575759a6b029d5d6"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"daf5f45dc96cc56aa66b22a1df98fed3d8918217","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5d290697_3875e922","updated":"2025-05-16 07:25:30.000000000","message":"Fix seems fine to me.\n\nAside note, unrelated with this particular issue, but it may be a follow up fix.\n\nIIUC, the strategy is not checking if the destination node exists at all, it simply puts it as the migration destination in the action as it comes from the parameter. In case the value is wrong, it will fail in the action. IMO, it should be good to check here and avoid passing a known-bad compute name.\n\nIt also does not check if the src_node exist, but imo that\u0027s is less problematic, as the only effect would be empty actionplan. Said this, we probably should check both.","commit_id":"c215f6ac005b5085f14c7c87575759a6b029d5d6"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"4df770a422a68b21eacf2afbed1f1046435775bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"00edce62_dfee38c6","in_reply_to":"5d290697_3875e922","updated":"2025-05-16 07:35:49.000000000","message":"that is a great idea for improvement, I\u0027ll do it in a followup, thanks for the suggestion!","commit_id":"c215f6ac005b5085f14c7c87575759a6b029d5d6"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"2b847e8421a1b79739d689ab81f8631369eec8d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"58ece739_3756cc82","updated":"2025-05-16 16:48:33.000000000","message":"Thanks for proposing this fix Joan","commit_id":"c6302edeca3d3ca7a9f13ca50ce68ff7db45d0db"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"59303c77012a890a2364b6a3c6a4279f4ee1910a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7cad2efd_3d60a783","updated":"2025-05-19 17:26:33.000000000","message":"W+1 since everybody agree with the approach of splitting.\nThanks Joan","commit_id":"c6302edeca3d3ca7a9f13ca50ce68ff7db45d0db"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"1fa3dde3256619396fa3ec675be0fe72f73f639a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"eb117e20_621d714a","updated":"2025-05-20 14:48:40.000000000","message":"recheck merged fix for the unit tests","commit_id":"c6302edeca3d3ca7a9f13ca50ce68ff7db45d0db"}],"releasenotes/notes/zone-migration-missing-dst-node-bd0377af1f1ed245.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3fbbbe645157406fbb2ed20293ec929278cab26d","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    https://bugs.launchpad.net/watcher/+bug/2108988 zone migration strategy"},{"line_number":5,"context_line":"    fails if dst_node or dst_pools are not passed, even though they are not"},{"line_number":6,"context_line":"    required parameters"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"4f5b999d_3cf65512","line":6,"updated":"2025-05-16 11:37:38.000000000","message":"if we split this, we will keep 1 release note in the first patch and then amend it in the follow up\n\n\nthis should be updated to summerise the bug by the way\n\nthe release nots can and often should like to the bug but the should not require you to click them\n\nthis sould ream more like this.\n```\nThe zone migration strategy no longer requires a dst_node to be passed.\nWhen unspecified, the Nova scheduler will select an appropriate host automatically.\nThis brings the implementation of the stragey in line with the the api schema\nwhere dest_node is optional.\n\nSee: https://bugs.launchpad.net/watcher/+bug/2108988 for more details.\n``` \n\nwe would extend this with a second short paragraph for the cinder volumes\nin the follow up patch.","commit_id":"c215f6ac005b5085f14c7c87575759a6b029d5d6"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"ee5ddc168dcb0a9669d5962fba643947a108d4d0","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    https://bugs.launchpad.net/watcher/+bug/2108988 zone migration strategy"},{"line_number":5,"context_line":"    fails if dst_node or dst_pools are not passed, even though they are not"},{"line_number":6,"context_line":"    required parameters"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"b5a973b6_179a4f6a","line":6,"in_reply_to":"4f5b999d_3cf65512","updated":"2025-05-16 11:52:14.000000000","message":"thanks for the example, I\u0027ve updated the relase note","commit_id":"c215f6ac005b5085f14c7c87575759a6b029d5d6"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"2b847e8421a1b79739d689ab81f8631369eec8d8","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    This brings the implementation of the strategy in line with the the api schema"},{"line_number":7,"context_line":"    where dest_node is optional."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    See: https://bugs.launchpad.net/watcher/+bug/2108988 for more details."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"78a5d7a2_58d32b63","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":74},"updated":"2025-05-16 16:48:33.000000000","message":"nit: I personally prefer using https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#hyperlinks for links, because it looks better after building.","commit_id":"c6302edeca3d3ca7a9f13ca50ce68ff7db45d0db"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c04f451b51700d6404c2be35dfd66511abfeaed5","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    This brings the implementation of the strategy in line with the the api schema"},{"line_number":7,"context_line":"    where dest_node is optional."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    See: https://bugs.launchpad.net/watcher/+bug/2108988 for more details."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"736eb9f0_09491695","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":74},"in_reply_to":"301e1eea_dee845a9","updated":"2025-05-16 17:06:35.000000000","message":"either is fine by the way\n\ni tend to read the release nots in git/gerrt much more frequently then the html view so tend to keep them simple.\n\nbut we do build them with sphinx so provide they are readable both ways then its mostly personal prefernce.","commit_id":"c6302edeca3d3ca7a9f13ca50ce68ff7db45d0db"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3d8b0aede284352f00c48e4a737badccadea4715","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    This brings the implementation of the strategy in line with the the api schema"},{"line_number":7,"context_line":"    where dest_node is optional."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    See: https://bugs.launchpad.net/watcher/+bug/2108988 for more details."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"301e1eea_dee845a9","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":74},"in_reply_to":"78a5d7a2_58d32b63","updated":"2025-05-16 17:00:14.000000000","message":"i tend to avoid them so that its clearer what it links to but im prefericly aware of how to wrtie them\n\neither works but i like to be very cleare what your clicking on before you clieck it so i dont have to check the link path on the bottom of my window every time.","commit_id":"c6302edeca3d3ca7a9f13ca50ce68ff7db45d0db"}],"watcher/decision_engine/strategy/strategies/zone_migration.py":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"86e3480dfc930895717dd06e197a2b659ed629a1","unresolved":true,"context_lines":[{"line_number":482,"context_line":"        self.planned_volume_update_count +\u003d 1"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def _volume_migrate(self, volume, dst_pool):"},{"line_number":485,"context_line":"        parameters \u003d {\"migration_type\": \"migrate\","},{"line_number":486,"context_line":"                      \"destination_node\": dst_pool,"},{"line_number":487,"context_line":"                      \"resource_name\": volume.name}"},{"line_number":488,"context_line":"        if dst_pool is None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"a9841b29_fb0db871","line":485,"range":{"start_line":485,"start_character":0,"end_line":485,"end_character":2},"updated":"2025-05-08 14:37:32.000000000","message":"minor nit, we may check dst_pool value before creating the parameters dict.","commit_id":"bc0f3c0185d73f0517ed22798cf410d4541190b3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"a9c59c91db76f4d0f46522282a010f857a36b5fb","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        self.planned_volume_update_count +\u003d 1"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def _volume_migrate(self, volume, dst_pool):"},{"line_number":485,"context_line":"        parameters \u003d {\"migration_type\": \"migrate\","},{"line_number":486,"context_line":"                      \"destination_node\": dst_pool,"},{"line_number":487,"context_line":"                      \"resource_name\": volume.name}"},{"line_number":488,"context_line":"        if dst_pool is None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"2baf1c0a_fecfbc59","line":485,"range":{"start_line":485,"start_character":0,"end_line":485,"end_character":2},"in_reply_to":"687ba9b0_5861de95","updated":"2025-05-15 11:01:16.000000000","message":"Done","commit_id":"bc0f3c0185d73f0517ed22798cf410d4541190b3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"42fcb9b3cf849afab62c7d2ca62a5fc56dfa3069","unresolved":true,"context_lines":[{"line_number":482,"context_line":"        self.planned_volume_update_count +\u003d 1"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def _volume_migrate(self, volume, dst_pool):"},{"line_number":485,"context_line":"        parameters \u003d {\"migration_type\": \"migrate\","},{"line_number":486,"context_line":"                      \"destination_node\": dst_pool,"},{"line_number":487,"context_line":"                      \"resource_name\": volume.name}"},{"line_number":488,"context_line":"        if dst_pool is None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"687ba9b0_5861de95","line":485,"range":{"start_line":485,"start_character":0,"end_line":485,"end_character":2},"in_reply_to":"a9841b29_fb0db871","updated":"2025-05-08 14:59:45.000000000","message":"yep, we could swap the order although it doesn\u0027t matter if we create an incorrect dict since we\u0027ll raise an error. If I have to update the patch I\u0027ll move the block to before the creation","commit_id":"bc0f3c0185d73f0517ed22798cf410d4541190b3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"043e48ae0ad589a8770f0b7e5cbf1fe656d0f241","unresolved":true,"context_lines":[{"line_number":485,"context_line":"        parameters \u003d {\"migration_type\": \"migrate\","},{"line_number":486,"context_line":"                      \"destination_node\": dst_pool,"},{"line_number":487,"context_line":"                      \"resource_name\": volume.name}"},{"line_number":488,"context_line":"        if dst_pool is None:"},{"line_number":489,"context_line":"            # if dst_node is None, we can\u0027t do the volume migration"},{"line_number":490,"context_line":"            # as the CinderClient\u0027s migrate method requires it"},{"line_number":491,"context_line":"            #"},{"line_number":492,"context_line":"            err_msg \u003d (\u0027dst_pool is required to migrate detached volume to\u0027"},{"line_number":493,"context_line":"                       \u0027 a pool with same volume type.\u0027)"},{"line_number":494,"context_line":"            LOG.error(err_msg)"},{"line_number":495,"context_line":"            raise exception.WatcherException(err_msg)"},{"line_number":496,"context_line":"        self.solution.add_action("},{"line_number":497,"context_line":"            action_type\u003d\"volume_migrate\","},{"line_number":498,"context_line":"            resource_id\u003dvolume.id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"cd9b0ca7_d4f718d8","line":495,"range":{"start_line":488,"start_character":0,"end_line":495,"end_character":53},"updated":"2025-05-08 14:29:29.000000000","message":"I may be missing something but, why not simply mark dst_pool as required parameter in https://github.com/openstack/watcher/blob/77e7e4ef7b5b0cd29e27b3529fdac4fdc2287d40/watcher/decision_engine/strategy/strategies/zone_migration.py#L125 ?\n\nThen, I think parameters validation would make the work.","commit_id":"bc0f3c0185d73f0517ed22798cf410d4541190b3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"a9c59c91db76f4d0f46522282a010f857a36b5fb","unresolved":false,"context_lines":[{"line_number":485,"context_line":"        parameters \u003d {\"migration_type\": \"migrate\","},{"line_number":486,"context_line":"                      \"destination_node\": dst_pool,"},{"line_number":487,"context_line":"                      \"resource_name\": volume.name}"},{"line_number":488,"context_line":"        if dst_pool is None:"},{"line_number":489,"context_line":"            # if dst_node is None, we can\u0027t do the volume migration"},{"line_number":490,"context_line":"            # as the CinderClient\u0027s migrate method requires it"},{"line_number":491,"context_line":"            #"},{"line_number":492,"context_line":"            err_msg \u003d (\u0027dst_pool is required to migrate detached volume to\u0027"},{"line_number":493,"context_line":"                       \u0027 a pool with same volume type.\u0027)"},{"line_number":494,"context_line":"            LOG.error(err_msg)"},{"line_number":495,"context_line":"            raise exception.WatcherException(err_msg)"},{"line_number":496,"context_line":"        self.solution.add_action("},{"line_number":497,"context_line":"            action_type\u003d\"volume_migrate\","},{"line_number":498,"context_line":"            resource_id\u003dvolume.id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"219b1702_feea5f9f","line":495,"range":{"start_line":488,"start_character":0,"end_line":495,"end_character":53},"in_reply_to":"1909ce71_df59974b","updated":"2025-05-15 11:01:16.000000000","message":"Acknowledged","commit_id":"bc0f3c0185d73f0517ed22798cf410d4541190b3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"86e3480dfc930895717dd06e197a2b659ed629a1","unresolved":true,"context_lines":[{"line_number":485,"context_line":"        parameters \u003d {\"migration_type\": \"migrate\","},{"line_number":486,"context_line":"                      \"destination_node\": dst_pool,"},{"line_number":487,"context_line":"                      \"resource_name\": volume.name}"},{"line_number":488,"context_line":"        if dst_pool is None:"},{"line_number":489,"context_line":"            # if dst_node is None, we can\u0027t do the volume migration"},{"line_number":490,"context_line":"            # as the CinderClient\u0027s migrate method requires it"},{"line_number":491,"context_line":"            #"},{"line_number":492,"context_line":"            err_msg \u003d (\u0027dst_pool is required to migrate detached volume to\u0027"},{"line_number":493,"context_line":"                       \u0027 a pool with same volume type.\u0027)"},{"line_number":494,"context_line":"            LOG.error(err_msg)"},{"line_number":495,"context_line":"            raise exception.WatcherException(err_msg)"},{"line_number":496,"context_line":"        self.solution.add_action("},{"line_number":497,"context_line":"            action_type\u003d\"volume_migrate\","},{"line_number":498,"context_line":"            resource_id\u003dvolume.id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1909ce71_df59974b","line":495,"range":{"start_line":488,"start_character":0,"end_line":495,"end_character":53},"in_reply_to":"cd9b0ca7_d4f718d8","updated":"2025-05-08 14:37:32.000000000","message":"Sorry, i think i got what i was missing, there are different operations _volume_retype vs _volume_migrate vs _volume_update, with logic:\n\n\n```\n            if self.is_available(volume):\n                if src_type \u003d\u003d dst_type:\n                    self._volume_migrate(volume, dst_pool)\n                else:\n                    self._volume_retype(volume, dst_type)\n            elif self.is_in_use(volume):\n                self._volume_update(volume, dst_type)\n```\n\nAnd dst_pool is only required in the volume_migrate case.\n\nUnfortunatelly, the driver only discovers the type of task on execution so we can not validate when creating the audit.","commit_id":"bc0f3c0185d73f0517ed22798cf410d4541190b3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"09d38720964d6ea2843e1bc9350f423c27dd248b","unresolved":true,"context_lines":[{"line_number":485,"context_line":"        parameters \u003d {\"migration_type\": \"migrate\","},{"line_number":486,"context_line":"                      \"destination_node\": dst_pool,"},{"line_number":487,"context_line":"                      \"resource_name\": volume.name}"},{"line_number":488,"context_line":"        if dst_pool is None:"},{"line_number":489,"context_line":"            # if dst_node is None, we can\u0027t do the volume migration"},{"line_number":490,"context_line":"            # as the CinderClient\u0027s migrate method requires it"},{"line_number":491,"context_line":"            #"},{"line_number":492,"context_line":"            err_msg \u003d (\u0027dst_pool is required to migrate detached volume to\u0027"},{"line_number":493,"context_line":"                       \u0027 a pool with same volume type.\u0027)"},{"line_number":494,"context_line":"            LOG.error(err_msg)"},{"line_number":495,"context_line":"            raise exception.WatcherException(err_msg)"},{"line_number":496,"context_line":"        self.solution.add_action("},{"line_number":497,"context_line":"            action_type\u003d\"volume_migrate\","},{"line_number":498,"context_line":"            resource_id\u003dvolume.id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"96f6e6ce_f43b04e8","line":495,"range":{"start_line":488,"start_character":0,"end_line":495,"end_character":53},"in_reply_to":"cd9b0ca7_d4f718d8","updated":"2025-05-08 14:36:52.000000000","message":"that is another option, the downside there is that for some operations (e.g volume migration that involve a retype or swap) we would be requiring a parameter that is not actually needed or used. That is suboptimal UX imo, but it might be a better solution","commit_id":"bc0f3c0185d73f0517ed22798cf410d4541190b3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3fbbbe645157406fbb2ed20293ec929278cab26d","unresolved":true,"context_lines":[{"line_number":480,"context_line":"            resource_id\u003dvolume.id,"},{"line_number":481,"context_line":"            input_parameters\u003dparameters)"},{"line_number":482,"context_line":"        self.planned_volume_update_count +\u003d 1"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def _volume_migrate(self, volume, dst_pool):"},{"line_number":485,"context_line":"        if dst_pool is None:"},{"line_number":486,"context_line":"            # if dst_node is None, we can\u0027t do the volume migration"}],"source_content_type":"text/x-python","patch_set":7,"id":"9e22304b_8266f96b","line":483,"updated":"2025-05-16 11:37:38.000000000","message":"can we split this patch in 2\n\nlet keep this patch for the vm migration i think letting nova choose is perfectly reasonabel in that case  os ^ is all correct.\n\nV is somethign we can add for existing audits perhaps\nbut really for new ones we shoudl update the schema to make it a required filed and reject the audit creation with a 400 if we are going to treat it as an error.\n\n\nlooking at https://docs.openstack.org/api-ref/block-storage/v3/index.html?expanded\u003ddetach-volume-from-server-detail#migrate-a-volume\n\nhost is optional which implies we could take the same apprcoh as nova and let the cinder schduler decied.\n\nbut it also has a cluser option cluster\n\nwhat we are actully tring to do is migrate between backend pools \n\nhttps://docs.openstack.org/api-ref/block-storage/v3/index.html?expanded\u003ddetach-volume-from-server-detail#list-all-back-end-storage-pools\n\nlooking at the existing test code the dst_pool is something like dst1@back1#pool1\n\n```\n{\"src_pool\": \"src1@back1#pool1\", \"dst_pool\": \"dst1@back1#pool1\",\n             \"src_type\": \"type1\", \"dst_type\": \"type1\"},\n```\n\nso we are moving the volume between hosts in a given pool on a single backend.\n\nthe cidner schduler was based on nova when nova_volume was extracted to form cinder\n\nso it has the same concpet of filters and weighers\n\nin this case the Allocated Capacity Weigher and Capacity Weigher\n\nshoudl be able to evacualate which host to migrate it too.\nhttps://docs.openstack.org/cinder/latest/configuration/block-storage/scheduler-weights.html#allocatedcapacityweigher\nhttps://docs.openstack.org/cinder/latest/configuration/block-storage/scheduler-weights.html#capacityweigher\n\nbut we shoudl reach out to the cinder team to advise on if this is a reasonabel thing to do.\n\nthat why im suggeesting puting this in a seperate patch so that we can merge the nova part first and follow up with the ciner part.","commit_id":"c215f6ac005b5085f14c7c87575759a6b029d5d6"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"2b847e8421a1b79739d689ab81f8631369eec8d8","unresolved":true,"context_lines":[{"line_number":480,"context_line":"            resource_id\u003dvolume.id,"},{"line_number":481,"context_line":"            input_parameters\u003dparameters)"},{"line_number":482,"context_line":"        self.planned_volume_update_count +\u003d 1"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def _volume_migrate(self, volume, dst_pool):"},{"line_number":485,"context_line":"        if dst_pool is None:"},{"line_number":486,"context_line":"            # if dst_node is None, we can\u0027t do the volume migration"}],"source_content_type":"text/x-python","patch_set":7,"id":"cb553e84_f5c7bb82","line":483,"in_reply_to":"9e22304b_8266f96b","updated":"2025-05-16 16:48:33.000000000","message":"+1, sounds good to treat them in different patches","commit_id":"c215f6ac005b5085f14c7c87575759a6b029d5d6"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"ee2feb571dba7321424968d62cd9ba2c33819aa4","unresolved":true,"context_lines":[{"line_number":480,"context_line":"            resource_id\u003dvolume.id,"},{"line_number":481,"context_line":"            input_parameters\u003dparameters)"},{"line_number":482,"context_line":"        self.planned_volume_update_count +\u003d 1"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def _volume_migrate(self, volume, dst_pool):"},{"line_number":485,"context_line":"        if dst_pool is None:"},{"line_number":486,"context_line":"            # if dst_node is None, we can\u0027t do the volume migration"}],"source_content_type":"text/x-python","patch_set":7,"id":"0381ee58_f4e92cd0","line":483,"in_reply_to":"9e22304b_8266f96b","updated":"2025-05-19 08:49:14.000000000","message":"yes, I\u0027ve split the patch in two, since as you pointed out the nova part was straightforward but the volume migration is quite more complex. The new patch https://review.opendev.org/c/openstack/watcher/+/950149/2?usp\u003drelated-change right now has the same code that this patch had before, but I\u0027ll go through the info here and rework it, thanks for the links!","commit_id":"c215f6ac005b5085f14c7c87575759a6b029d5d6"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"2b847e8421a1b79739d689ab81f8631369eec8d8","unresolved":true,"context_lines":[{"line_number":442,"context_line":""},{"line_number":443,"context_line":"            action_counter.add_node(src_node)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def _live_migration(self, instance, src_node, dst_node):"},{"line_number":446,"context_line":"        parameters \u003d {\"migration_type\": \"live\","},{"line_number":447,"context_line":"                      \"source_node\": src_node,"},{"line_number":448,"context_line":"                      \"resource_name\": instance.name}"}],"source_content_type":"text/x-python","patch_set":9,"id":"647aa829_39c849a1","line":445,"range":{"start_line":445,"start_character":50,"end_line":445,"end_character":58},"updated":"2025-05-16 16:48:33.000000000","message":"if it is optional now, would be good to set its default value, in this case would be dst_node\u003dNone","commit_id":"c6302edeca3d3ca7a9f13ca50ce68ff7db45d0db"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"2b847e8421a1b79739d689ab81f8631369eec8d8","unresolved":true,"context_lines":[{"line_number":456,"context_line":"            input_parameters\u003dparameters)"},{"line_number":457,"context_line":"        self.planned_live_count +\u003d 1"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def _cold_migration(self, instance, src_node, dst_node):"},{"line_number":460,"context_line":"        parameters \u003d {\"migration_type\": \"cold\","},{"line_number":461,"context_line":"                      \"source_node\": src_node,"},{"line_number":462,"context_line":"                      \"resource_name\": instance.name}"}],"source_content_type":"text/x-python","patch_set":9,"id":"4bad1a9b_2ee5fe7e","line":459,"range":{"start_line":459,"start_character":50,"end_line":459,"end_character":58},"updated":"2025-05-16 16:48:33.000000000","message":"ditto","commit_id":"c6302edeca3d3ca7a9f13ca50ce68ff7db45d0db"}],"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":"2b847e8421a1b79739d689ab81f8631369eec8d8","unresolved":true,"context_lines":[{"line_number":259,"context_line":"        migration_params \u003d solution.actions[0][\u0027input_parameters\u0027]"},{"line_number":260,"context_line":"        # since we have not passed \u0027dst_node\u0027 in the input, we should not have"},{"line_number":261,"context_line":"        # a destination_node in the generated migration action"},{"line_number":262,"context_line":"        self.assertNotIn(\u0027destination_node\u0027, migration_params)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def test_execute_cold_migrate_instance(self):"},{"line_number":265,"context_line":"        instance_on_src1 \u003d self.fake_instance("}],"source_content_type":"text/x-python","patch_set":9,"id":"076c1103_e58e8685","line":262,"range":{"start_line":262,"start_character":0,"end_line":262,"end_character":62},"updated":"2025-05-16 16:48:33.000000000","message":"pt201.20: watcher.tests.decision_engine.strategy.strategies.test_zone_migration.TestZoneMigration.test_execute_live_migrate_instance_no_dst_node\n\npass","commit_id":"c6302edeca3d3ca7a9f13ca50ce68ff7db45d0db"}]}
