)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bcd1633e96a047ca875898b0305393cd2845c247","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"513e0e3d_36982d7b","updated":"2025-04-09 15:22:02.000000000","message":"Hey thank you Zach! Some comments inline","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"15a42c7dbfdb7ea72bf314a031dcb8feebbaefbc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"885b2480_8f6a0882","updated":"2025-05-03 08:45:34.000000000","message":"thanks for your change, zgoggin. here are some comments.","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"61202eeefb6b841d14ee3ccee86a853c591a843f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e78e718b_23d332fd","updated":"2025-05-07 03:23:56.000000000","message":"thanks zgoggin.","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"8f69849ead1809af2123c5dd2ef4c189845e28c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6862ae60_42205d51","in_reply_to":"885b2480_8f6a0882","updated":"2025-05-03 21:33:51.000000000","message":"Likewise, Thanks very much for taking the time to review!","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"e6dd836334900c122554cd2c955a531db483f3ad","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"caee202c_5c827ff1","updated":"2025-05-08 11:55:19.000000000","message":"I think this might be a bug (or change?) in Sphinx. Reproducible on my fedora machine with tox 4.23.2, and Sphinx 8.2.3 on master (without the patchset) using:\n```\ngit clone https://review.opendev.org/openstack/manila-specs test\ncd test; tox\n```\n\nwe see\n```\n      File \"/home/zgoggin/test/.tox/docs/lib/python3.12/site-packages/snowballstemmer/__init__.py\", line 27, in stemmer\n        raise KeyError(\"Stemming algorithm \u0027%s\u0027 not found\" % lang)\n    KeyError: \"Stemming algorithm \u0027porter\u0027 not found\"\n```\nwill investigate further","commit_id":"382e5f087f02a41457fb8e0424325b06a0b19afd"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1b4ff3c5c982eb82191b413e57f36679e369cd97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"6ce15c66_d66f2ecf","updated":"2025-05-08 20:53:24.000000000","message":"recheck\n\n\nLGTM, thanks for the updates @zachary.goggin@cern.ch\n\nhttps://github.com/sphinx-doc/sphinx/issues/13533 could be resolved with a newer package https://pypi.org/project/snowballstemmer/#history","commit_id":"382e5f087f02a41457fb8e0424325b06a0b19afd"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e2a79044ea4f32986eb24e8f0f36d18bbcc64f52","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"caa6349f_75f64708","updated":"2025-05-09 14:55:35.000000000","message":"thanks, zgoggin.let us merge this.","commit_id":"382e5f087f02a41457fb8e0424325b06a0b19afd"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"68b5a32e935f192bc089df43b76fa08711feab4e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7ea7628c_652d5592","in_reply_to":"6ce15c66_d66f2ecf","updated":"2025-05-09 11:27:48.000000000","message":"Thanks Goutham!","commit_id":"382e5f087f02a41457fb8e0424325b06a0b19afd"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"68b5a32e935f192bc089df43b76fa08711feab4e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"23801264_16c54779","in_reply_to":"caee202c_5c827ff1","updated":"2025-05-09 11:27:48.000000000","message":"Fixed","commit_id":"382e5f087f02a41457fb8e0424325b06a0b19afd"}],"specs/flamingo/share_backup_out_of_place_restore.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bcd1633e96a047ca875898b0305393cd2845c247","unresolved":true,"context_lines":[{"line_number":8,"context_line":"Manila - Share backup out of place restore"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Blueprint: https://blueprints.launchpad.net/manila/+spec/out-of-place-restore"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The previously introduced share backup spec and API allows for the creation and"},{"line_number":14,"context_line":"restoration of shares through manila, however at the moment, this API is limited"}],"source_content_type":"text/x-rst","patch_set":5,"id":"2567440e_6361f802","line":11,"range":{"start_line":11,"start_character":11,"end_line":11,"end_character":77},"updated":"2025-04-09 15:22:02.000000000","message":"This will need to be created","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"1a5a2363e545f74a7a42f63f6cc06010aa1d83b2","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Manila - Share backup out of place restore"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Blueprint: https://blueprints.launchpad.net/manila/+spec/out-of-place-restore"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The previously introduced share backup spec and API allows for the creation and"},{"line_number":14,"context_line":"restoration of shares through manila, however at the moment, this API is limited"}],"source_content_type":"text/x-rst","patch_set":5,"id":"958f9c15_8d3c11c7","line":11,"range":{"start_line":11,"start_character":11,"end_line":11,"end_character":77},"in_reply_to":"2567440e_6361f802","updated":"2025-04-10 11:56:42.000000000","message":"Done","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bcd1633e96a047ca875898b0305393cd2845c247","unresolved":true,"context_lines":[{"line_number":26,"context_line":"Use Cases"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"As far as BCDR is concerned, there are a few reasons that make such a feature"},{"line_number":30,"context_line":"beneficial:"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If a user is limited to performing restores to the source share, they must"}],"source_content_type":"text/x-rst","patch_set":5,"id":"b0c48c8e_3304fd96","line":29,"range":{"start_line":29,"start_character":10,"end_line":29,"end_character":14},"updated":"2025-04-09 15:22:02.000000000","message":"please expand","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"1a5a2363e545f74a7a42f63f6cc06010aa1d83b2","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Use Cases"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"As far as BCDR is concerned, there are a few reasons that make such a feature"},{"line_number":30,"context_line":"beneficial:"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If a user is limited to performing restores to the source share, they must"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d2ea6729_8f39fa96","line":29,"range":{"start_line":29,"start_character":10,"end_line":29,"end_character":14},"in_reply_to":"b0c48c8e_3304fd96","updated":"2025-04-10 11:56:42.000000000","message":"Done","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bcd1633e96a047ca875898b0305393cd2845c247","unresolved":true,"context_lines":[{"line_number":53,"context_line":"* Extend python-manilaclient \u0027share backup restore\u0027 command"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    The share backup restore command will be extended to allow a optional"},{"line_number":56,"context_line":"    argument, --target-share to be added by a end user, in the form of a valid"},{"line_number":57,"context_line":"    share_id or share_name."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* update API call for targeted share restore"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"a4710328_f834d31d","line":57,"range":{"start_line":56,"start_character":73,"end_line":57,"end_character":27},"updated":"2025-04-09 15:22:02.000000000","message":"are we assuming there\u0027s an existing share?\n\nPerhaps users would find it helpful if Manila just did this extra step?","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f2fa33ab0ef60d3a27a891d952ef7f3dcee9985d","unresolved":true,"context_lines":[{"line_number":53,"context_line":"* Extend python-manilaclient \u0027share backup restore\u0027 command"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    The share backup restore command will be extended to allow a optional"},{"line_number":56,"context_line":"    argument, --target-share to be added by a end user, in the form of a valid"},{"line_number":57,"context_line":"    share_id or share_name."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* update API call for targeted share restore"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"de261aea_be7598c1","line":57,"range":{"start_line":56,"start_character":73,"end_line":57,"end_character":27},"in_reply_to":"263cb550_9bcfc2e3","updated":"2025-05-08 03:16:13.000000000","message":"+1 this proposal sounds great..","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"1a5a2363e545f74a7a42f63f6cc06010aa1d83b2","unresolved":true,"context_lines":[{"line_number":53,"context_line":"* Extend python-manilaclient \u0027share backup restore\u0027 command"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    The share backup restore command will be extended to allow a optional"},{"line_number":56,"context_line":"    argument, --target-share to be added by a end user, in the form of a valid"},{"line_number":57,"context_line":"    share_id or share_name."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* update API call for targeted share restore"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"b1b05e19_45f4afc3","line":57,"range":{"start_line":56,"start_character":73,"end_line":57,"end_character":27},"in_reply_to":"a4710328_f834d31d","updated":"2025-04-10 11:56:42.000000000","message":"Indeed, at current we assume the user has already created a target share.\n\nI\u0027ve looked at how this is done in cinder currently (see bellow):\nhttps://etherpad.opendev.org/p/ttgtqR_fVFmuyNrQSylI\n\neffectively, a cinder restore takes \u003cbackup\u003e(mandatory) \u003cvolume\u003e(optional)\n\nA \"normal\" restore, always creates a new volume with name \u003cvolume\u003e (if supplied) that is identical to the original the backup was made from.\n\nIf the user wants to explicitly restore to the source volume, or a different one they pre-create, they can pass a --force argument with \u003cvolume\u003e instead to restore there.\n\n\nIs there a desire to maintain consistency in Manila? what we do is a bit different so I would propose the following:\n\n- keep manilas current restore to source share (if no arguments are given)\n\n- add a --create-share argument that\u0027s mutually exclusive with --target-share\n  and that first attempts to create a separate share that mimics the source \n  share (share_proto / share_type) then supplies it for a targeted restore.\n   \n- keep --target-share for explicitly restoring to non source shares that have been already created and *may* have a different share_type\n\nLet me know your thoughts, happy to discuss further!","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"15a42c7dbfdb7ea72bf314a031dcb8feebbaefbc","unresolved":true,"context_lines":[{"line_number":53,"context_line":"* Extend python-manilaclient \u0027share backup restore\u0027 command"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    The share backup restore command will be extended to allow a optional"},{"line_number":56,"context_line":"    argument, --target-share to be added by a end user, in the form of a valid"},{"line_number":57,"context_line":"    share_id or share_name."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* update API call for targeted share restore"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"c8eba80f_e9667eda","line":57,"range":{"start_line":56,"start_character":73,"end_line":57,"end_character":27},"in_reply_to":"b1b05e19_45f4afc3","updated":"2025-05-03 08:45:34.000000000","message":"In Cinder, if you want to restore a backup to a new volume, you can specify the --backup-id parameter when creating a new volume.\n\nThe share backup restore simultaneously supports --create-share and --target-share, and it is necessary to determine mutual exclusivity. Moreover, if the --create-share parameter is used, a series of parameters need to be modified when the client is updated to support create share, such as --display-name --share-type, --size. which involves significant changes.\n\nTherefore, I suggest that share backup restore command only supports --target-share, and it should be determined that the target share already exists and its size is larger than the backup size. share create command add a new parameter --backup-id. This way, other parameters for creating a share can be reused. It only needs to be determined that the size specified by --size is larger than the backup size.","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"61202eeefb6b841d14ee3ccee86a853c591a843f","unresolved":true,"context_lines":[{"line_number":53,"context_line":"* Extend python-manilaclient \u0027share backup restore\u0027 command"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    The share backup restore command will be extended to allow a optional"},{"line_number":56,"context_line":"    argument, --target-share to be added by a end user, in the form of a valid"},{"line_number":57,"context_line":"    share_id or share_name."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* update API call for targeted share restore"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"263cb550_9bcfc2e3","line":57,"range":{"start_line":56,"start_character":73,"end_line":57,"end_character":27},"in_reply_to":"bdcf2d01_7c930752","updated":"2025-05-07 03:23:56.000000000","message":"+1","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"8f69849ead1809af2123c5dd2ef4c189845e28c9","unresolved":true,"context_lines":[{"line_number":53,"context_line":"* Extend python-manilaclient \u0027share backup restore\u0027 command"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    The share backup restore command will be extended to allow a optional"},{"line_number":56,"context_line":"    argument, --target-share to be added by a end user, in the form of a valid"},{"line_number":57,"context_line":"    share_id or share_name."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* update API call for targeted share restore"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"bdcf2d01_7c930752","line":57,"range":{"start_line":56,"start_character":73,"end_line":57,"end_character":27},"in_reply_to":"c8eba80f_e9667eda","updated":"2025-05-03 21:33:51.000000000","message":"Understood, I agree that we should aim to make as small an impact on the existing codebase with this spec + its changes as possible.\n\nSo in esssense (just to confirm) we will have three workflows:\n\nshare backup restore \u003cbackup\u003e (normal restore to source)\nshare backup resstore --target-share \u003cshare-id\u003e (targeted restore to a share)\nshare create --backup-id \u003cbackup-id\u003e (create new share from backup)\n\nWill leave this open so others can comment, but I will modify the spec to specify this.","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"1105377fca1b96adead78f5ca138fef9d561f38b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"* Extend python-manilaclient \u0027share backup restore\u0027 command"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    The share backup restore command will be extended to allow a optional"},{"line_number":56,"context_line":"    argument, --target-share to be added by a end user, in the form of a valid"},{"line_number":57,"context_line":"    share_id or share_name."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* update API call for targeted share restore"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"beb60145_248175ed","line":57,"range":{"start_line":56,"start_character":73,"end_line":57,"end_character":27},"in_reply_to":"de261aea_be7598c1","updated":"2025-05-08 10:09:14.000000000","message":"Done","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bcd1633e96a047ca875898b0305393cd2845c247","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    id agains\u0027t the id of the supplied share."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    If these two elements match, a normal restore can be considered to be"},{"line_number":94,"context_line":"    underway, if they do not, a urther check should be perfomed against"},{"line_number":95,"context_line":"    the current backup drivers boolean flag to ensure the operation is supported."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    If it is the target shares status will be updated to BACKUP_RESTORING,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7f0121af_c8e4d2bc","line":94,"range":{"start_line":94,"start_character":32,"end_line":94,"end_character":38},"updated":"2025-04-09 15:22:02.000000000","message":"typo","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bcd1633e96a047ca875898b0305393cd2845c247","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    id agains\u0027t the id of the supplied share."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    If these two elements match, a normal restore can be considered to be"},{"line_number":94,"context_line":"    underway, if they do not, a urther check should be perfomed against"},{"line_number":95,"context_line":"    the current backup drivers boolean flag to ensure the operation is supported."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    If it is the target shares status will be updated to BACKUP_RESTORING,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"87648bfc_d4ae050d","line":94,"range":{"start_line":94,"start_character":55,"end_line":94,"end_character":63},"updated":"2025-04-09 15:22:02.000000000","message":"typo","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"1a5a2363e545f74a7a42f63f6cc06010aa1d83b2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    id agains\u0027t the id of the supplied share."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    If these two elements match, a normal restore can be considered to be"},{"line_number":94,"context_line":"    underway, if they do not, a urther check should be perfomed against"},{"line_number":95,"context_line":"    the current backup drivers boolean flag to ensure the operation is supported."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    If it is the target shares status will be updated to BACKUP_RESTORING,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3382a858_1b235378","line":94,"range":{"start_line":94,"start_character":32,"end_line":94,"end_character":38},"in_reply_to":"7f0121af_c8e4d2bc","updated":"2025-04-10 11:56:42.000000000","message":"Done","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"1a5a2363e545f74a7a42f63f6cc06010aa1d83b2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    id agains\u0027t the id of the supplied share."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    If these two elements match, a normal restore can be considered to be"},{"line_number":94,"context_line":"    underway, if they do not, a urther check should be perfomed against"},{"line_number":95,"context_line":"    the current backup drivers boolean flag to ensure the operation is supported."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    If it is the target shares status will be updated to BACKUP_RESTORING,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"e4320ffe_847269bd","line":94,"range":{"start_line":94,"start_character":55,"end_line":94,"end_character":63},"in_reply_to":"87648bfc_d4ae050d","updated":"2025-04-10 11:56:42.000000000","message":"Done","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bcd1633e96a047ca875898b0305393cd2845c247","unresolved":true,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"None"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"//For review//"},{"line_number":124,"context_line":"I dont think there are any major changes to manila.db needed, this change"},{"line_number":125,"context_line":"basically uses existing facilities in a (hopefully) clean way."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"CLI API impact"},{"line_number":128,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3294e247_ca03e86b","line":125,"range":{"start_line":123,"start_character":0,"end_line":125,"end_character":62},"updated":"2025-04-09 15:22:02.000000000","message":"that\u0027s cool.. The share has \"source_backup_id\", this would be populated on the restored share.","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"1a5a2363e545f74a7a42f63f6cc06010aa1d83b2","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"None"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"//For review//"},{"line_number":124,"context_line":"I dont think there are any major changes to manila.db needed, this change"},{"line_number":125,"context_line":"basically uses existing facilities in a (hopefully) clean way."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"CLI API impact"},{"line_number":128,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"549ff203_034eb364","line":125,"range":{"start_line":123,"start_character":0,"end_line":125,"end_character":62},"in_reply_to":"3294e247_ca03e86b","updated":"2025-04-10 11:56:42.000000000","message":"Acknowledged","commit_id":"2d782c1dc8fceefea7eb8f748423d389b6c8a30e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"7fdfed04a2df157f15c121aa46ca3d47282fd725","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    - Finally, the RPC call component of the WSGI will be updated with an"},{"line_number":71,"context_line":"      additional sanity check where if a target_share is supplied, it will"},{"line_number":72,"context_line":"      confirm that the target share and backup source share are of a"},{"line_number":73,"context_line":"      compatible share type before allowing the restore operation to be"},{"line_number":74,"context_line":"      performed. If they are not the process will bail with an appropriate"},{"line_number":75,"context_line":"      errror."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"2c216a5e_9c8f8626","line":73,"range":{"start_line":73,"start_character":17,"end_line":73,"end_character":27},"updated":"2025-04-24 15:31:44.000000000","message":"correction for self, this should rather reference share_protocol (e.g. CephFS) not share_type (e.g. CephFS-Backend-X) \n\nCompatibility between shares with the same protocol but a different storage backend can be better expected. whereas its not guaranteed a NFS backup can be restored to CephFS or vice versa for example.","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f2fa33ab0ef60d3a27a891d952ef7f3dcee9985d","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    - Finally, the RPC call component of the WSGI will be updated with an"},{"line_number":71,"context_line":"      additional sanity check where if a target_share is supplied, it will"},{"line_number":72,"context_line":"      confirm that the target share and backup source share are of a"},{"line_number":73,"context_line":"      compatible share type before allowing the restore operation to be"},{"line_number":74,"context_line":"      performed. If they are not the process will bail with an appropriate"},{"line_number":75,"context_line":"      errror."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"99c23e71_f22c5aa2","line":73,"range":{"start_line":73,"start_character":17,"end_line":73,"end_character":27},"in_reply_to":"034be450_c0d1e2da","updated":"2025-05-08 03:16:13.000000000","message":"Agree with haixin here, we can drop the restriction on the share protocol in the API.. if the backup driver is unable to restore to an NFS share, we could raise an asynchronous user message [1] and set the status of the target share to \"backup_restoring_error\"\n\nthe async message can specify the reason for the failure.. so effectively it\u0027s the responsibility of the backup driver to decide whether or not a backup can be restored to a target share. \n\n\nWould that work?\n\n[1] https://docs.openstack.org/manila/latest/contributor/user_messages.html","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"8f69849ead1809af2123c5dd2ef4c189845e28c9","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    - Finally, the RPC call component of the WSGI will be updated with an"},{"line_number":71,"context_line":"      additional sanity check where if a target_share is supplied, it will"},{"line_number":72,"context_line":"      confirm that the target share and backup source share are of a"},{"line_number":73,"context_line":"      compatible share type before allowing the restore operation to be"},{"line_number":74,"context_line":"      performed. If they are not the process will bail with an appropriate"},{"line_number":75,"context_line":"      errror."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"4a34afe0_28c61cdf","line":73,"range":{"start_line":73,"start_character":17,"end_line":73,"end_character":27},"in_reply_to":"1aa5fe5f_aef370bd","updated":"2025-05-03 21:33:51.000000000","message":"My thinking is that if there is a inconsistency between what the active backup driver expects and what a share of a different protocol provides, there is a potential for undefined behaviour.\n\nMy understanding (correct me if I\u0027m wrong) was that the internal data manager, NFS, and Netapp driver don\u0027t support other share protocols explicitly. I also think such combinations have the potential to become quite complex in the future given more drivers are added.\n\nTherefore, unless there is a expectation that this kind of capacity is to be added, I propose perhaps its safer (for now) to disallow this at the level of the manila API.\n\nAlternatively, if we are interested in supporting this in the future and don\u0027t want to force such a check, we could put the onus for this on the developer of a given backup driver as it will have access to the full backup and share object (and can discern this state and how to react to it itself.)\n\nLet me know your thoughts, happy to discuss further!","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"15a42c7dbfdb7ea72bf314a031dcb8feebbaefbc","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    - Finally, the RPC call component of the WSGI will be updated with an"},{"line_number":71,"context_line":"      additional sanity check where if a target_share is supplied, it will"},{"line_number":72,"context_line":"      confirm that the target share and backup source share are of a"},{"line_number":73,"context_line":"      compatible share type before allowing the restore operation to be"},{"line_number":74,"context_line":"      performed. If they are not the process will bail with an appropriate"},{"line_number":75,"context_line":"      errror."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa5fe5f_aef370bd","line":73,"range":{"start_line":73,"start_character":17,"end_line":73,"end_character":27},"in_reply_to":"2c216a5e_9c8f8626","updated":"2025-05-03 08:45:34.000000000","message":"Why is it required that the protocols for share and backup be consistent? In Cinder, RBD volume backup can also restore to iSCSI volume. The process of backup restore is that the Manila share node mounts both the backup and the share simultaneously, and then copies the data to the share. Theoretically, as long as the Manila share node can successfully mount the share, the backup restore can be completed.","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"61202eeefb6b841d14ee3ccee86a853c591a843f","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    - Finally, the RPC call component of the WSGI will be updated with an"},{"line_number":71,"context_line":"      additional sanity check where if a target_share is supplied, it will"},{"line_number":72,"context_line":"      confirm that the target share and backup source share are of a"},{"line_number":73,"context_line":"      compatible share type before allowing the restore operation to be"},{"line_number":74,"context_line":"      performed. If they are not the process will bail with an appropriate"},{"line_number":75,"context_line":"      errror."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"034be450_c0d1e2da","line":73,"range":{"start_line":73,"start_character":17,"end_line":73,"end_character":27},"in_reply_to":"4a34afe0_28c61cdf","updated":"2025-05-07 03:23:56.000000000","message":"I think the process of backup restore is:\n\nactive backup share -----\u003emanila data node----------\u003etarget share\n\nCurrent Manila backup drivers support only NFS (manila/data/drivers/nfs.py). If there are more driver types in the future, they can be added.\n\nAll we need to ensure is that the node where manila data is located can mount backup share and target share normally.\n\nThen manila data completes the data copy and finally unmounts the two.\n\nSo, I think the protocol used by backup share and the protocol used by target share have no direct relationship. As long as manila data supports the protocols of both, it can be mounted and unmounted normally.\n\nWe can see how others think and discuss it together.","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"42c15b8749f4c3537e1822264145261ac0b7f4e4","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    - Finally, the RPC call component of the WSGI will be updated with an"},{"line_number":71,"context_line":"      additional sanity check where if a target_share is supplied, it will"},{"line_number":72,"context_line":"      confirm that the target share and backup source share are of a"},{"line_number":73,"context_line":"      compatible share type before allowing the restore operation to be"},{"line_number":74,"context_line":"      performed. If they are not the process will bail with an appropriate"},{"line_number":75,"context_line":"      errror."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"a12ad756_d1f42449","line":73,"range":{"start_line":73,"start_character":17,"end_line":73,"end_character":27},"in_reply_to":"99c23e71_f22c5aa2","updated":"2025-05-08 09:31:56.000000000","message":"Understood, We may even be able catch this when the backup process starts and simply raise a normal share backup exception with a message declaring incompatibility. I can investigate this and async messages (thanks for the link!)\n\nIn any case I will reword this section to make it clear that such checks should occur within the individual backup drivers if considered desirable.","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"1105377fca1b96adead78f5ca138fef9d561f38b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    - Finally, the RPC call component of the WSGI will be updated with an"},{"line_number":71,"context_line":"      additional sanity check where if a target_share is supplied, it will"},{"line_number":72,"context_line":"      confirm that the target share and backup source share are of a"},{"line_number":73,"context_line":"      compatible share type before allowing the restore operation to be"},{"line_number":74,"context_line":"      performed. If they are not the process will bail with an appropriate"},{"line_number":75,"context_line":"      errror."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"4e6f3c64_f38cd5ab","line":73,"range":{"start_line":73,"start_character":17,"end_line":73,"end_character":27},"in_reply_to":"a12ad756_d1f42449","updated":"2025-05-08 10:09:14.000000000","message":"Done","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"15a42c7dbfdb7ea72bf314a031dcb8feebbaefbc","unresolved":true,"context_lines":[{"line_number":131,"context_line":"* backup: ID of backup to restore."},{"line_number":132,"context_line":"* target_share: *optional* Share to target for restore, where value can be A"},{"line_number":133,"context_line":"                share name or ID. Default to None, e.g. restore to source)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"REST API impact"},{"line_number":136,"context_line":"---------------"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5f23851a_d18c6374","line":134,"updated":"2025-05-03 08:45:34.000000000","message":"add new optional argument to share create.\n\nopenstack share create [--backup-id \u003cshare-backup\u003e]","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"1105377fca1b96adead78f5ca138fef9d561f38b","unresolved":false,"context_lines":[{"line_number":131,"context_line":"* backup: ID of backup to restore."},{"line_number":132,"context_line":"* target_share: *optional* Share to target for restore, where value can be A"},{"line_number":133,"context_line":"                share name or ID. Default to None, e.g. restore to source)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"REST API impact"},{"line_number":136,"context_line":"---------------"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"de96db13_2a6bcba0","line":134,"in_reply_to":"407c7759_4f8cf002","updated":"2025-05-08 10:09:14.000000000","message":"Done","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"},{"author":{"_account_id":36761,"name":"za","display_name":"zgoggin","email":"zacharygoggin@coenin.co.uk","username":"za","status":"Manila share backup enthusiast :)"},"change_message_id":"8f69849ead1809af2123c5dd2ef4c189845e28c9","unresolved":true,"context_lines":[{"line_number":131,"context_line":"* backup: ID of backup to restore."},{"line_number":132,"context_line":"* target_share: *optional* Share to target for restore, where value can be A"},{"line_number":133,"context_line":"                share name or ID. Default to None, e.g. restore to source)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"REST API impact"},{"line_number":136,"context_line":"---------------"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"407c7759_4f8cf002","line":134,"in_reply_to":"5f23851a_d18c6374","updated":"2025-05-03 21:33:51.000000000","message":"Acknowledged, will close once patchset is added with this.","commit_id":"c649900bb5cbebc941e66853b8682cb36da26f3e"}]}
