)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"c61a69b9b8de6cfda924ef9398be38f93ed30a97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"96749946_20643080","updated":"2025-12-12 17:54:29.000000000","message":"If I understand this correctly, the idea is that instead of having one default container, e.g., \u0027volumebackups\u0027, you could use the template so that tenant XXX\u0027s default backup container would be, e.g., \u0027volumebackups_XXX\u0027.  This seems like a good idea to me, but if you have a large number of tenants, this proposal is going to be a problem when backup_create_containers\u003dFalse (from your other spec).  Though I guess an operator could write a script to create the containers for all tenants directly in the backend?  In any case, this spec and https://review.opendev.org/c/openstack/cinder-specs/+/958838 seem to be in tension with each other.\n\nAdditionally, I have a question inline about not storing the templated container name in the database.","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"70653a96e1cbae3bbc96ed7850e3eddee88821e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9b1aa51a_f5ecf892","in_reply_to":"96749946_20643080","updated":"2025-12-15 08:52:15.000000000","message":"Yes, that is exactly the intention for us 😊\n\nWill to elaborate on a use-case we are trying to implement now with cinder-backup.\n\nSo we wanna have a backup immutability, which can be set on S3 bucked with an object lock policy: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html#object-lock-how-deletes-work\n\nIdea is to pre-create a set of buckets users can choose from, where each will have different policies, ie: lock for 7 days, 14 days, 30 day, no lock (default bucket).\n\nAs policies may vary and we wanna have custom buckets as well - thus templating of names.\nAs we wanna avoid accidental creation of new buckets due to a typo or user mistakes - thus prohibition to create new buckets.","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"01693f99_cf5ca979","updated":"2026-01-08 14:25:04.000000000","message":"This is more of a grammtical, logic and spelling review than technical.\nThese suggestions make the spec much more readable.\nI do think the design is technically coherent and wl--scoped though.","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a0dbe7751135266f8debdbc39e0e81283ec83ee6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"78e46d06_221eacbf","updated":"2026-02-05 14:33:15.000000000","message":"Good from my side","commit_id":"ed4adb470f93846042fa46ec60de3be23d723471"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"1d5ea15b58c3cb01e3d821f5b488923ad1937da1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0e192f32_3c99aaf8","updated":"2026-02-20 16:39:24.000000000","message":"I understand the reasoning behind wanting this, but I\u0027m still worried about the fragility of the proposal with respect to modifying the template.  But I don\u0027t know that I have a good alternative, except to have a \"display_bucket_name\" and \"backend_bucket_name\" in the db; these would be set at the time of backup creation, with the backend_bucket_name being created from the current value of the template.  I haven\u0027t thought through the implications of that, though.  I think this could use a discussion at the cinder weekly meeting, or at the PTG, where we could do some live brainstorming.","commit_id":"ed4adb470f93846042fa46ec60de3be23d723471"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"c9c175180ab7e28d03783fb135faf1840307f9b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a69857b3_b5e44316","in_reply_to":"0e192f32_3c99aaf8","updated":"2026-03-03 17:22:09.000000000","message":"Brian - can you add an agenda item in the ptg etherpad for this so we dont loose it in the chaos?","commit_id":"ed4adb470f93846042fa46ec60de3be23d723471"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"75a0d9389808bb57b566d0d888cca65c6c2c3a01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c8038e96_0e1a5745","in_reply_to":"a69857b3_b5e44316","updated":"2026-04-09 14:40:58.000000000","message":"@jobernar@redhat.com what\u0027s the etherpad? As https://etherpad.opendev.org/p/apr2026-ptg-cinder looks like the wrong one.","commit_id":"ed4adb470f93846042fa46ec60de3be23d723471"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"6262b8b1bdc0336ae72d6ceccd7d8575aab25998","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"14b82234_8ec5a716","updated":"2026-04-22 16:40:59.000000000","message":"Go for it based on PTG discussion","commit_id":"b3f580471e792c8780168ac7736a6326c7ab241e"}],"specs/2026.1/add-backup-container-name-templating.rst":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3c12364a4186a321938aeb9f91098b34cc94cc86","unresolved":true,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Restrict new container creation for Cinder Backup"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The URL of launchpad blueprint:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b2540a1b_deb0ecd4","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":49},"updated":"2025-12-17 16:18:55.000000000","message":"I think you should have a different title -- this is the same as https://review.opendev.org/c/openstack/cinder-specs/+/958838","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"6ad5ae965b2e562f201707a00693a6e662157484","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Restrict new container creation for Cinder Backup"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The URL of launchpad blueprint:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"8bd07c34_a6670543","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":49},"in_reply_to":"b2540a1b_deb0ecd4","updated":"2025-12-18 09:58:29.000000000","message":"Done","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3c12364a4186a321938aeb9f91098b34cc94cc86","unresolved":true,"context_lines":[{"line_number":83,"context_line":"* region_name"},{"line_number":84,"context_line":"* availability_zone"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Current/default container name must be a required parameter in"},{"line_number":87,"context_line":"the template. ``cinder-backup`` must validate supplied templates"},{"line_number":88,"context_line":"on the startup and fail in case configuration is incorrect or missing"},{"line_number":89,"context_line":"required ``backup_default_container`` in the template."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"b45bd07a_065de139","line":87,"range":{"start_line":86,"start_character":0,"end_line":87,"end_character":13},"updated":"2025-12-17 16:18:55.000000000","message":"This is a key point, I think you should also mention it first in the introduction (you mention the user-supplied name first).  Also, I don\u0027t understand how it applies to user-supplied container names because i thought the default container name is required to be part of the template?","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"6ad5ae965b2e562f201707a00693a6e662157484","unresolved":false,"context_lines":[{"line_number":83,"context_line":"* region_name"},{"line_number":84,"context_line":"* availability_zone"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Current/default container name must be a required parameter in"},{"line_number":87,"context_line":"the template. ``cinder-backup`` must validate supplied templates"},{"line_number":88,"context_line":"on the startup and fail in case configuration is incorrect or missing"},{"line_number":89,"context_line":"required ``backup_default_container`` in the template."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"b15518e0_a5de7c05","line":87,"range":{"start_line":86,"start_character":0,"end_line":87,"end_character":13},"in_reply_to":"b45bd07a_065de139","updated":"2025-12-18 09:58:29.000000000","message":"So it is confusing in how flow works. But in case user has supplied a custom container name in API call it is passed to the chunked driver as `backup_default_container` regardless. So it is applicable for default and arbitrary in the same way.","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"c61a69b9b8de6cfda924ef9398be38f93ed30a97","unresolved":true,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"With that applied template should not be exposed to the end user,"},{"line_number":95,"context_line":"thus it should not be written down to the database, so templating"},{"line_number":96,"context_line":"should be executed during both backup and restoration process."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Alternatives"},{"line_number":99,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7f6f8676_21c41a19","line":96,"updated":"2025-12-12 17:54:29.000000000","message":"This seems like a problem.  Suppose I start out with a template that refers to tenant_id only, and then decide I want to use both tenant_id and az.  The database only says \u0027containerXXX\u0027, but the data is actually in \u0027containerXXX_tenantYYY\u0027, but now I will look for it in \u0027containerXXX_tenantYYY_azAAA\u0027, but the backup won\u0027t be there.  Or am I misunderstanding your proposal?","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e530d91796317033c5145e1491668c01e7ded411","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"With that applied template should not be exposed to the end user,"},{"line_number":95,"context_line":"thus it should not be written down to the database, so templating"},{"line_number":96,"context_line":"should be executed during both backup and restoration process."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Alternatives"},{"line_number":99,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"daaea580_3e5fa976","line":96,"in_reply_to":"483a76d5_330ef176","updated":"2025-12-18 09:59:25.000000000","message":"I\u0027ve added description, that it is operator responsibility to ensure that container names are matching the value of the template in case parameter is changed during the runtime.","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"70653a96e1cbae3bbc96ed7850e3eddee88821e3","unresolved":true,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"With that applied template should not be exposed to the end user,"},{"line_number":95,"context_line":"thus it should not be written down to the database, so templating"},{"line_number":96,"context_line":"should be executed during both backup and restoration process."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Alternatives"},{"line_number":99,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"483a76d5_330ef176","line":96,"in_reply_to":"7f6f8676_21c41a19","updated":"2025-12-15 08:52:15.000000000","message":"Well, yes, you are right here, that in case of changing the parameter, all backups made before will resolve wrongly...\n\nThe problem is, that I think returning and storing modified container name, when user asked for a completely different one is confusing from user perspective. And in case of POSIX driver may expose a structure, which might be dangerous.\n\nSo another way around it would be to store actual path in database, but do reverse parse based on the template for the user API call. But that also feels like a messy solution from implementation perspective...\n\nI\u0027m really open to suggestions, but in reference implementation (https://review.opendev.org/c/openstack/cinder/+/962909) it felt like accepting the fact that template name can not change is the easiest solution.","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3c12364a4186a321938aeb9f91098b34cc94cc86","unresolved":true,"context_lines":[{"line_number":210,"context_line":"References"},{"line_number":211,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e89bf828_22b9ec32","line":213,"updated":"2025-12-17 16:18:55.000000000","message":"It would be good to list the reference implementation here.","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"6ad5ae965b2e562f201707a00693a6e662157484","unresolved":false,"context_lines":[{"line_number":210,"context_line":"References"},{"line_number":211,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7603677b_0c814288","line":213,"in_reply_to":"e89bf828_22b9ec32","updated":"2025-12-18 09:58:29.000000000","message":"Done","commit_id":"b4c44621b548a2b67ad02169007449fc985ed7ed"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://blueprints.launchpad.net/cinder/+spec/backup-container-name-template"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This spec is focused on introduction of ability to have an ability to define a"},{"line_number":16,"context_line":"container name template, by extending user supplied or default container names"},{"line_number":17,"context_line":"with variables, like project or user ID, volume ID, etc."},{"line_number":18,"context_line":"With that, currently defined ``backup_default_container`` variable should be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"97a2af1f_2d786d63","line":15,"range":{"start_line":15,"start_character":13,"end_line":15,"end_character":78},"updated":"2026-01-08 14:25:04.000000000","message":"better as \"focused on introducing the ability to define a\"","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://blueprints.launchpad.net/cinder/+spec/backup-container-name-template"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This spec is focused on introduction of ability to have an ability to define a"},{"line_number":16,"context_line":"container name template, by extending user supplied or default container names"},{"line_number":17,"context_line":"with variables, like project or user ID, volume ID, etc."},{"line_number":18,"context_line":"With that, currently defined ``backup_default_container`` variable should be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"334dec7e_6a899b60","line":15,"range":{"start_line":15,"start_character":13,"end_line":15,"end_character":78},"in_reply_to":"97a2af1f_2d786d63","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":13,"context_line":"https://blueprints.launchpad.net/cinder/+spec/backup-container-name-template"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This spec is focused on introduction of ability to have an ability to define a"},{"line_number":16,"context_line":"container name template, by extending user supplied or default container names"},{"line_number":17,"context_line":"with variables, like project or user ID, volume ID, etc."},{"line_number":18,"context_line":"With that, currently defined ``backup_default_container`` variable should be"},{"line_number":19,"context_line":"a required parameter in the resulting template."}],"source_content_type":"text/x-rst","patch_set":4,"id":"e5741b42_3184ffa5","line":16,"range":{"start_line":16,"start_character":38,"end_line":16,"end_character":51},"updated":"2026-01-08 14:25:04.000000000","message":"should be hyphenated as \u0027user-supplied\u0027","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"https://blueprints.launchpad.net/cinder/+spec/backup-container-name-template"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This spec is focused on introduction of ability to have an ability to define a"},{"line_number":16,"context_line":"container name template, by extending user supplied or default container names"},{"line_number":17,"context_line":"with variables, like project or user ID, volume ID, etc."},{"line_number":18,"context_line":"With that, currently defined ``backup_default_container`` variable should be"},{"line_number":19,"context_line":"a required parameter in the resulting template."}],"source_content_type":"text/x-rst","patch_set":4,"id":"a2968330_bb153821","line":16,"range":{"start_line":16,"start_character":38,"end_line":16,"end_character":51},"in_reply_to":"e5741b42_3184ffa5","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":15,"context_line":"This spec is focused on introduction of ability to have an ability to define a"},{"line_number":16,"context_line":"container name template, by extending user supplied or default container names"},{"line_number":17,"context_line":"with variables, like project or user ID, volume ID, etc."},{"line_number":18,"context_line":"With that, currently defined ``backup_default_container`` variable should be"},{"line_number":19,"context_line":"a required parameter in the resulting template."},{"line_number":20,"context_line":"Container template name is defined in cinder-backup configuration file, and is"},{"line_number":21,"context_line":"an admin feature to adjust resulting container name according to the template."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"6a143f53_b0901306","line":19,"range":{"start_line":18,"start_character":0,"end_line":19,"end_character":47},"updated":"2026-01-08 14:25:04.000000000","message":"this seems ambiguous. Maybe \"As a result, the currently defined backup_default_container variable should be a required parameter in the resulting template.”","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"This spec is focused on introduction of ability to have an ability to define a"},{"line_number":16,"context_line":"container name template, by extending user supplied or default container names"},{"line_number":17,"context_line":"with variables, like project or user ID, volume ID, etc."},{"line_number":18,"context_line":"With that, currently defined ``backup_default_container`` variable should be"},{"line_number":19,"context_line":"a required parameter in the resulting template."},{"line_number":20,"context_line":"Container template name is defined in cinder-backup configuration file, and is"},{"line_number":21,"context_line":"an admin feature to adjust resulting container name according to the template."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"a108e129_e4769ed3","line":19,"range":{"start_line":18,"start_character":0,"end_line":19,"end_character":47},"in_reply_to":"6a143f53_b0901306","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":17,"context_line":"with variables, like project or user ID, volume ID, etc."},{"line_number":18,"context_line":"With that, currently defined ``backup_default_container`` variable should be"},{"line_number":19,"context_line":"a required parameter in the resulting template."},{"line_number":20,"context_line":"Container template name is defined in cinder-backup configuration file, and is"},{"line_number":21,"context_line":"an admin feature to adjust resulting container name according to the template."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"795daf17_8d502c2d","line":20,"updated":"2026-01-08 14:25:04.000000000","message":"The container...","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"with variables, like project or user ID, volume ID, etc."},{"line_number":18,"context_line":"With that, currently defined ``backup_default_container`` variable should be"},{"line_number":19,"context_line":"a required parameter in the resulting template."},{"line_number":20,"context_line":"Container template name is defined in cinder-backup configuration file, and is"},{"line_number":21,"context_line":"an admin feature to adjust resulting container name according to the template."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"09ea17ac_7d9379c1","line":20,"in_reply_to":"795daf17_8d502c2d","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":24,"context_line":"Problem description"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"For backup drivers based of ``chunkeddriver`` a default ``container`` name is"},{"line_number":28,"context_line":"supplied in the configuration file, while users are able to supply any"},{"line_number":29,"context_line":"arbitrary ``container`` name for backup creation request."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"15f496ec_d401aecd","line":27,"range":{"start_line":27,"start_character":25,"end_line":27,"end_character":28},"updated":"2026-01-08 14:25:04.000000000","message":"nit: on","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Problem description"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"For backup drivers based of ``chunkeddriver`` a default ``container`` name is"},{"line_number":28,"context_line":"supplied in the configuration file, while users are able to supply any"},{"line_number":29,"context_line":"arbitrary ``container`` name for backup creation request."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aaa5330_5a7cd55d","line":27,"range":{"start_line":27,"start_character":25,"end_line":27,"end_character":28},"in_reply_to":"15f496ec_d401aecd","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":28,"context_line":"supplied in the configuration file, while users are able to supply any"},{"line_number":29,"context_line":"arbitrary ``container`` name for backup creation request."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"While this provides some level of flexibility and let users separate data in"},{"line_number":32,"context_line":"a way, current implementation is not suitable for public cloud offerings and"},{"line_number":33,"context_line":"do not provide any efficient or guaranteed tenant separation on the storage"},{"line_number":34,"context_line":"side, as all tenant data will be stored in the same bucket by default, with"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6b8fd5a2_c7353dd2","line":31,"range":{"start_line":31,"start_character":50,"end_line":31,"end_character":54},"updated":"2026-01-08 14:25:04.000000000","message":"nit: lets","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"supplied in the configuration file, while users are able to supply any"},{"line_number":29,"context_line":"arbitrary ``container`` name for backup creation request."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"While this provides some level of flexibility and let users separate data in"},{"line_number":32,"context_line":"a way, current implementation is not suitable for public cloud offerings and"},{"line_number":33,"context_line":"do not provide any efficient or guaranteed tenant separation on the storage"},{"line_number":34,"context_line":"side, as all tenant data will be stored in the same bucket by default, with"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6f445603_d5a8a241","line":31,"range":{"start_line":31,"start_character":50,"end_line":31,"end_character":54},"in_reply_to":"6b8fd5a2_c7353dd2","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"While this provides some level of flexibility and let users separate data in"},{"line_number":32,"context_line":"a way, current implementation is not suitable for public cloud offerings and"},{"line_number":33,"context_line":"do not provide any efficient or guaranteed tenant separation on the storage"},{"line_number":34,"context_line":"side, as all tenant data will be stored in the same bucket by default, with"},{"line_number":35,"context_line":"various deviations in case of user-supplied container names."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"98a3e881_811590ca","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":3},"updated":"2026-01-08 14:25:04.000000000","message":"nit: does","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"While this provides some level of flexibility and let users separate data in"},{"line_number":32,"context_line":"a way, current implementation is not suitable for public cloud offerings and"},{"line_number":33,"context_line":"do not provide any efficient or guaranteed tenant separation on the storage"},{"line_number":34,"context_line":"side, as all tenant data will be stored in the same bucket by default, with"},{"line_number":35,"context_line":"various deviations in case of user-supplied container names."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"2d1c73eb_3ec83e0e","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":3},"in_reply_to":"98a3e881_811590ca","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":34,"context_line":"side, as all tenant data will be stored in the same bucket by default, with"},{"line_number":35,"context_line":"various deviations in case of user-supplied container names."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"At the moment template :"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"* s3"},{"line_number":40,"context_line":"* gcs"}],"source_content_type":"text/x-rst","patch_set":4,"id":"882c6062_ca54270b","line":37,"updated":"2026-01-08 14:25:04.000000000","message":"be clearer. Maybe \"At the moment, this applies to the following backends\"","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"At the moment template :"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"* s3"},{"line_number":40,"context_line":"* gcs"},{"line_number":41,"context_line":"* posix"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"This issue is not relevant for the ``swift`` backend, which is also a child"},{"line_number":44,"context_line":"of ``chunkeddriver``, but supports proper multi-tenancy and the only driver"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a8cb045c_168c00aa","line":41,"range":{"start_line":39,"start_character":0,"end_line":41,"end_character":7},"updated":"2026-01-08 14:25:04.000000000","message":"These should probably be capitalized","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"This issue is not relevant for the ``swift`` backend, which is also a child"},{"line_number":44,"context_line":"of ``chunkeddriver``, but supports proper multi-tenancy and the only driver"},{"line_number":45,"context_line":"which allows storing the data within the tenant quota."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dbc5fff3_d1fef92f","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":0},"in_reply_to":"882c6062_ca54270b","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"of ``chunkeddriver``, but supports proper multi-tenancy and the only driver"},{"line_number":45,"context_line":"which allows storing the data within the tenant quota."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Use Cases"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"* Operators might want to ensure that data is stored in a different buckets or"},{"line_number":52,"context_line":"  containers for each tenant."}],"source_content_type":"text/x-rst","patch_set":4,"id":"c91708fa_8056dc4e","line":49,"range":{"start_line":47,"start_character":0,"end_line":49,"end_character":7},"in_reply_to":"a8cb045c_168c00aa","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":48,"context_line":"Use Cases"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"* Operators might want to ensure that data is stored in a different buckets or"},{"line_number":52,"context_line":"  containers for each tenant."},{"line_number":53,"context_line":"* Set different quotas or policies on the backend for different tenants."},{"line_number":54,"context_line":"* Ensure that billing policies are adequate and possible based on container"}],"source_content_type":"text/x-rst","patch_set":4,"id":"de21326a_9bf6fe58","line":51,"range":{"start_line":51,"start_character":56,"end_line":51,"end_character":58},"updated":"2026-01-08 14:25:04.000000000","message":"nit: the \u0027a\u0027 is unnecessary","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* Diversify risks in case of bucket metadata corruption in third-party S3"},{"line_number":57,"context_line":"  implementations (like Ceph RadosGW)."},{"line_number":58,"context_line":"* Use different mount points based on tenant."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Proposed change"},{"line_number":61,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"05961745_39191615","line":59,"range":{"start_line":59,"start_character":56,"end_line":59,"end_character":58},"in_reply_to":"de21326a_9bf6fe58","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Implement a configuration option ``backup_container_name_template`` which"},{"line_number":64,"context_line":"will be defined for the ``chunkeddriver``. Having a single option simplifies"},{"line_number":65,"context_line":"the logic and make code more readable."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Default value for the option will be equal to the ``%(backup_default_container)``"},{"line_number":68,"context_line":"which is the default name defined for respective drivers."}],"source_content_type":"text/x-rst","patch_set":4,"id":"b3ce53e8_fdf7f4bd","line":65,"range":{"start_line":65,"start_character":14,"end_line":65,"end_character":19},"updated":"2026-01-08 14:25:04.000000000","message":"nit: makes","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":67,"context_line":"Default value for the option will be equal to the ``%(backup_default_container)``"},{"line_number":68,"context_line":"which is the default name defined for respective drivers."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Despite option is being defined per-driver, logic for processing it"},{"line_number":71,"context_line":"will be implemented centrally inside the ``chunkeddriver``."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"It is proposed to implement template functionality alike to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"f0cb61fa_b1c3391d","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":42},"updated":"2026-01-08 14:25:04.000000000","message":"\"Although the option is defined per driver\" is better","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":70,"context_line":"Despite option is being defined per-driver, logic for processing it"},{"line_number":71,"context_line":"will be implemented centrally inside the ``chunkeddriver``."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"It is proposed to implement template functionality alike to"},{"line_number":74,"context_line":"``backup_name_template``, with exception to allow operators to use"},{"line_number":75,"context_line":"wider range of variables, to use as part of the template."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fd8db64_e0edf845","line":73,"range":{"start_line":73,"start_character":51,"end_line":73,"end_character":57},"updated":"2026-01-08 14:25:04.000000000","message":"nit: similar","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Despite option is being defined per-driver, logic for processing it"},{"line_number":71,"context_line":"will be implemented centrally inside the ``chunkeddriver``."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"It is proposed to implement template functionality alike to"},{"line_number":74,"context_line":"``backup_name_template``, with exception to allow operators to use"},{"line_number":75,"context_line":"wider range of variables, to use as part of the template."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"d2223f50_ad79e50f","line":73,"range":{"start_line":73,"start_character":14,"end_line":73,"end_character":19},"in_reply_to":"b3ce53e8_fdf7f4bd","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":71,"context_line":"will be implemented centrally inside the ``chunkeddriver``."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"It is proposed to implement template functionality alike to"},{"line_number":74,"context_line":"``backup_name_template``, with exception to allow operators to use"},{"line_number":75,"context_line":"wider range of variables, to use as part of the template."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Among such variables it is proposed to allow using:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b3fff878_82c74c09","line":74,"range":{"start_line":74,"start_character":26,"end_line":74,"end_character":40},"updated":"2026-01-08 14:25:04.000000000","message":"nit: with the exception","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"It is proposed to implement template functionality alike to"},{"line_number":74,"context_line":"``backup_name_template``, with exception to allow operators to use"},{"line_number":75,"context_line":"wider range of variables, to use as part of the template."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Among such variables it is proposed to allow using:"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fb71ecdf_9ba5c69f","line":75,"range":{"start_line":75,"start_character":24,"end_line":75,"end_character":25},"updated":"2026-01-08 14:25:04.000000000","message":"nit: comma is unnecessary","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"wider range of variables, to use as part of the template."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Among such variables it is proposed to allow using:"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* backup_default_container (required)"},{"line_number":80,"context_line":"* backup_id"},{"line_number":81,"context_line":"* project_id"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ecf1ead_321cc739","line":78,"range":{"start_line":78,"start_character":0,"end_line":78,"end_character":42},"in_reply_to":"f0cb61fa_b1c3391d","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* backup_default_container (required)"},{"line_number":80,"context_line":"* backup_id"},{"line_number":81,"context_line":"* project_id"},{"line_number":82,"context_line":"* domain_id"},{"line_number":83,"context_line":"* user_id"},{"line_number":84,"context_line":"* volume_id"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ca06f417_43905326","line":81,"range":{"start_line":81,"start_character":51,"end_line":81,"end_character":57},"in_reply_to":"5fd8db64_e0edf845","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"* backup_default_container (required)"},{"line_number":80,"context_line":"* backup_id"},{"line_number":81,"context_line":"* project_id"},{"line_number":82,"context_line":"* domain_id"},{"line_number":83,"context_line":"* user_id"},{"line_number":84,"context_line":"* volume_id"},{"line_number":85,"context_line":"* region_name"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d595a0c6_f00c468e","line":82,"range":{"start_line":82,"start_character":26,"end_line":82,"end_character":40},"in_reply_to":"b3fff878_82c74c09","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"* backup_id"},{"line_number":81,"context_line":"* project_id"},{"line_number":82,"context_line":"* domain_id"},{"line_number":83,"context_line":"* user_id"},{"line_number":84,"context_line":"* volume_id"},{"line_number":85,"context_line":"* region_name"},{"line_number":86,"context_line":"* availability_zone"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8028f5c4_e4f87d9a","line":83,"range":{"start_line":83,"start_character":24,"end_line":83,"end_character":25},"in_reply_to":"fb71ecdf_9ba5c69f","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Defined ``backup_default_container`` parameter is a required parameter"},{"line_number":89,"context_line":"in the template. ``cinder-backup`` must validate supplied templates"},{"line_number":90,"context_line":"on the startup and fail in case configuration is incorrect or missing"},{"line_number":91,"context_line":"required ``backup_default_container`` in the template."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Optionally supplied via API ``container_name`` is passed to the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"cb206806_f456e660","line":90,"range":{"start_line":90,"start_character":0,"end_line":90,"end_character":6},"updated":"2026-01-08 14:25:04.000000000","message":"nit: at","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Defined ``backup_default_container`` parameter is a required parameter"},{"line_number":89,"context_line":"in the template. ``cinder-backup`` must validate supplied templates"},{"line_number":90,"context_line":"on the startup and fail in case configuration is incorrect or missing"},{"line_number":91,"context_line":"required ``backup_default_container`` in the template."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Optionally supplied via API ``container_name`` is passed to the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"2b4bbae8_b34077a8","line":90,"range":{"start_line":90,"start_character":19,"end_line":90,"end_character":31},"updated":"2026-01-08 14:25:04.000000000","message":"nit: fail if the","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":89,"context_line":"in the template. ``cinder-backup`` must validate supplied templates"},{"line_number":90,"context_line":"on the startup and fail in case configuration is incorrect or missing"},{"line_number":91,"context_line":"required ``backup_default_container`` in the template."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Optionally supplied via API ``container_name`` is passed to the"},{"line_number":94,"context_line":"``chunkeddriver`` as ``backup_default_container``, thus introduced"},{"line_number":95,"context_line":"template will cover not only the default container name defined in"},{"line_number":96,"context_line":"the config, but also any arbitrary ones supplied by users."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"With that applied template should not be exposed to the end user,"},{"line_number":99,"context_line":"thus it should not be written down to the database, so templating"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1f688436_52f87035","line":96,"range":{"start_line":92,"start_character":0,"end_line":96,"end_character":58},"updated":"2026-01-08 14:25:04.000000000","message":"this section might benefit from explicitly stating when this happens (backup create only)","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":95,"context_line":"template will cover not only the default container name defined in"},{"line_number":96,"context_line":"the config, but also any arbitrary ones supplied by users."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"With that applied template should not be exposed to the end user,"},{"line_number":99,"context_line":"thus it should not be written down to the database, so templating"},{"line_number":100,"context_line":"should be executed during both backup and restoration process."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1d787c61_d1070005","line":98,"range":{"start_line":98,"start_character":0,"end_line":98,"end_character":26},"updated":"2026-01-08 14:25:04.000000000","message":"\"With that applied, the template\" is better","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"template will cover not only the default container name defined in"},{"line_number":96,"context_line":"the config, but also any arbitrary ones supplied by users."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"With that applied template should not be exposed to the end user,"},{"line_number":99,"context_line":"thus it should not be written down to the database, so templating"},{"line_number":100,"context_line":"should be executed during both backup and restoration process."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1d1368eb_f01deeba","line":98,"range":{"start_line":98,"start_character":19,"end_line":98,"end_character":31},"in_reply_to":"2b4bbae8_b34077a8","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"template will cover not only the default container name defined in"},{"line_number":96,"context_line":"the config, but also any arbitrary ones supplied by users."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"With that applied template should not be exposed to the end user,"},{"line_number":99,"context_line":"thus it should not be written down to the database, so templating"},{"line_number":100,"context_line":"should be executed during both backup and restoration process."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"e780a673_8f6700ed","line":98,"range":{"start_line":98,"start_character":0,"end_line":98,"end_character":6},"in_reply_to":"cb206806_f456e660","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"With that applied template should not be exposed to the end user,"},{"line_number":99,"context_line":"thus it should not be written down to the database, so templating"},{"line_number":100,"context_line":"should be executed during both backup and restoration process."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"As a caveat for not exposing resulting template to the end-users,"},{"line_number":103,"context_line":"and storing non-resolved container name in the database, it is"},{"line_number":104,"context_line":"non-trivial to change the value of ``backup_container_name_template``"},{"line_number":105,"context_line":"once backups are already created."},{"line_number":106,"context_line":"Responsibility to ensure that all existing containers are renamed"},{"line_number":107,"context_line":"accordingly to the new value of the ``backup_container_name_template``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"406dad2b_c6fb50f3","line":104,"range":{"start_line":100,"start_character":0,"end_line":104,"end_character":58},"in_reply_to":"1f688436_52f87035","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":99,"context_line":"thus it should not be written down to the database, so templating"},{"line_number":100,"context_line":"should be executed during both backup and restoration process."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"As a caveat for not exposing resulting template to the end-users,"},{"line_number":103,"context_line":"and storing non-resolved container name in the database, it is"},{"line_number":104,"context_line":"non-trivial to change the value of ``backup_container_name_template``"},{"line_number":105,"context_line":"once backups are already created."},{"line_number":106,"context_line":"Responsibility to ensure that all existing containers are renamed"},{"line_number":107,"context_line":"accordingly to the new value of the ``backup_container_name_template``"},{"line_number":108,"context_line":"is offloaded to operators, whenever they decide to change an existing"}],"source_content_type":"text/x-rst","patch_set":4,"id":"f52e3a4f_26518cc9","line":105,"range":{"start_line":102,"start_character":0,"end_line":105,"end_character":33},"updated":"2026-01-08 14:25:04.000000000","message":"This is a very long sentance - try and split it into two for better readability","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":103,"context_line":"and storing non-resolved container name in the database, it is"},{"line_number":104,"context_line":"non-trivial to change the value of ``backup_container_name_template``"},{"line_number":105,"context_line":"once backups are already created."},{"line_number":106,"context_line":"Responsibility to ensure that all existing containers are renamed"},{"line_number":107,"context_line":"accordingly to the new value of the ``backup_container_name_template``"},{"line_number":108,"context_line":"is offloaded to operators, whenever they decide to change an existing"},{"line_number":109,"context_line":"value."}],"source_content_type":"text/x-rst","patch_set":4,"id":"a3613561_b345f01f","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":26},"in_reply_to":"1d787c61_d1070005","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":104,"context_line":"non-trivial to change the value of ``backup_container_name_template``"},{"line_number":105,"context_line":"once backups are already created."},{"line_number":106,"context_line":"Responsibility to ensure that all existing containers are renamed"},{"line_number":107,"context_line":"accordingly to the new value of the ``backup_container_name_template``"},{"line_number":108,"context_line":"is offloaded to operators, whenever they decide to change an existing"},{"line_number":109,"context_line":"value."},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f4d1edc_f3e3196f","line":107,"range":{"start_line":107,"start_character":0,"end_line":107,"end_character":12},"updated":"2026-01-08 14:25:04.000000000","message":"nit: according","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"accordingly to the new value of the ``backup_container_name_template``"},{"line_number":108,"context_line":"is offloaded to operators, whenever they decide to change an existing"},{"line_number":109,"context_line":"value."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"Alternatives"},{"line_number":112,"context_line":"------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Alternatively we can add multiple configuration options, depending on the"},{"line_number":115,"context_line":"driver naming convention. This way can be preferred to keep consistency in"},{"line_number":116,"context_line":"option naming and be rendered closer to each other in config reference"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6a4ccc0c_745dad05","line":113,"range":{"start_line":110,"start_character":0,"end_line":113,"end_character":33},"in_reply_to":"f52e3a4f_26518cc9","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":112,"context_line":"------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Alternatively we can add multiple configuration options, depending on the"},{"line_number":115,"context_line":"driver naming convention. This way can be preferred to keep consistency in"},{"line_number":116,"context_line":"option naming and be rendered closer to each other in config reference"},{"line_number":117,"context_line":"and sample configuration files."},{"line_number":118,"context_line":"However, it adds unnecessary complexity to the code."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1aabd2c6_df532ebd","line":115,"range":{"start_line":115,"start_character":26,"end_line":115,"end_character":71},"updated":"2026-01-08 14:25:04.000000000","message":"maybe better as \"This approach may be preferred to keep consistency\"","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":112,"context_line":"------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Alternatively we can add multiple configuration options, depending on the"},{"line_number":115,"context_line":"driver naming convention. This way can be preferred to keep consistency in"},{"line_number":116,"context_line":"option naming and be rendered closer to each other in config reference"},{"line_number":117,"context_line":"and sample configuration files."},{"line_number":118,"context_line":"However, it adds unnecessary complexity to the code."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1319f227_eb5cba66","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":12},"in_reply_to":"9f4d1edc_f3e3196f","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":117,"context_line":"and sample configuration files."},{"line_number":118,"context_line":"However, it adds unnecessary complexity to the code."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"In this case proposed list on configuration option names can be:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Swift: ``backup_swift_container_name_template``"},{"line_number":123,"context_line":"* S3: ``backup_s3_store_bucket_name_template``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d3910a09_2d16ddba","line":120,"range":{"start_line":120,"start_character":8,"end_line":120,"end_character":21},"updated":"2026-01-08 14:25:04.000000000","message":"nit: case, the proposed","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":117,"context_line":"and sample configuration files."},{"line_number":118,"context_line":"However, it adds unnecessary complexity to the code."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"In this case proposed list on configuration option names can be:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Swift: ``backup_swift_container_name_template``"},{"line_number":123,"context_line":"* S3: ``backup_s3_store_bucket_name_template``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"18ad4803_e83253b4","line":120,"range":{"start_line":120,"start_character":27,"end_line":120,"end_character":30},"updated":"2026-01-08 14:25:04.000000000","message":"nit: of","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":120,"context_line":"In this case proposed list on configuration option names can be:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Swift: ``backup_swift_container_name_template``"},{"line_number":123,"context_line":"* S3: ``backup_s3_store_bucket_name_template``"},{"line_number":124,"context_line":"* POSIX: ``backup_container_name_template``"},{"line_number":125,"context_line":"* GCS: ``backup_gcs_bucket_name_template``"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"182ecf33_ba5253d4","line":123,"range":{"start_line":123,"start_character":26,"end_line":123,"end_character":71},"in_reply_to":"1aabd2c6_df532ebd","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"* GCS: ``backup_gcs_bucket_name_template``"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Data model impact"},{"line_number":128,"context_line":"-----------------"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"No impact"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"2aa2ec94_66de3780","line":128,"range":{"start_line":128,"start_character":27,"end_line":128,"end_character":30},"in_reply_to":"18ad4803_e83253b4","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"* GCS: ``backup_gcs_bucket_name_template``"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Data model impact"},{"line_number":128,"context_line":"-----------------"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"No impact"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"d0c88cfa_7a4ac6b3","line":128,"range":{"start_line":128,"start_character":8,"end_line":128,"end_character":21},"in_reply_to":"d3910a09_2d16ddba","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":137,"context_line":"Security impact"},{"line_number":138,"context_line":"---------------"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"No security impact is expected, as is it planned to have a well-defined list"},{"line_number":141,"context_line":"of variables available for substitution in the template, instead of giving"},{"line_number":142,"context_line":"full access to the context and available data in there."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"def521f9_dde0e24e","line":140,"range":{"start_line":140,"start_character":32,"end_line":140,"end_character":56},"updated":"2026-01-08 14:25:04.000000000","message":"nit: as the plan is to have","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":145,"context_line":"-----------------------"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"Not related to cinder-volume service"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Notifications impact"},{"line_number":150,"context_line":"--------------------"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"e80ca7ab_2583b176","line":148,"range":{"start_line":148,"start_character":32,"end_line":148,"end_character":56},"in_reply_to":"def521f9_dde0e24e","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"As changes in container name and template will not be exposed to the end-users,"},{"line_number":158,"context_line":"and name replacement will happen during runtime without writing it to the"},{"line_number":159,"context_line":"database no end user impact is expected."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Performance Impact"},{"line_number":162,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"874e2b45_cf708514","line":159,"range":{"start_line":159,"start_character":8,"end_line":159,"end_character":9},"updated":"2026-01-08 14:25:04.000000000","message":"nit: comma required","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":162,"context_line":"------------------"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"All data required for template rendering should be already present in"},{"line_number":165,"context_line":"context while calling to"},{"line_number":166,"context_line":"``cinder.backup.chunkeddriver.ChunkedBackupDriver.update_container_name``"},{"line_number":167,"context_line":"so no additional calls or performance impact is expected."},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5c662a8b_016301ac","line":165,"range":{"start_line":165,"start_character":22,"end_line":165,"end_character":24},"updated":"2026-01-08 14:25:04.000000000","message":"this word is unnecessary","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":164,"context_line":"All data required for template rendering should be already present in"},{"line_number":165,"context_line":"context while calling to"},{"line_number":166,"context_line":"``cinder.backup.chunkeddriver.ChunkedBackupDriver.update_container_name``"},{"line_number":167,"context_line":"so no additional calls or performance impact is expected."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Other deployer impact"},{"line_number":170,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"278cfe7c_efc3f20e","line":167,"range":{"start_line":167,"start_character":8,"end_line":167,"end_character":9},"in_reply_to":"874e2b45_cf708514","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":170,"context_line":"---------------------"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Deployers will be able to leverage new container name templates for"},{"line_number":173,"context_line":"fine-grained control over location and naming convention of resulting"},{"line_number":174,"context_line":"container names, allowing them to use different containers based of"},{"line_number":175,"context_line":"regions, availability zones, tenants, etc."},{"line_number":176,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"72747ef3_5eb9d0be","line":173,"range":{"start_line":173,"start_character":22,"end_line":173,"end_character":24},"in_reply_to":"5c662a8b_016301ac","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Deployers will be able to leverage new container name templates for"},{"line_number":173,"context_line":"fine-grained control over location and naming convention of resulting"},{"line_number":174,"context_line":"container names, allowing them to use different containers based of"},{"line_number":175,"context_line":"regions, availability zones, tenants, etc."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"In case deployer decided to change the value of ``backup_default_container``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"72a387ea_02be2d70","line":174,"range":{"start_line":174,"start_character":65,"end_line":174,"end_character":67},"updated":"2026-01-08 14:25:04.000000000","message":"nit: on","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":174,"context_line":"container names, allowing them to use different containers based of"},{"line_number":175,"context_line":"regions, availability zones, tenants, etc."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"In case deployer decided to change the value of ``backup_default_container``"},{"line_number":178,"context_line":"they will have to also rename all already existing containers in order"},{"line_number":179,"context_line":"to match the value. Otherwise, restoration of backups created with"},{"line_number":180,"context_line":"different value will fail with 404 Not Found."}],"source_content_type":"text/x-rst","patch_set":4,"id":"6676a653_45341189","line":177,"range":{"start_line":177,"start_character":7,"end_line":177,"end_character":8},"updated":"2026-01-08 14:25:04.000000000","message":"nit: insert \u0027a\u0027 here","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":179,"context_line":"to match the value. Otherwise, restoration of backups created with"},{"line_number":180,"context_line":"different value will fail with 404 Not Found."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Developer impact"},{"line_number":183,"context_line":"----------------"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"No impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8a4e4c43_cec4d2a6","line":182,"range":{"start_line":182,"start_character":65,"end_line":182,"end_character":67},"in_reply_to":"72a387ea_02be2d70","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":182,"context_line":"Developer impact"},{"line_number":183,"context_line":"----------------"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"No impact"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"981f936e_1c0efa9d","line":185,"range":{"start_line":185,"start_character":7,"end_line":185,"end_character":8},"in_reply_to":"6676a653_45341189","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"303e6494fa8b3b1d0d6d2db9e69eaa9da5d5c8a5","unresolved":true,"context_lines":[{"line_number":214,"context_line":"Unit testing of new options will be introduced, to ensure that cinder-backup"},{"line_number":215,"context_line":"will apply the template to provided/stored container name on backup"},{"line_number":216,"context_line":"creation/restoration."},{"line_number":217,"context_line":"We also need to test, that only supported values can be defined and used in"},{"line_number":218,"context_line":"the template, as well as required ``backup_default_container`` is always part"},{"line_number":219,"context_line":"of the template."},{"line_number":220,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f7e7e5b_001a30df","line":217,"range":{"start_line":217,"start_character":20,"end_line":217,"end_character":21},"updated":"2026-01-08 14:25:04.000000000","message":"remove comma","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e9ead23b23e0d61a05b36993918bcf8a3017836c","unresolved":false,"context_lines":[{"line_number":222,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"New option will be documented as part of the Cinder Backup configuration"},{"line_number":225,"context_line":"guide."},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b6a6dbcb_ba782a17","line":225,"range":{"start_line":225,"start_character":20,"end_line":225,"end_character":21},"in_reply_to":"3f7e7e5b_001a30df","updated":"2026-01-14 16:08:03.000000000","message":"Done","commit_id":"6ea05d9b5f7b37efd527d60ac0e61ca4410e3296"}]}
