)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"8f464fd0714e5b8a40981c17af78c97acf5720a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"59c03baf_1cfdb3fa","updated":"2025-07-17 20:36:55.000000000","message":"@rajatdhasmana@gmail.com hello, please review this MR.","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f481727f250e9b5ac14cb0f014bb30fc3432e7ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ec91eae5_dd8fc3e1","updated":"2025-08-07 22:00:36.000000000","message":"I may be confused about the intent.  See comments inline.","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b310aad0e00b35085597b33a31c9e3eac012c708","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7a9bcb17_16399cab","updated":"2025-07-16 16:02:42.000000000","message":"I think this looks good to me.","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"da46c86d02a4ccde9dad9d2ba6748f8e55b0d40b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d8e5bd79_d83476f6","updated":"2025-08-11 12:59:33.000000000","message":"Thanks for the explanation, Tobias.  I still think there is another place where the option needs to be checked; see comment inline.","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"509db89a9e56488bc259e8329068bd52b0566ed3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5753d892_d71c85fc","updated":"2025-08-14 08:04:36.000000000","message":"Thanks for your thorough review Brian! I will set this as WIP for now and follow this up later when I have some time to context switch back to the backup service 😊","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"338090670c9b3da7e5f9f226824416a1e0643fb5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e89be434_4aa24392","updated":"2025-10-22 21:55:18.000000000","message":"I\u0027m curious to see the resolution of Dmitriy\u0027s comments, but otherwise this looks like it does what it should w/ Brian\u0027s suggestions.","commit_id":"a94e74b042a02809502834600d5d8b12669e3f44"}],"cinder/api/contrib/backups.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f481727f250e9b5ac14cb0f014bb30fc3432e7ed","unresolved":true,"context_lines":[{"line_number":175,"context_line":"        if req_version.matches(mv.BACKUP_AZ):"},{"line_number":176,"context_line":"            availability_zone \u003d backup.get(\u0027availability_zone\u0027, None)"},{"line_number":177,"context_line":"        else:"},{"line_number":178,"context_line":"            availability_zone \u003d None"},{"line_number":179,"context_line":"        az_text \u003d \u0027 in az %s\u0027 % availability_zone if availability_zone else \u0027\u0027"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        LOG.info(\"Creating backup of volume %(volume_id)s in container\""}],"source_content_type":"text/x-python","patch_set":1,"id":"99669728_d25b9023","line":178,"updated":"2025-08-07 22:00:36.000000000","message":"The az is populated from the request body if mv \u003e\u003d3.51 is requested","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"}],"cinder/backup/api.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f481727f250e9b5ac14cb0f014bb30fc3432e7ed","unresolved":true,"context_lines":[{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":1,"id":"a6d75a76_104cc3b0","line":56,"updated":"2025-08-07 22:00:36.000000000","message":"I am confused about why this should be an option.  I\u0027m pretty sure that the az that\u0027s being passed in at line 232 is coming from the user, so if an end user requests an incremental in az A and there\u0027s no parent available for that volume in that AZ, then wouldn\u0027t it make sense to reject the request?  Similarly, from the operator point of view, if I set this true, what am I expecting to happen?  If an end user asks for an incremental but forgets to specify an az in the request, then there is nothing to filter on, so we\u0027ll just be grabbing the first parent time-wise without paying attention to the az.  (Or maybe I\u0027m misunderstanding what\u0027s going on here.)","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"da46c86d02a4ccde9dad9d2ba6748f8e55b0d40b","unresolved":true,"context_lines":[{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":1,"id":"fbbaa02c_a90fe759","line":56,"in_reply_to":"6be2a830_1fbb09e1","updated":"2025-08-11 12:59:33.000000000","message":"Thanks for the explanation.  The openstack concept of an AZ is extremely malleable and this is one of the consequences!","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"7b1e2f22096ed38b01d67a4a8f3286ca55754d66","unresolved":true,"context_lines":[{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":1,"id":"6be2a830_1fbb09e1","line":56,"in_reply_to":"a6d75a76_104cc3b0","updated":"2025-08-11 06:27:28.000000000","message":"Unfortunately due to how the backup service with AZ works today, it\u0027s a perfectly valid use-case to have multiple backup service in different AZs use the same backup storage.\n\nFor us this doesn\u0027t work, since our backup clusters are not reachable across AZs, incrementals can try to use a base backup located in another availability zone which will just hang since it cannot connect to the backup storage.\n\nIn a perfect world I guess the specification for AZs in the backup service should have had this in mind(?) but since it\u0027s a valid use-case to have the same backup storage for backup services in different AZs I don\u0027t see a better way than to make it a configuration knob without having to \"break\" how the service currently works.","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"6dce18ce5ccfd2ca00bbde193cc8f7ca407187ff","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":1,"id":"464c5d66_d87ec5f6","line":56,"in_reply_to":"fbbaa02c_a90fe759","updated":"2025-08-29 07:45:45.000000000","message":"Done","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f481727f250e9b5ac14cb0f014bb30fc3432e7ed","unresolved":true,"context_lines":[{"line_number":314,"context_line":"                availability_zone\u003dfilter_az,"},{"line_number":315,"context_line":"            )"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"            if not parent_backup:"},{"line_number":318,"context_line":"                # NOTE (nschwarz) Fetching the parent backup via a database"},{"line_number":319,"context_line":"                # query is the optimized way but due to the previous filtering"},{"line_number":320,"context_line":"                # (including backups in the evaluation because a datetime was"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ba4fa02_e4da2e35","line":317,"updated":"2025-08-07 22:00:36.000000000","message":"Don\u0027t we also need to make an adjustment in the fallback code below?  Otherwise we could wind up with a possible parent in the wrong az, couldn\u0027t we?","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"f88568da8c167aac9b1f4efa4d55c311cbd68c48","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                availability_zone\u003dfilter_az,"},{"line_number":315,"context_line":"            )"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"            if not parent_backup:"},{"line_number":318,"context_line":"                # NOTE (nschwarz) Fetching the parent backup via a database"},{"line_number":319,"context_line":"                # query is the optimized way but due to the previous filtering"},{"line_number":320,"context_line":"                # (including backups in the evaluation because a datetime was"}],"source_content_type":"text/x-python","patch_set":1,"id":"1b92a1b2_2b9ec39c","line":317,"in_reply_to":"7ba4fa02_e4da2e35","updated":"2025-08-29 07:46:17.000000000","message":"Done","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"da46c86d02a4ccde9dad9d2ba6748f8e55b0d40b","unresolved":true,"context_lines":[{"line_number":339,"context_line":"                    if (parent_backup and parent_backup.status !\u003d"},{"line_number":340,"context_line":"                            fields.BackupStatus.AVAILABLE):"},{"line_number":341,"context_line":"                        parent_backup \u003d None"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"            if parent_backup:"},{"line_number":344,"context_line":"                parent_id \u003d parent_backup.id"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b4699146_ba59c1b0","line":342,"updated":"2025-08-11 12:59:33.000000000","message":"I think you need to check the new opt here, and if it\u0027s on, check the AZ of the parent_backup selected, and if it\u0027s not what we want, set parent_backup \u003d None so that we\u0027ll roll back the quota reservation and raise an exception at lines 352-354","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"9d60ae8529b36f65c4280fd1635d66d5487f966f","unresolved":true,"context_lines":[{"line_number":339,"context_line":"                    if (parent_backup and parent_backup.status !\u003d"},{"line_number":340,"context_line":"                            fields.BackupStatus.AVAILABLE):"},{"line_number":341,"context_line":"                        parent_backup \u003d None"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"            if parent_backup:"},{"line_number":344,"context_line":"                parent_id \u003d parent_backup.id"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"72e39782_69aea2a3","line":342,"in_reply_to":"b4699146_ba59c1b0","updated":"2025-08-29 07:44:43.000000000","message":"Updated with a check in the fallback block for that, let me know what you think. In the future that whole block should be removed as per the above comment so I don\u0027t think it\u0027s too ugly for now.","commit_id":"84c363598e6f74d95829f47679f7355732c9c8ee"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"d87edb8291c42025fb6841e33506a54c89f977a0","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027backup_use_same_host\u0027,"},{"line_number":51,"context_line":"                default\u003dFalse,"},{"line_number":52,"context_line":"                help\u003d\u0027Backup services use same backend.\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"a32074fd_13295280","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":62},"updated":"2025-09-03 14:43:22.000000000","message":"frankly, it sounds like a reasonable expectation from cinder-backup to always use same az as which was used when created. Thus I wonder if this should be configurable, or it should be always true?","commit_id":"a94e74b042a02809502834600d5d8b12669e3f44"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"4bc6ebeb076f2369069dfa15e73e3f9224d7610d","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027backup_use_same_host\u0027,"},{"line_number":51,"context_line":"                default\u003dFalse,"},{"line_number":52,"context_line":"                help\u003d\u0027Backup services use same backend.\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"8d288d6e_f1e5629b","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":62},"in_reply_to":"12e41279_e2d91949","updated":"2025-09-08 16:49:57.000000000","message":"This has nothing to do with the cinder-backup service itself, it\u0027s about what backup is select as a parent backup for an incremental backup and making sure that parent backup is never from/in another availability zone.","commit_id":"a94e74b042a02809502834600d5d8b12669e3f44"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"338090670c9b3da7e5f9f226824416a1e0643fb5","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027backup_use_same_host\u0027,"},{"line_number":51,"context_line":"                default\u003dFalse,"},{"line_number":52,"context_line":"                help\u003d\u0027Backup services use same backend.\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"670ccdda_47ebe83c","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":62},"in_reply_to":"64321b44_f4960a9f","updated":"2025-10-22 21:55:18.000000000","message":"To add to what Dmitriy is saying, should this be a valid use case wouldn\u0027t it make more sense for the setting to default to true?  Or is the idea to make the default setting match existing behavior?","commit_id":"a94e74b042a02809502834600d5d8b12669e3f44"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"d21d78c6a40fe256e56729bee525441263b8efe6","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027backup_use_same_host\u0027,"},{"line_number":51,"context_line":"                default\u003dFalse,"},{"line_number":52,"context_line":"                help\u003d\u0027Backup services use same backend.\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"c9eaa41b_0cd8576a","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":62},"in_reply_to":"8ba80b31_251e4163","updated":"2025-09-15 15:13:18.000000000","message":"And also figured another error, when attempting to restore a backup from AZ2, to the new volume, when default_az is set to AZ1 - then cinder-backup attempts to map the device and fails to do so.","commit_id":"a94e74b042a02809502834600d5d8b12669e3f44"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"cc729b9a4107c07947099a2582466c2403ff6c30","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027backup_use_same_host\u0027,"},{"line_number":51,"context_line":"                default\u003dFalse,"},{"line_number":52,"context_line":"                help\u003d\u0027Backup services use same backend.\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"e52f4673_2e81bb10","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":62},"in_reply_to":"8d288d6e_f1e5629b","updated":"2025-09-15 12:21:03.000000000","message":"Well, I am playing and testing cinder-backup right now in multi-AZ scenario, where cinder-volume in AZ1 does not have access to block storage of AZ2 - pretty much the scenario you are describing.\n\nBut I can not reproduce the usecase you are describing here.\n\n* If you create backup of volume in AZ1, by cinder-backup in AZ2 (ie running `openstack volume backup create --availability-zone az2 az1-volume`) should result in failure, if there\u0027s no inter-connection for the storage network\n* In case you create a backup in AZ1 of volume in AZ1 - you can not really restore it to AZ2 anyway. But then there should not be any confusion for incremental ones, as there can\u0027t be backups in a different AZ, if there\u0027s no cross-AZ connectivity.\n\n\nProbably, I am confusing myself somewhere... But at the moment I\u0027m not sure I really getting what problem is being solved.","commit_id":"a94e74b042a02809502834600d5d8b12669e3f44"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"4be0607f4de86afa4115f382157161f5d54f6380","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027backup_use_same_host\u0027,"},{"line_number":51,"context_line":"                default\u003dFalse,"},{"line_number":52,"context_line":"                help\u003d\u0027Backup services use same backend.\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"12e41279_e2d91949","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":62},"in_reply_to":"a32074fd_13295280","updated":"2025-09-08 13:54:14.000000000","message":"Looking at it again, I become quite confused on how this even happens. And why not to utilize `_get_available_backup_service_host()` if it\u0027s not yet used (which I _think_ it should be according to what I see in scheduler code as well:\nhttps://opendev.org/openstack/cinder/src/commit/35ef9616b307f970c63d2d0c0a39b8ef38817409/cinder/scheduler/host_manager.py#L1005-L1014\n\nSo eventually, this situation should never happen even without this option, because only cinder-backup service from the current availability zone should be targeted anyway?\n\nAnd if it\u0027s not the case and `_get_available_backup_service_host()` is not utilized during `create()` - then maybe it should be done instead of extra config option?","commit_id":"a94e74b042a02809502834600d5d8b12669e3f44"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"fe9de69453da61731a802e0857f747a98148ac20","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027backup_use_same_host\u0027,"},{"line_number":51,"context_line":"                default\u003dFalse,"},{"line_number":52,"context_line":"                help\u003d\u0027Backup services use same backend.\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"64321b44_f4960a9f","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":62},"in_reply_to":"c9eaa41b_0cd8576a","updated":"2025-09-15 15:18:57.000000000","message":"https://blueprints.launchpad.net/cinder/+spec/availabilityzone-and-volumetype-for-backup-restore","commit_id":"a94e74b042a02809502834600d5d8b12669e3f44"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"8532715ea57ab5542837018f50fab72fe769ac87","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027backup_use_same_host\u0027,"},{"line_number":51,"context_line":"                default\u003dFalse,"},{"line_number":52,"context_line":"                help\u003d\u0027Backup services use same backend.\u0027),"},{"line_number":53,"context_line":"    cfg.BoolOpt(\u0027backup_incremental_use_same_az\u0027,"},{"line_number":54,"context_line":"                default\u003dFalse,"},{"line_number":55,"context_line":"                help\u003d\u0027Incremental backups should use a parent \u0027"},{"line_number":56,"context_line":"                     \u0027backup in the same availability zone.\u0027),"},{"line_number":57,"context_line":"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"8ba80b31_251e4163","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":62},"in_reply_to":"e52f4673_2e81bb10","updated":"2025-09-15 12:24:08.000000000","message":"With that being said, I\u0027m having a completely opposite problem, to be frank.\n\nWhat I am testing, is using an external S3 storage for Ceph RBD backups. Each AZ has access to the S3, but only to it\u0027s local Ceph.\n\nSo what I actually was expecting cinder-backup to do, is to be able to restore volume from AZ1 to AZ2.\nBut the code I pointed above always delegates recovery process to the same AZ-aware worker, where backup was taken. And there\u0027s no way of doing that from what I see...","commit_id":"a94e74b042a02809502834600d5d8b12669e3f44"}]}
