)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7240ff622673bc9419471533e919cb81e01404aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"871744bf_11bcba98","updated":"2022-05-10 11:09:51.000000000","message":"thanks for your change.\nplease see my comments inline.","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"65c8a1ca22008e22f9a5df8c0b5cf3b862291236","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"06fbce1d_8c640352","updated":"2022-05-31 05:34:40.000000000","message":"recheck manila-tempest-plugin-lvm","commit_id":"b52a65cc75edb0205192f9af1a4daabdfc56ed2b"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1b3d9ce5a0ecaa96bd2b4b781fc41d4b5bf9d669","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"d4549e2f_d255f124","updated":"2022-07-15 02:55:20.000000000","message":"hi ,Kiran Pawar, thanks for your change.\nhere is an question about this.","commit_id":"9b1efa20faa481e139a4837132b23b79aa9c0728"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6b43f7254eb3b837f8b620c9d5b6353478d5eb30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"46db83f8_298c741c","updated":"2022-08-04 13:55:09.000000000","message":"specs for reference - https://review.opendev.org/c/openstack/manila-specs/+/330306","commit_id":"9b1efa20faa481e139a4837132b23b79aa9c0728"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"9f2bc2ccc1c0255ef09e2f5091f351d0e3e5ccf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"4e932871_153d0a66","updated":"2023-01-02 17:38:51.000000000","message":"After merge of manila backup spec, updating PR to address spec comments.\n\nFYI, Steps to test on devstack :-\n1. Create share of 1 GB. e.g. name it tmp_backup. Export location of share (admin) is then added in /manila/data/drivers/nfs.py config option \u0027backup_share\u0027. e.g. 10.1.1.100:/shares/share-5c8bba9f-18ad-4e64-801e-204575e7a97a\n2. Add host IP in manila/data/helper.py config option \u0027data_node_access_ips\u0027 and restart manila service\n3. Add access-allow with ip type and value (controller node IP) to above temp share(tmp_backup). e.g. \u002710.1.1.50\u0027\n4. Create another share (e.g. share1) of 1GB, mount it, write some data to share. We will take backup of this share into tmp_backup in next steps.\n5. openstack share backup create share1 --name backup1\n6. mount tmp_backup and check the content. It should be same as data added in step4.\n7. unmount tmp_backup. Mount share1, delete its data and unmount it.\n8. openstack share backup restore backup1\n9. Mount share1 and and check the content. It should be same as data added in step6\n10. unmount share1\n11. openstack share backup delete backup1.","commit_id":"54e11ec062ead140da5b92617c5a05d018aee3e5"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ad11949fe2bb7cc838aa871a50898dbbccd3d209","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"48802f64_b366db76","updated":"2023-01-03 08:27:02.000000000","message":"thanks for your change.\ni have some question about this,","commit_id":"54e11ec062ead140da5b92617c5a05d018aee3e5"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d49acc7851834b9941af07b885b21dec39c8bbed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"8621cf7d_6e3cfd87","in_reply_to":"1de1a4fe_ad5075be","updated":"2023-01-04 07:12:34.000000000","message":"1: This means that even though we backed up twice and both backup1 and backup2 are available, backup1 is already overwritten by backup2, and the user who uses backup1 to restore will inevitably have an undesirable result.\nCan we create a backup_id_1 directory to backup share1 data and a backup_id_2 directory to backup share2 data after tmp_backup is mounted? This way, you can back up multiple shares without affecting each other. The size of tmp_backup can be set to 1TB as the total size of the backup pool.\n\nIn this way, both scenarios can be solved, what do you think?","commit_id":"54e11ec062ead140da5b92617c5a05d018aee3e5"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"430cc538d090f6edf5dcb63df3ac2f536e7f3f31","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"1de1a4fe_ad5075be","in_reply_to":"24d8e6ff_bed28692","updated":"2023-01-03 17:37:00.000000000","message":"1. yes, in this case previous data will be overwritten. Since both share are backed up on same location, latest copy will survive.\n\n2. Yes, data copy in this case fails. But if share of 2G contains data less that 1G, it will work. Since during backup or migration, we copy actual content. But if share of 2G contain e.g. 1.2G data, then backup on tmp_backup of 1GB will fail.\n\nActual error - No space left on device\nPropagated error - manila.exception.ShareDataCopyFailed: Share Data copy failed.","commit_id":"54e11ec062ead140da5b92617c5a05d018aee3e5"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ad11949fe2bb7cc838aa871a50898dbbccd3d209","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"24d8e6ff_bed28692","in_reply_to":"4e932871_153d0a66","updated":"2023-01-03 08:27:02.000000000","message":"There are two other scenarios:\n1: \nIf you have two shares that need to be backed up, share1 and share2, both of which are1 gigabyte, if you backup share1 first, then tmp_backup contains share1, and then what if you backup share2?\nWill the previous data in tmp_backup be overwritten?\n\n2:In the above example, the tmp_bakcup is 1G. If the share to be backed up is 2G, the backup size in the database is 2G, but the back-end size is only 1G when the backup is created. Is it possible that data copy fails during backup?","commit_id":"54e11ec062ead140da5b92617c5a05d018aee3e5"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"c6d83f2f8384618f6b673899b7211e2566815d7d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"92826df5_fd7c4c09","in_reply_to":"8621cf7d_6e3cfd87","updated":"2023-01-06 09:04:01.000000000","message":"Ok, this makes sense. Instead of allowing NFS backup driver as sample implementation, we can now consider practical implementation of manila-data driver. I have changed to create backup_id folder inside backup_export location and then do backup inside that folder. Similarly restore and delete operations will consider that backup_id folder. \nPlease check updated code.","commit_id":"54e11ec062ead140da5b92617c5a05d018aee3e5"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3ecdab9464080cf53f827af00cb41b4c6851148c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"827614e9_062d9770","updated":"2023-02-09 13:23:49.000000000","message":"Hello, Kiran! Could you please rebase this change?","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"fd6181e52cc29f7bd7cf729ffedaaaed11c2aeda","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"adbd1384_7b58265f","updated":"2023-03-30 14:10:40.000000000","message":"run-INFINIDAT","commit_id":"c7a3ee295fdbd28e889eca1a8d60c2f5cecbe236"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"21e98f4255e4e9cc3ac659e8cc742a830566394e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"d73d7284_a0772976","updated":"2023-05-30 04:28:11.000000000","message":"thanks for your change. please see my comments inline.","commit_id":"d1616564d69570dba70b38ff3941dd2925320b6c"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"6bc2253ff16b9cd7352b23856c716cd218eacd01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"31617421_ce48c858","updated":"2023-06-06 15:32:27.000000000","message":"Hello, Kiran, thanks for working on this feature. I added a few comments inline, please let me know what are your thoughts on them.","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"47f8d89a318f6702e4cef157a607ac45ed756fbd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"cb354f6f_365b361e","updated":"2023-06-02 19:47:37.000000000","message":"Looks good to me - thank you!","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1c934489e97ea15726afaea431225b0fb0d1c7dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"c78a15c7_9ff6d9b0","updated":"2023-06-01 03:41:04.000000000","message":"share backup look good for me. please see my comment inline.","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"26e6aa2c876c7d7894ba9ad8d28db03152cd6ec4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"f4f3b8ac_aaa775e3","updated":"2023-06-01 03:44:38.000000000","message":"thanks for your change, LGTM.","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":45,"id":"6cbe0af8_71da3b99","updated":"2023-06-08 02:14:52.000000000","message":"hi, here some more comments inline. please see it.\nThank you for your patience.","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9238b6fa26c56034629c61f469aa550e6ff235a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":47,"id":"901cdc6d_828ade07","updated":"2023-06-09 07:55:49.000000000","message":"Fixed all suggestions.","commit_id":"e706558ab678d02227311cafa341eb86c44a13d4"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ef4f5dbdec341026255d36448d750cb19fb2afde","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":47,"id":"aabae81e_35e650ff","updated":"2023-06-12 01:33:29.000000000","message":"thanks, just only one nit.","commit_id":"e706558ab678d02227311cafa341eb86c44a13d4"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"4e7b3f34b306195e932e3847089ec889d051e309","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":48,"id":"bec1ae4e_54f16ddd","updated":"2023-06-20 15:27:25.000000000","message":"Hello Kiran. Thanks for working on this feature. I added a few comments regarding unit tests, please let me know what you think about them.","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a2f03abe47eacaa7fbe2462aa1c4e3c4b7de7896","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":48,"id":"51f34476_4f399b28","updated":"2023-06-12 06:16:57.000000000","message":"LGTM","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"c253ac2550b1dc1222c04d34aac745831bc51849","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":48,"id":"23a90c75_e96cd693","updated":"2023-06-12 10:18:05.000000000","message":"Looks good to me and all tests successfully passed - thank you!","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":48,"id":"0660fd4e_8b7f8308","in_reply_to":"bec1ae4e_54f16ddd","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0ecb8350977e466c393c1724fd5244f8600b5dd5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"9ea208e8_d4409706","updated":"2023-07-05 12:39:48.000000000","message":"added dummy driver for functional tests.","commit_id":"7af095589c966a5700331502a57b768733c55800"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"93bd3abd_e5259236","updated":"2023-07-06 13:59:43.000000000","message":"Thank you for working on this change, Kiran. Please take a look at some comments inline.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"35cadebb754162f98ef14c4c41631fb7bc7608ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"1d7223b7_4e761690","updated":"2023-07-10 04:22:04.000000000","message":"hi, Kiran Pawar, thanks for your change.\nonly one nit.","commit_id":"87704c2b0a35dbcfac0cedea36227a3580e395ca"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"cc8e6fd2d031f008f66d7c5673a809a19388ab0a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":53,"id":"4574cefe_fb3e27a4","updated":"2023-07-10 06:58:08.000000000","message":"LGTM.","commit_id":"7740eddb35c1d361a9d420b153c5cb2773a96983"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"361f6275ebff77287daccc723d3dbcef59cb774e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":53,"id":"a4d5117e_b732b156","updated":"2023-07-10 12:08:20.000000000","message":"Thank you for working on the comments - please take a look at the response","commit_id":"7740eddb35c1d361a9d420b153c5cb2773a96983"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":54,"id":"2fc2af8a_f854f996","updated":"2023-07-12 23:45:32.000000000","message":"still working through this; initial comments inline","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"faaca19db668e2345bba3d51f6dd731f6694b5e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":55,"id":"4924ef79_5cd6d71b","updated":"2023-07-18 03:06:40.000000000","message":"LGTM, only two comments.","commit_id":"28503376751ca1a67daa0200fee078add0bc9960"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"374b5cbeb884814bcc0654a39f823658242c5dcd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":55,"id":"d87a2d8f_0bbdf117","updated":"2023-07-17 16:00:56.000000000","message":"Thanks for the changes. If other reviewers are happy, I\u0027m good with merging this change as soon as we have enough coverage in tempest and a positive output, as well as having a follow-up change merging in this cycle with the open minor points.\n\nIf the other reviewers are okay with this approach, please open a tracker on launchpad so we can use it to track the missing changed.","commit_id":"28503376751ca1a67daa0200fee078add0bc9960"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7067d3b7e7997f58c1fbc9860252939bb439f2aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":55,"id":"9899c170_76f098b7","updated":"2023-07-18 08:07:31.000000000","message":"fixed","commit_id":"28503376751ca1a67daa0200fee078add0bc9960"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"235c9408f1dc9ec175e69db5a2265c543df9eaa5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":56,"id":"a1bae029_f00f489a","updated":"2023-07-20 07:03:38.000000000","message":"LGTM","commit_id":"0f1b90c2e37668579739abebff7dd58116f80313"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a0b532cd658c2b18cb5e6095e18de94a1d01c115","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":57,"id":"86fc4b96_81afec3c","updated":"2023-07-28 01:05:12.000000000","message":"LGTM, thanks.","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":57,"id":"477c8b52_94816523","updated":"2023-08-01 02:23:01.000000000","message":"Thanks Kiran; please see comments inline. \n\nHaixin, Carlos, Kiran - great job iterating on this so far; i\u0027m a bit late to the party. We spoke a bunch of things at the collab review, and i\u0027m still concerned about some of those same things. If you\u0027d like, we can have a high touch discussion and resolve these issues. WDYT?","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"13814758800641baee9a4957893055e9d9403d99","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":57,"id":"2f94d86e_4d6833a2","updated":"2023-07-28 19:48:26.000000000","message":"Thanks for working on this feature, Kiran. My previous comments were addressed and code looks good to me.\n\nI just noticed that Thiago added a few comments regarding UT coverage, and I found 4 files had important functions added in this patch, but the coverage decreased:\n\n- manila/data/helper.py (from 96% to 87%)\n- manila/data/manager.py (from 98% to 79%)\n- manila/share/manager.py (from 90% to 88%)\n- manila/share/api.py (from 91% to 86%)\n\nCould you please add a few more UTs to cover these new functions?\n\nYou can check the last coverage report in the links below:\n\n(1) https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_af5/343980/57/check/openstack-tox-cover/af53452/cover/ \n\n(2) https://zuul.opendev.org/t/openstack/build/af534526d834460fa5a426eef8ed7187","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":57,"id":"39aaf962_dca1054c","in_reply_to":"2f94d86e_4d6833a2","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d40fc35036c5b32bea269698e2d2550f4bb0b05","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":58,"id":"4e42d3c5_6de153a6","updated":"2023-08-08 07:04:18.000000000","message":"thanks Kiran, Most of the code looks good, just a few suggestions.\nplease see my comments.","commit_id":"4c6394e479ce4ea0af8fda5a8b57ace4ad9e252b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a4f6dc896ead5d748c394ac9efa9a5c8c049967e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":59,"id":"9965e419_73fbf1e6","updated":"2023-08-10 04:11:51.000000000","message":"I\u0027d like to merge this soon so we can resolve API conflicts in the pending patches that we have; so could you address the API pieces? If something will take longer, we could do a follow up change..","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"0e26c353f53c5702f4948482517636a47801038e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":59,"id":"036729a4_6e50b6ef","updated":"2023-08-09 01:17:40.000000000","message":"LGTM. thanks for your change!","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"c1a4d9a6ba1b15ead432c03754fcd113e8aa2793","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":60,"id":"ef49503c_87a92c09","updated":"2023-08-10 13:35:52.000000000","message":"My comments have been addressed, thanks Kiran.","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2d059f1d483f53cd84cc2272c2a8d0765cb59ee9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":60,"id":"3c49ffc5_74e37969","updated":"2023-08-11 02:04:47.000000000","message":"Still reviewing the client/tempest tests; there may be more changes prompted by the reviews there... but the progress here\u0027s been great; and we\u0027ve approached a huge number of patchsets. I\u0027m okay merging this and doing follow up patches for issues identified.","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"faf63875d9de21ec4a31c1aef03811f46a4abb22","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":60,"id":"b24aff57_324733f4","updated":"2023-08-11 06:50:27.000000000","message":"thanks for your change Kiran.\nLet us merging this, and then doing follow up patches for issues identified by goutham.","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"}],"manila/api/v2/router.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":646,"context_line":"                           conditions\u003d{\"method\": [\"DELETE\"]})"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        self.resources[\u0027share-backups\u0027] \u003d share_backups.create_resource()"},{"line_number":649,"context_line":"        mapper.resource(\"share-backup\", \"share-backups\","},{"line_number":650,"context_line":"                        controller\u003dself.resources[\u0027share-backups\u0027],"},{"line_number":651,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":652,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":51,"id":"d15cfa61_355d50a8","line":649,"range":{"start_line":649,"start_character":40,"end_line":649,"end_character":55},"updated":"2023-07-06 13:59:43.000000000","message":"please also add an alias with underscore: share_backups","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"35cadebb754162f98ef14c4c41631fb7bc7608ea","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                           conditions\u003d{\"method\": [\"DELETE\"]})"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        self.resources[\u0027share-backups\u0027] \u003d share_backups.create_resource()"},{"line_number":649,"context_line":"        mapper.resource(\"share-backup\", \"share-backups\","},{"line_number":650,"context_line":"                        controller\u003dself.resources[\u0027share-backups\u0027],"},{"line_number":651,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":652,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":51,"id":"6d5e8801_e5cd5336","line":649,"range":{"start_line":649,"start_character":40,"end_line":649,"end_character":55},"in_reply_to":"1dfbe46d_c4397212","updated":"2023-07-10 04:22:04.000000000","message":"Carlos maybe means:\n\n    per.resource(\"share-backup\", \"share-backups\", \"share_backups\",\n                  controller\u003dself.resources[\u0027share-backups\u0027],\n                  collection\u003d{\u0027detail\u0027: \u0027GET\u0027},\n                  member\u003d{\u0027action\u0027: \u0027POST\u0027})\n                  \nor like below, just like snapshots does, this can be more clear.\n\n    per.resource(\"backup\", \"backups\",\n                  controller\u003dself.resources[\u0027backups\u0027],\n                  collection\u003d{\u0027detail\u0027: \u0027GET\u0027},\n                  member\u003d{\u0027action\u0027: \u0027POST\u0027})","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":646,"context_line":"                           conditions\u003d{\"method\": [\"DELETE\"]})"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        self.resources[\u0027share-backups\u0027] \u003d share_backups.create_resource()"},{"line_number":649,"context_line":"        mapper.resource(\"share-backup\", \"share-backups\","},{"line_number":650,"context_line":"                        controller\u003dself.resources[\u0027share-backups\u0027],"},{"line_number":651,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":652,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":51,"id":"b3cdc125_693234f7","line":649,"range":{"start_line":649,"start_character":40,"end_line":649,"end_character":55},"in_reply_to":"3775a590_8777c88d","updated":"2023-08-01 02:23:01.000000000","message":"Actually, this isn\u0027t an alias. \"share-backups\" is correct here.. we never got mapper.resource to support aliases :(  I remember looking at a github request for this years ago.. please see my comment on the latest patch","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3974fa0cd2c8073bad54eecf8eac802d2162f141","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                           conditions\u003d{\"method\": [\"DELETE\"]})"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        self.resources[\u0027share-backups\u0027] \u003d share_backups.create_resource()"},{"line_number":649,"context_line":"        mapper.resource(\"share-backup\", \"share-backups\","},{"line_number":650,"context_line":"                        controller\u003dself.resources[\u0027share-backups\u0027],"},{"line_number":651,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":652,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":51,"id":"b29bcd49_d4d526a1","line":649,"range":{"start_line":649,"start_character":40,"end_line":649,"end_character":55},"in_reply_to":"6d5e8801_e5cd5336","updated":"2023-07-10 06:48:23.000000000","message":"it does not have 3 parameters and so need to keep only share-backup + share-backups. This is consistent with other resource/mapper definition within file e.g. share-replica etc.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"361f6275ebff77287daccc723d3dbcef59cb774e","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                           conditions\u003d{\"method\": [\"DELETE\"]})"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        self.resources[\u0027share-backups\u0027] \u003d share_backups.create_resource()"},{"line_number":649,"context_line":"        mapper.resource(\"share-backup\", \"share-backups\","},{"line_number":650,"context_line":"                        controller\u003dself.resources[\u0027share-backups\u0027],"},{"line_number":651,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":652,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":51,"id":"3775a590_8777c88d","line":649,"range":{"start_line":649,"start_character":40,"end_line":649,"end_character":55},"in_reply_to":"b29bcd49_d4d526a1","updated":"2023-07-10 12:08:20.000000000","message":"I think this code part after the changes you did look okay - thanks Kiran!","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                           conditions\u003d{\"method\": [\"DELETE\"]})"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        self.resources[\u0027share-backups\u0027] \u003d share_backups.create_resource()"},{"line_number":649,"context_line":"        mapper.resource(\"share-backup\", \"share-backups\","},{"line_number":650,"context_line":"                        controller\u003dself.resources[\u0027share-backups\u0027],"},{"line_number":651,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":652,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":51,"id":"009b12c8_56cd86fb","line":649,"range":{"start_line":649,"start_character":40,"end_line":649,"end_character":55},"in_reply_to":"b3cdc125_693234f7","updated":"2023-08-07 10:17:56.000000000","message":"Ack","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                           conditions\u003d{\"method\": [\"DELETE\"]})"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        self.resources[\u0027share-backups\u0027] \u003d share_backups.create_resource()"},{"line_number":649,"context_line":"        mapper.resource(\"share-backup\", \"share-backups\","},{"line_number":650,"context_line":"                        controller\u003dself.resources[\u0027share-backups\u0027],"},{"line_number":651,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":652,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":51,"id":"1dfbe46d_c4397212","line":649,"range":{"start_line":649,"start_character":40,"end_line":649,"end_character":55},"in_reply_to":"d15cfa61_355d50a8","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        self.resources[\u0027share-backups\u0027] \u003d share_backups.create_resource()"},{"line_number":649,"context_line":"        mapper.resource(\"share-backup\","},{"line_number":650,"context_line":"                        \"share_backups\","},{"line_number":651,"context_line":"                        controller\u003dself.resources[\u0027share-backups\u0027],"},{"line_number":652,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":653,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":57,"id":"17fb4bff_ec5f98c6","line":650,"range":{"start_line":650,"start_character":25,"end_line":650,"end_character":38},"updated":"2023-08-01 02:23:01.000000000","message":"The convention in OpenStack is to use hyphens instead of underscores when creating Resource URLs:\n\nhttps://specs.openstack.org/openstack/api-wg/guidelines/naming.html#rest-api-resource-names\n\nso this has to be \"share-backups\"\n\n\nwe\u0027ve been inconsistent about hyphens vs underscores in our API endpoints in a few places: share_instances, share_instances/{share_instance_id}/export_locations and shares/{share_id}/export_locations and these are permanent regrets; because once published, it\u0027s quite hard to change the API; but people that use the API trip up on these inconsistencies","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        self.resources[\u0027share-backups\u0027] \u003d share_backups.create_resource()"},{"line_number":649,"context_line":"        mapper.resource(\"share-backup\","},{"line_number":650,"context_line":"                        \"share_backups\","},{"line_number":651,"context_line":"                        controller\u003dself.resources[\u0027share-backups\u0027],"},{"line_number":652,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":653,"context_line":"                        member\u003d{\u0027action\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":57,"id":"011945fe_9b75f41a","line":650,"range":{"start_line":650,"start_character":25,"end_line":650,"end_character":38},"in_reply_to":"17fb4bff_ec5f98c6","updated":"2023-08-07 10:17:56.000000000","message":"Ack","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"}],"manila/api/v2/share_backups.py":[{"author":{"_account_id":8056,"name":"Ramana Raja","email":"rraja@redhat.com","username":"Ram_Raja"},"change_message_id":"cc887190af758a099430bd4a997437d5376aad08","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from manila import share"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"MIN_SUPPORTED_API_VERSION \u003d \u00272.17\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class ShareBackupController(wsgi.Controller, wsgi.AdminActionsMixin):"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_c2712378","line":31,"updated":"2016-07-20 09:05:55.000000000","message":"2.19?","commit_id":"fa3729fb1a419e3757cab2bf9eddac4920d7812f"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        backup \u003d body.get(\u0027share_backup\u0027)"},{"line_number":110,"context_line":"        share_id \u003d backup.get(\u0027share_id\u0027)"},{"line_number":111,"context_line":"        preserve_metadata \u003d backup.get(\u0027preserve_metadata\u0027, True)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if not share_id:"},{"line_number":114,"context_line":"            msg \u003d _(\"Must provide Share ID to add backup.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_a8d9d785","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":65},"updated":"2016-07-22 21:54:24.000000000","message":"you may receive a string or integer here","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        backup \u003d body.get(\u0027share_backup\u0027)"},{"line_number":110,"context_line":"        share_id \u003d backup.get(\u0027share_id\u0027)"},{"line_number":111,"context_line":"        preserve_metadata \u003d backup.get(\u0027preserve_metadata\u0027, True)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if not share_id:"},{"line_number":114,"context_line":"            msg \u003d _(\"Must provide Share ID to add backup.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_85a8c38e","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":65},"in_reply_to":"dada55a8_a8d9d785","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        share_id \u003d backup.get(\u0027share_id\u0027)"},{"line_number":111,"context_line":"        preserve_metadata \u003d backup.get(\u0027preserve_metadata\u0027, True)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if not share_id:"},{"line_number":114,"context_line":"            msg \u003d _(\"Must provide Share ID to add backup.\")"},{"line_number":115,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_48e81b17","line":113,"range":{"start_line":113,"start_character":7,"end_line":113,"end_character":23},"updated":"2016-07-22 21:54:24.000000000","message":"you don\u0027t use this afterwards. I suggest obtaining the share here, validating if it is found, and then pass it to the Share/API layer.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        share_id \u003d backup.get(\u0027share_id\u0027)"},{"line_number":111,"context_line":"        preserve_metadata \u003d backup.get(\u0027preserve_metadata\u0027, True)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if not share_id:"},{"line_number":114,"context_line":"            msg \u003d _(\"Must provide Share ID to add backup.\")"},{"line_number":115,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_45d7ebec","line":113,"range":{"start_line":113,"start_character":7,"end_line":113,"end_character":23},"in_reply_to":"dada55a8_48e81b17","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"c4e33b2cb4f673fff6fbb283fdf7589ea9c8c5eb","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                context, backup, preserve_metadata\u003dpreserve_metadata)"},{"line_number":120,"context_line":"        except exception.BackupException as e:"},{"line_number":121,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dsix.text_type(e))"},{"line_number":122,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":123,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dsix.text_type(e))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        return self._view_builder.detail(req, backup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_4e271fb6","line":122,"updated":"2016-07-26 06:29:07.000000000","message":"missing InvalidShare exception?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                context, backup, preserve_metadata\u003dpreserve_metadata)"},{"line_number":120,"context_line":"        except exception.BackupException as e:"},{"line_number":121,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dsix.text_type(e))"},{"line_number":122,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":123,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dsix.text_type(e))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        return self._view_builder.detail(req, backup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_65f14f95","line":122,"in_reply_to":"dada55a8_4e271fb6","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"c4e33b2cb4f673fff6fbb283fdf7589ea9c8c5eb","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        \"\"\"Restore an existing backup to a share.\"\"\""},{"line_number":152,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        restore \u003d body[\u0027restore\u0027]"},{"line_number":155,"context_line":"        share_id \u003d restore.get(\u0027share_id\u0027)"},{"line_number":156,"context_line":"        preserve_metadata \u003d restore.get(\u0027preserve_metadata\u0027)"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_08b7df3a","line":154,"updated":"2016-07-26 06:29:07.000000000","message":"validate body.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        \"\"\"Restore an existing backup to a share.\"\"\""},{"line_number":152,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        restore \u003d body[\u0027restore\u0027]"},{"line_number":155,"context_line":"        share_id \u003d restore.get(\u0027share_id\u0027)"},{"line_number":156,"context_line":"        preserve_metadata \u003d restore.get(\u0027preserve_metadata\u0027)"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_053fb324","line":154,"in_reply_to":"dada55a8_08b7df3a","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        restore \u003d body[\u0027restore\u0027]"},{"line_number":155,"context_line":"        share_id \u003d restore.get(\u0027share_id\u0027)"},{"line_number":156,"context_line":"        preserve_metadata \u003d restore.get(\u0027preserve_metadata\u0027)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        try:"},{"line_number":159,"context_line":"            new_restore \u003d self.share_api.restore("}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_47e121fe","line":156,"range":{"start_line":155,"start_character":8,"end_line":156,"end_character":60},"updated":"2016-07-22 21:54:24.000000000","message":"needs validation","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        restore \u003d body[\u0027restore\u0027]"},{"line_number":155,"context_line":"        share_id \u003d restore.get(\u0027share_id\u0027)"},{"line_number":156,"context_line":"        preserve_metadata \u003d restore.get(\u0027preserve_metadata\u0027)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        try:"},{"line_number":159,"context_line":"            new_restore \u003d self.share_api.restore("}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_45452bb1","line":156,"range":{"start_line":155,"start_character":8,"end_line":156,"end_character":60},"in_reply_to":"dada55a8_47e121fe","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _verify_share(self, context, share_id):"},{"line_number":46,"context_line":"        try:"},{"line_number":47,"context_line":"            db.share_get(context, share_id)"},{"line_number":48,"context_line":"        except exception.NotFound:"},{"line_number":49,"context_line":"            msg \u003d _(\"Share \u0027%s\u0027 not found.\") % share_id"},{"line_number":50,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_0f104956","line":47,"range":{"start_line":47,"start_character":12,"end_line":47,"end_character":43},"updated":"2016-08-01 16:08:40.000000000","message":"see comment in share/api.py, I suggest passing it to the Share/API layer","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _verify_share(self, context, share_id):"},{"line_number":46,"context_line":"        try:"},{"line_number":47,"context_line":"            db.share_get(context, share_id)"},{"line_number":48,"context_line":"        except exception.NotFound:"},{"line_number":49,"context_line":"            msg \u003d _(\"Share \u0027%s\u0027 not found.\") % share_id"},{"line_number":50,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_ae2463b2","line":47,"range":{"start_line":47,"start_character":12,"end_line":47,"end_character":43},"in_reply_to":"bacf61ea_0f104956","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        preserve_metadata \u003d restore.get(\u0027preserve_metadata\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        try:"},{"line_number":183,"context_line":"            self._verify_share(context, share_id)"},{"line_number":184,"context_line":"        except exception.NotFound:"},{"line_number":185,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":186,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_1aa7e5aa","line":183,"range":{"start_line":183,"start_character":12,"end_line":183,"end_character":49},"updated":"2016-08-01 16:08:40.000000000","message":"same as the other comment about passing the share parameter to the Share/API layer","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        preserve_metadata \u003d restore.get(\u0027preserve_metadata\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        try:"},{"line_number":183,"context_line":"            self._verify_share(context, share_id)"},{"line_number":184,"context_line":"        except exception.NotFound:"},{"line_number":185,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":186,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_ee55bbfa","line":183,"range":{"start_line":183,"start_character":12,"end_line":183,"end_character":49},"in_reply_to":"bacf61ea_1aa7e5aa","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                backups \u003d db.share_backups_get_all_by_share("},{"line_number":65,"context_line":"                    context, share_id)"},{"line_number":66,"context_line":"            except exception.NotFound:"},{"line_number":67,"context_line":"                msg \u003d _(\"Share with share ID %s not found.\") % share_id"},{"line_number":68,"context_line":"                raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            backups \u003d db.share_backups_get_all(context)"}],"source_content_type":"text/x-python","patch_set":51,"id":"c4f228df_89f93eba","line":67,"range":{"start_line":67,"start_character":25,"end_line":67,"end_character":58},"updated":"2023-07-06 13:59:43.000000000","message":"Is the share id the only thing that might be missing, or is there a chance to have other exceptions?","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"361f6275ebff77287daccc723d3dbcef59cb774e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                backups \u003d db.share_backups_get_all_by_share("},{"line_number":65,"context_line":"                    context, share_id)"},{"line_number":66,"context_line":"            except exception.NotFound:"},{"line_number":67,"context_line":"                msg \u003d _(\"Share with share ID %s not found.\") % share_id"},{"line_number":68,"context_line":"                raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            backups \u003d db.share_backups_get_all(context)"}],"source_content_type":"text/x-python","patch_set":51,"id":"1cd36cbe_06154fcc","line":67,"range":{"start_line":67,"start_character":25,"end_line":67,"end_character":58},"in_reply_to":"abc1e97f_3fe5ab71","updated":"2023-07-10 12:08:20.000000000","message":"Ack, thanks!","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                backups \u003d db.share_backups_get_all_by_share("},{"line_number":65,"context_line":"                    context, share_id)"},{"line_number":66,"context_line":"            except exception.NotFound:"},{"line_number":67,"context_line":"                msg \u003d _(\"Share with share ID %s not found.\") % share_id"},{"line_number":68,"context_line":"                raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            backups \u003d db.share_backups_get_all(context)"}],"source_content_type":"text/x-python","patch_set":51,"id":"abc1e97f_3fe5ab71","line":67,"range":{"start_line":67,"start_character":25,"end_line":67,"end_character":58},"in_reply_to":"c4f228df_89f93eba","updated":"2023-07-07 13:35:25.000000000","message":"I have restructured if condition byt validating presence of share first.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                msg \u003d _(\"Share with share ID %s not found.\") % share_id"},{"line_number":68,"context_line":"                raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        limited_list \u003d common.limited(backups, req)"},{"line_number":73,"context_line":"        if is_detail:"}],"source_content_type":"text/x-python","patch_set":51,"id":"efddcb24_9d6570dc","line":70,"range":{"start_line":70,"start_character":12,"end_line":70,"end_character":55},"updated":"2023-07-06 13:59:43.000000000","message":"is there a chance for exception here too? If so, we would need to declare backups \u003d [] on line 61, to ensure this variable exists","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                msg \u003d _(\"Share with share ID %s not found.\") % share_id"},{"line_number":68,"context_line":"                raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        limited_list \u003d common.limited(backups, req)"},{"line_number":73,"context_line":"        if is_detail:"}],"source_content_type":"text/x-python","patch_set":51,"id":"3cc5c677_01eaecba","line":70,"range":{"start_line":70,"start_character":12,"end_line":70,"end_character":55},"in_reply_to":"efddcb24_9d6570dc","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":109,"context_line":"            share_ref \u003d db.share_get(context, share_id)"},{"line_number":110,"context_line":"        except exception.NotFound:"},{"line_number":111,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":112,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            backup \u003d self.share_api.create_share_backup(context, share_ref,"}],"source_content_type":"text/x-python","patch_set":51,"id":"c4d53e92_1c85b13e","line":112,"updated":"2023-07-06 13:59:43.000000000","message":"please check if the share was soft deleted","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            share_ref \u003d db.share_get(context, share_id)"},{"line_number":110,"context_line":"        except exception.NotFound:"},{"line_number":111,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":112,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            backup \u003d self.share_api.create_share_backup(context, share_ref,"}],"source_content_type":"text/x-python","patch_set":51,"id":"ce6ab94f_2dafb100","line":112,"in_reply_to":"c4d53e92_1c85b13e","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            backup \u003d self.share_api.create_share_backup(context, share_ref,"},{"line_number":116,"context_line":"                                                        backup)"},{"line_number":117,"context_line":"        except (exception.BackupException,"},{"line_number":118,"context_line":"                exception.ShareBusyException) as e:"},{"line_number":119,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"5412969c_64986640","line":117,"range":{"start_line":117,"start_character":16,"end_line":117,"end_character":41},"updated":"2023-07-06 13:59:43.000000000","message":"this exception is not being raised anywhere, you\u0027re mostly using exception.InvalidBackup instead.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            backup \u003d self.share_api.create_share_backup(context, share_ref,"},{"line_number":116,"context_line":"                                                        backup)"},{"line_number":117,"context_line":"        except (exception.BackupException,"},{"line_number":118,"context_line":"                exception.ShareBusyException) as e:"},{"line_number":119,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"5065a56a_cb37f6ad","line":117,"range":{"start_line":117,"start_character":16,"end_line":117,"end_character":41},"in_reply_to":"5412969c_64986640","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            backup \u003d self.share_api.create_share_backup(context, share_ref,"},{"line_number":116,"context_line":"                                                        backup)"},{"line_number":117,"context_line":"        except (exception.BackupException,"},{"line_number":118,"context_line":"                exception.ShareBusyException) as e:"},{"line_number":119,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        return self._view_builder.detail(req, backup)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"41db4d7b_f8775079","line":119,"range":{"start_line":117,"start_character":8,"end_line":119,"end_character":59},"updated":"2023-07-06 13:59:43.000000000","message":"please also catch InvalidShare and raise HTTP conflict\nhttps://review.opendev.org/c/openstack/manila/+/343980/51/manila/share/api.py#3728","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        try:"},{"line_number":115,"context_line":"            backup \u003d self.share_api.create_share_backup(context, share_ref,"},{"line_number":116,"context_line":"                                                        backup)"},{"line_number":117,"context_line":"        except (exception.BackupException,"},{"line_number":118,"context_line":"                exception.ShareBusyException) as e:"},{"line_number":119,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        return self._view_builder.detail(req, backup)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"d9dd46cb_c30d6839","line":119,"range":{"start_line":117,"start_character":8,"end_line":119,"end_character":59},"in_reply_to":"41db4d7b_f8775079","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":129,"context_line":"        try:"},{"line_number":130,"context_line":"            backup \u003d db.share_backup_get(context, id)"},{"line_number":131,"context_line":"        except exception.ShareBackupNotFound:"},{"line_number":132,"context_line":"            msg \u003d _(\"No backup exists with ID %s.\")"},{"line_number":133,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % id)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":51,"id":"f605b790_85ad301c","line":132,"range":{"start_line":132,"start_character":12,"end_line":132,"end_character":51},"updated":"2023-07-06 13:59:43.000000000","message":"I think it would be better to keep the consistency in the error messages... Above you have used: msg \u003d _(\"Backup %s not found.\") % id\nso I think it makes sense to use the same one from above","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        try:"},{"line_number":130,"context_line":"            backup \u003d db.share_backup_get(context, id)"},{"line_number":131,"context_line":"        except exception.ShareBackupNotFound:"},{"line_number":132,"context_line":"            msg \u003d _(\"No backup exists with ID %s.\")"},{"line_number":133,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % id)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":51,"id":"1fe29e77_4eb95cc4","line":132,"range":{"start_line":132,"start_character":12,"end_line":132,"end_character":51},"in_reply_to":"f605b790_85ad301c","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            self.share_api.delete_share_backup(context, backup)"},{"line_number":137,"context_line":"        except exception.BackupException as e:"},{"line_number":138,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        return webob.Response(status_int\u003d202)"}],"source_content_type":"text/x-python","patch_set":51,"id":"f77c263f_4169e318","line":137,"range":{"start_line":137,"start_character":15,"end_line":137,"end_character":45},"updated":"2023-07-06 13:59:43.000000000","message":"same as above, you\u0027ll not catch the actual exception being raised: exception.InvalidBackup","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            self.share_api.delete_share_backup(context, backup)"},{"line_number":137,"context_line":"        except exception.BackupException as e:"},{"line_number":138,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        return webob.Response(status_int\u003d202)"}],"source_content_type":"text/x-python","patch_set":51,"id":"4041c141_fde81e07","line":137,"range":{"start_line":137,"start_character":15,"end_line":137,"end_character":45},"in_reply_to":"f77c263f_4169e318","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"361f6275ebff77287daccc723d3dbcef59cb774e","unresolved":true,"context_lines":[{"line_number":113,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":114,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":115,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":116,"context_line":"            msg \u003d _(\"backup can not be created for share \u0027%s\u0027 \""},{"line_number":117,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":118,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":52,"id":"a60a7a3c_0280fa4d","line":116,"range":{"start_line":116,"start_character":21,"end_line":116,"end_character":27},"updated":"2023-07-10 12:08:20.000000000","message":"nit: please start the logging phrase with a capital letter","commit_id":"87704c2b0a35dbcfac0cedea36227a3580e395ca"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"642cc11f7b6f6c3716a5d4f28f019ec736ef55d4","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":114,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":115,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":116,"context_line":"            msg \u003d _(\"backup can not be created for share \u0027%s\u0027 \""},{"line_number":117,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":118,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":52,"id":"abd72610_c7a271af","line":116,"range":{"start_line":116,"start_character":21,"end_line":116,"end_character":27},"in_reply_to":"a60a7a3c_0280fa4d","updated":"2023-07-10 13:21:04.000000000","message":"Done","commit_id":"87704c2b0a35dbcfac0cedea36227a3580e395ca"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"35cadebb754162f98ef14c4c41631fb7bc7608ea","unresolved":true,"context_lines":[{"line_number":122,"context_line":"        except (exception.InvalidBackup,"},{"line_number":123,"context_line":"                exception.InvalidShare,"},{"line_number":124,"context_line":"                exception.ShareBusyException) as e:"},{"line_number":125,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        return self._view_builder.detail(req, backup)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":52,"id":"2b794d98_db413ab7","line":125,"range":{"start_line":125,"start_character":12,"end_line":125,"end_character":59},"updated":"2023-07-10 04:22:04.000000000","message":"should be:\n\n    raise exc.HTTPConflict(explanation\u003de.message)","commit_id":"87704c2b0a35dbcfac0cedea36227a3580e395ca"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3974fa0cd2c8073bad54eecf8eac802d2162f141","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        except (exception.InvalidBackup,"},{"line_number":123,"context_line":"                exception.InvalidShare,"},{"line_number":124,"context_line":"                exception.ShareBusyException) as e:"},{"line_number":125,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        return self._view_builder.detail(req, backup)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":52,"id":"e3d898b8_e18b008b","line":125,"range":{"start_line":125,"start_character":12,"end_line":125,"end_character":59},"in_reply_to":"2b794d98_db413ab7","updated":"2023-07-10 06:48:23.000000000","message":"Done","commit_id":"87704c2b0a35dbcfac0cedea36227a3580e395ca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":64,"context_line":"            try:"},{"line_number":65,"context_line":"                db.share_get(context, share_id)"},{"line_number":66,"context_line":"            except exception.NotFound:"},{"line_number":67,"context_line":"                msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":68,"context_line":"                raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"            backups \u003d db.share_backups_get_all_by_share(context, share_id)"},{"line_number":71,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":54,"id":"1d76faf3_4c47fe7b","line":68,"range":{"start_line":67,"start_character":16,"end_line":68,"end_character":66},"updated":"2023-07-12 23:45:32.000000000","message":"The \"share_id\" is a query parameter, it\u0027s not in the URL, so the error here should be HTTPBadRequest","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            try:"},{"line_number":65,"context_line":"                db.share_get(context, share_id)"},{"line_number":66,"context_line":"            except exception.NotFound:"},{"line_number":67,"context_line":"                msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":68,"context_line":"                raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"            backups \u003d db.share_backups_get_all_by_share(context, share_id)"},{"line_number":71,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":54,"id":"49d00408_5dd80263","line":68,"range":{"start_line":67,"start_character":16,"end_line":68,"end_character":66},"in_reply_to":"1d76faf3_4c47fe7b","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        limited_list \u003d common.limited(backups, req)"},{"line_number":75,"context_line":"        if is_detail:"},{"line_number":76,"context_line":"            backups \u003d self._view_builder.detail_list(req, limited_list)"},{"line_number":77,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":54,"id":"e30dd816_b037e28b","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":51},"updated":"2023-07-12 23:45:32.000000000","message":"please perform all sorting, pagination and filtering operations in the database: https://bugs.launchpad.net/manila/+bug/1831094","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        limited_list \u003d common.limited(backups, req)"},{"line_number":75,"context_line":"        if is_detail:"},{"line_number":76,"context_line":"            backups \u003d self._view_builder.detail_list(req, limited_list)"},{"line_number":77,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":54,"id":"51488437_7b71fe5f","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":51},"in_reply_to":"11beb556_35f35831","updated":"2023-08-01 02:23:01.000000000","message":"Thanks for asking for the comment, Haixin; and for adding this comment, Kiran.\n\nI\u0027m not in favor of creating or tracking technical debt this way. However, I understand that it\u0027s very arduous to push a big feature change like this and worry about change requests. We often pay significantly by delaying some things for later because we lose context. Maybe you\u0027ll fix this in a few days, or maybe not.. in the future, I\u0027d like to have a LP bug reported so that we can track this; if someone else would like to help out, they can pick up the bug and fix it up.","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"faaca19db668e2345bba3d51f6dd731f6694b5e1","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        limited_list \u003d common.limited(backups, req)"},{"line_number":75,"context_line":"        if is_detail:"},{"line_number":76,"context_line":"            backups \u003d self._view_builder.detail_list(req, limited_list)"},{"line_number":77,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":54,"id":"2c2f3aeb_9447183c","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":51},"in_reply_to":"11beb556_35f35831","updated":"2023-07-18 03:06:40.000000000","message":"ok, please add TODO marker in line 73. After this patch merged, I will use another patch to optimize the query mode of the database.\n\n    # TODO perform all sorting, pagination and filtering operations in db\n    limited_list \u003d common.limited(backups, req)","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7067d3b7e7997f58c1fbc9860252939bb439f2aa","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        limited_list \u003d common.limited(backups, req)"},{"line_number":75,"context_line":"        if is_detail:"},{"line_number":76,"context_line":"            backups \u003d self._view_builder.detail_list(req, limited_list)"},{"line_number":77,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":54,"id":"cb2619d1_b3aa16fd","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":51},"in_reply_to":"2c2f3aeb_9447183c","updated":"2023-07-18 08:07:31.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        limited_list \u003d common.limited(backups, req)"},{"line_number":75,"context_line":"        if is_detail:"},{"line_number":76,"context_line":"            backups \u003d self._view_builder.detail_list(req, limited_list)"},{"line_number":77,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":54,"id":"11beb556_35f35831","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":51},"in_reply_to":"36da9c5c_aca4de69","updated":"2023-07-13 11:04:42.000000000","message":"I agree that it should be paginated similar to snapshots. But this is increasing change delta review by review. I would prefer to create followup change to add pagination after this gets added. For the time being, current implementation matches with share_replica code.","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        limited_list \u003d common.limited(backups, req)"},{"line_number":75,"context_line":"        if is_detail:"},{"line_number":76,"context_line":"            backups \u003d self._view_builder.detail_list(req, limited_list)"},{"line_number":77,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":54,"id":"1e2a4787_80ee377f","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":51},"in_reply_to":"51488437_7b71fe5f","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"df95159c0eb172c5e1cb4c83bc3d7e1bd8a54673","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        limited_list \u003d common.limited(backups, req)"},{"line_number":75,"context_line":"        if is_detail:"},{"line_number":76,"context_line":"            backups \u003d self._view_builder.detail_list(req, limited_list)"},{"line_number":77,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":54,"id":"36da9c5c_aca4de69","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":51},"in_reply_to":"e30dd816_b037e28b","updated":"2023-07-13 02:07:57.000000000","message":"+1\nmanila/db/sqlalchemy/utils.py is used for paginate_query.\nfunction def exact_filter() is used for filtering.","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":80,"context_line":"        return backups"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"},{"line_number":83,"context_line":"    @wsgi.Controller.authorize(\u0027show\u0027)"},{"line_number":84,"context_line":"    def show(self, req, id):"},{"line_number":85,"context_line":"        \"\"\"Return data about the given backup.\"\"\""},{"line_number":86,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":54,"id":"27b3494d_66699ca9","line":83,"range":{"start_line":83,"start_character":30,"end_line":83,"end_character":38},"updated":"2023-07-12 23:45:32.000000000","message":"nit; this is only needed when the method name is different from the policy name..","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        return backups"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"},{"line_number":83,"context_line":"    @wsgi.Controller.authorize(\u0027show\u0027)"},{"line_number":84,"context_line":"    def show(self, req, id):"},{"line_number":85,"context_line":"        \"\"\"Return data about the given backup.\"\"\""},{"line_number":86,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":54,"id":"e8772d06_edd9fcce","line":83,"range":{"start_line":83,"start_character":30,"end_line":83,"end_character":38},"in_reply_to":"27b3494d_66699ca9","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"},{"line_number":97,"context_line":"    @wsgi.response(202)"},{"line_number":98,"context_line":"    @wsgi.Controller.authorize(\u0027create\u0027)"},{"line_number":99,"context_line":"    def create(self, req, body):"},{"line_number":100,"context_line":"        \"\"\"Add a backup to an existing share.\"\"\""},{"line_number":101,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":54,"id":"4a91e952_2fce8974","line":98,"range":{"start_line":98,"start_character":31,"end_line":98,"end_character":40},"updated":"2023-07-12 23:45:32.000000000","message":"same comment as above","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"},{"line_number":97,"context_line":"    @wsgi.response(202)"},{"line_number":98,"context_line":"    @wsgi.Controller.authorize(\u0027create\u0027)"},{"line_number":99,"context_line":"    def create(self, req, body):"},{"line_number":100,"context_line":"        \"\"\"Add a backup to an existing share.\"\"\""},{"line_number":101,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":54,"id":"c47ff317_2b1db640","line":98,"range":{"start_line":98,"start_character":31,"end_line":98,"end_character":40},"in_reply_to":"4a91e952_2fce8974","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        try:"},{"line_number":111,"context_line":"            share \u003d db.share_get(context, share_id)"},{"line_number":112,"context_line":"        except exception.NotFound:"},{"line_number":113,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":114,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":115,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":116,"context_line":"            msg \u003d _(\"Backup can not be created for share \u0027%s\u0027 \""},{"line_number":117,"context_line":"                    \"since it has been soft deleted.\") % share_id"}],"source_content_type":"text/x-python","patch_set":54,"id":"95c645a4_cd368f44","line":114,"range":{"start_line":112,"start_character":0,"end_line":114,"end_character":62},"updated":"2023-07-12 23:45:32.000000000","message":"share_id is in the request body, not in the URL, the appropriate response here is HTTP Bad Request","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        try:"},{"line_number":111,"context_line":"            share \u003d db.share_get(context, share_id)"},{"line_number":112,"context_line":"        except exception.NotFound:"},{"line_number":113,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":114,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":115,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":116,"context_line":"            msg \u003d _(\"Backup can not be created for share \u0027%s\u0027 \""},{"line_number":117,"context_line":"                    \"since it has been soft deleted.\") % share_id"}],"source_content_type":"text/x-python","patch_set":54,"id":"55a9c866_e1348623","line":114,"range":{"start_line":112,"start_character":0,"end_line":114,"end_character":62},"in_reply_to":"95c645a4_cd368f44","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":128,"context_line":"        return self._view_builder.detail(req, backup)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"},{"line_number":131,"context_line":"    @wsgi.Controller.authorize(\u0027delete\u0027)"},{"line_number":132,"context_line":"    def delete(self, req, id):"},{"line_number":133,"context_line":"        \"\"\"Delete a backup.\"\"\""},{"line_number":134,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":54,"id":"e5b19181_7784f357","line":131,"range":{"start_line":131,"start_character":30,"end_line":131,"end_character":40},"updated":"2023-07-12 23:45:32.000000000","message":"nit: remove","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        return self._view_builder.detail(req, backup)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"},{"line_number":131,"context_line":"    @wsgi.Controller.authorize(\u0027delete\u0027)"},{"line_number":132,"context_line":"    def delete(self, req, id):"},{"line_number":133,"context_line":"        \"\"\"Delete a backup.\"\"\""},{"line_number":134,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":54,"id":"ce035f90_962ef9d3","line":131,"range":{"start_line":131,"start_character":30,"end_line":131,"end_character":40},"in_reply_to":"e5b19181_7784f357","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":149,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"},{"line_number":150,"context_line":"    @wsgi.action(\u0027restore\u0027)"},{"line_number":151,"context_line":"    @wsgi.response(202)"},{"line_number":152,"context_line":"    @wsgi.Controller.authorize(\u0027restore\u0027)"},{"line_number":153,"context_line":"    def restore(self, req, id, body):"},{"line_number":154,"context_line":"        \"\"\"Restore an existing backup to a share.\"\"\""},{"line_number":155,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":54,"id":"49d0d3b4_66034cc7","line":152,"range":{"start_line":152,"start_character":30,"end_line":152,"end_character":41},"updated":"2023-07-12 23:45:32.000000000","message":"nit: remove","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"},{"line_number":150,"context_line":"    @wsgi.action(\u0027restore\u0027)"},{"line_number":151,"context_line":"    @wsgi.response(202)"},{"line_number":152,"context_line":"    @wsgi.Controller.authorize(\u0027restore\u0027)"},{"line_number":153,"context_line":"    def restore(self, req, id, body):"},{"line_number":154,"context_line":"        \"\"\"Restore an existing backup to a share.\"\"\""},{"line_number":155,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":54,"id":"7f4c601a_1e325d8b","line":152,"range":{"start_line":152,"start_character":30,"end_line":152,"end_character":41},"in_reply_to":"49d0d3b4_66034cc7","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":168,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        retval \u003d self._view_builder.restore_summary("},{"line_number":171,"context_line":"            req, dict(new_restore))"},{"line_number":172,"context_line":"        return retval"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":54,"id":"d501cabc_a3d452be","line":171,"range":{"start_line":171,"start_character":17,"end_line":171,"end_character":34},"updated":"2023-07-12 23:45:32.000000000","message":"why cast this into a dict? models have a dict behavior already","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        retval \u003d self._view_builder.restore_summary("},{"line_number":171,"context_line":"            req, dict(new_restore))"},{"line_number":172,"context_line":"        return retval"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":54,"id":"5758ca58_f5ad7d15","line":171,"range":{"start_line":171,"start_character":17,"end_line":171,"end_character":34},"in_reply_to":"d501cabc_a3d452be","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"},{"line_number":175,"context_line":"    @wsgi.response(202)"},{"line_number":176,"context_line":"    @wsgi.Controller.authorize(\u0027update\u0027)"},{"line_number":177,"context_line":"    def update(self, req, id, body):"},{"line_number":178,"context_line":"        \"\"\"Update a backup.\"\"\""},{"line_number":179,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":54,"id":"6bde0212_5ed2c995","line":176,"range":{"start_line":176,"start_character":30,"end_line":176,"end_character":40},"updated":"2023-07-12 23:45:32.000000000","message":"nit: remove","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    @wsgi.Controller.api_version(MIN_SUPPORTED_API_VERSION, experimental\u003dTrue)"},{"line_number":175,"context_line":"    @wsgi.response(202)"},{"line_number":176,"context_line":"    @wsgi.Controller.authorize(\u0027update\u0027)"},{"line_number":177,"context_line":"    def update(self, req, id, body):"},{"line_number":178,"context_line":"        \"\"\"Update a backup.\"\"\""},{"line_number":179,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":54,"id":"dff05c4e_4bbe4344","line":176,"range":{"start_line":176,"start_character":30,"end_line":176,"end_character":40},"in_reply_to":"6bde0212_5ed2c995","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":62,"context_line":"        backups \u003d []"},{"line_number":63,"context_line":"        if share_id:"},{"line_number":64,"context_line":"            try:"},{"line_number":65,"context_line":"                db.share_get(context, share_id)"},{"line_number":66,"context_line":"            except exception.NotFound:"},{"line_number":67,"context_line":"                msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":68,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg % share_id)"}],"source_content_type":"text/x-python","patch_set":57,"id":"1531f74a_ab62d215","line":65,"range":{"start_line":65,"start_character":16,"end_line":65,"end_character":47},"updated":"2023-08-01 02:23:01.000000000","message":"this allows you to perform a non-scoped (cross-project) lookup on shares. You should use the get method from the share API instead because it checks policy: https://github.com/openstack/manila/blob/3b9cfe126fbb5d83febe6f9f8747be3c4ce787c4/manila/share/api.py#L2066-L2073","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        backups \u003d []"},{"line_number":63,"context_line":"        if share_id:"},{"line_number":64,"context_line":"            try:"},{"line_number":65,"context_line":"                db.share_get(context, share_id)"},{"line_number":66,"context_line":"            except exception.NotFound:"},{"line_number":67,"context_line":"                msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":68,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg % share_id)"}],"source_content_type":"text/x-python","patch_set":57,"id":"8351efe9_e83180ed","line":65,"range":{"start_line":65,"start_character":16,"end_line":65,"end_character":47},"in_reply_to":"1531f74a_ab62d215","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":68,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg % share_id)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"            backups \u003d db.share_backups_get_all_by_share(context, share_id)"},{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # TODO(kpdev) perform all sorting, pagination and filtering in db"},{"line_number":75,"context_line":"        limited_list \u003d common.limited(backups, req)"}],"source_content_type":"text/x-python","patch_set":57,"id":"4a702784_9d82b702","line":72,"range":{"start_line":70,"start_character":3,"end_line":72,"end_character":55},"updated":"2023-08-01 02:23:01.000000000","message":"this branching doesn\u0027t seem useful. you already have a _share_backups_get_with_filters method.. you could modify the \"share_backups_get_all\" to accept filters:\n\n```\n\n  filters \u003d {}\n  if share_id:\n      try:\n          share_api.get(context, share_id)\n          filters[\u0027share_id\u0027] \u003d share_id\n      except exception.NotFound:\n           msg \u003d _(\"No share exists with ID %s.\")\n           raise exc.HTTPBadRequest(explanation\u003dmsg % share_id)\n   backups \u003d db.share_backups_get_all(context, filters\u003dfilters)\n   \n```","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":68,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg % share_id)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"            backups \u003d db.share_backups_get_all_by_share(context, share_id)"},{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            backups \u003d db.share_backups_get_all(context)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # TODO(kpdev) perform all sorting, pagination and filtering in db"},{"line_number":75,"context_line":"        limited_list \u003d common.limited(backups, req)"}],"source_content_type":"text/x-python","patch_set":57,"id":"fee27e86_9c8918d5","line":72,"range":{"start_line":70,"start_character":3,"end_line":72,"end_character":55},"in_reply_to":"4a702784_9d82b702","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":104,"context_line":"            raise exc.HTTPUnprocessableEntity(explanation\u003dmsg)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        backup \u003d body.get(\u0027share_backup\u0027)"},{"line_number":107,"context_line":"        share_id \u003d backup.get(\u0027share_id\u0027)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            share \u003d db.share_get(context, share_id)"}],"source_content_type":"text/x-python","patch_set":57,"id":"163aef64_a4b51e5d","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":41},"updated":"2023-08-01 02:23:01.000000000","message":"this could be None.. \n\ni.e., if the share_id is missing, the API would need to raise an error.","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            raise exc.HTTPUnprocessableEntity(explanation\u003dmsg)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        backup \u003d body.get(\u0027share_backup\u0027)"},{"line_number":107,"context_line":"        share_id \u003d backup.get(\u0027share_id\u0027)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            share \u003d db.share_get(context, share_id)"}],"source_content_type":"text/x-python","patch_set":57,"id":"8a52a973_1bc97d98","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":41},"in_reply_to":"163aef64_a4b51e5d","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":107,"context_line":"        share_id \u003d backup.get(\u0027share_id\u0027)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            share \u003d db.share_get(context, share_id)"},{"line_number":111,"context_line":"        except exception.NotFound:"},{"line_number":112,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":113,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg % share_id)"}],"source_content_type":"text/x-python","patch_set":57,"id":"6745e511_a28d15f1","line":110,"range":{"start_line":110,"start_character":12,"end_line":110,"end_character":51},"updated":"2023-08-01 02:23:01.000000000","message":"same concern as get. please don\u0027t use the db method directly, it allows retrieving shares across projects. You could use https://github.com/openstack/manila/blob/3b9cfe126fbb5d83febe6f9f8747be3c4ce787c4/manila/share/api.py#L2066-L2073","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        share_id \u003d backup.get(\u0027share_id\u0027)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            share \u003d db.share_get(context, share_id)"},{"line_number":111,"context_line":"        except exception.NotFound:"},{"line_number":112,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":113,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg % share_id)"}],"source_content_type":"text/x-python","patch_set":57,"id":"66bf56bb_44a08b68","line":110,"range":{"start_line":110,"start_character":12,"end_line":110,"end_character":51},"in_reply_to":"6745e511_a28d15f1","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":63,"context_line":"        params \u003d common.get_pagination_params(req)"},{"line_number":64,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        search_opts.pop(\u0027limit\u0027, None)"},{"line_number":67,"context_line":"        search_opts.pop(\u0027offset\u0027, None)"},{"line_number":68,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(search_opts)"},{"line_number":69,"context_line":"        key_dict \u003d {\"name\": \"display_name\","},{"line_number":70,"context_line":"                    \"description\": \"display_description\"}"}],"source_content_type":"text/x-python","patch_set":59,"id":"379b83e8_76383845","line":67,"range":{"start_line":66,"start_character":8,"end_line":67,"end_character":39},"updated":"2023-08-10 01:59:23.000000000","message":"you\u0027ll need to pop sort_key and sort_dir as well after processing the next few lines..","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        params \u003d common.get_pagination_params(req)"},{"line_number":64,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        search_opts.pop(\u0027limit\u0027, None)"},{"line_number":67,"context_line":"        search_opts.pop(\u0027offset\u0027, None)"},{"line_number":68,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(search_opts)"},{"line_number":69,"context_line":"        key_dict \u003d {\"name\": \"display_name\","},{"line_number":70,"context_line":"                    \"description\": \"display_description\"}"}],"source_content_type":"text/x-python","patch_set":59,"id":"cb5b431b_fb4a11a3","line":67,"range":{"start_line":66,"start_character":8,"end_line":67,"end_character":39},"in_reply_to":"379b83e8_76383845","updated":"2023-08-10 11:13:30.000000000","message":"get_sort_params function does pop them.","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":123,"context_line":"        share_id \u003d backup.get(\u0027share_id\u0027)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        if not share_id:"},{"line_number":126,"context_line":"            msg \u003d _(\"\u0027share\u0027 is missing from the request body.\")"},{"line_number":127,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":59,"id":"32f5b15e_93bdf04d","line":126,"range":{"start_line":126,"start_character":22,"end_line":126,"end_character":27},"updated":"2023-08-10 01:59:23.000000000","message":"share_id","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        share_id \u003d backup.get(\u0027share_id\u0027)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        if not share_id:"},{"line_number":126,"context_line":"            msg \u003d _(\"\u0027share\u0027 is missing from the request body.\")"},{"line_number":127,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":59,"id":"9a313b02_cebb88a3","line":126,"range":{"start_line":126,"start_character":22,"end_line":126,"end_character":27},"in_reply_to":"32f5b15e_93bdf04d","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a4f6dc896ead5d748c394ac9efa9a5c8c049967e","unresolved":true,"context_lines":[{"line_number":140,"context_line":"            backup \u003d self.share_api.create_share_backup(context, share, backup)"},{"line_number":141,"context_line":"        except (exception.InvalidBackup,"},{"line_number":142,"context_line":"                exception.InvalidShare) as e:"},{"line_number":143,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":144,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":145,"context_line":"            raise exc.HTTPConflict(explanation\u003de.message)"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"5553e24d_a2e7ef0c","line":143,"range":{"start_line":143,"start_character":51,"end_line":143,"end_character":58},"updated":"2023-08-10 04:11:51.000000000","message":"e.msg","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            backup \u003d self.share_api.create_share_backup(context, share, backup)"},{"line_number":141,"context_line":"        except (exception.InvalidBackup,"},{"line_number":142,"context_line":"                exception.InvalidShare) as e:"},{"line_number":143,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":144,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":145,"context_line":"            raise exc.HTTPConflict(explanation\u003de.message)"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"4cb5b5ae_1ff9c265","line":143,"range":{"start_line":143,"start_character":51,"end_line":143,"end_character":58},"in_reply_to":"5553e24d_a2e7ef0c","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a4f6dc896ead5d748c394ac9efa9a5c8c049967e","unresolved":true,"context_lines":[{"line_number":142,"context_line":"                exception.InvalidShare) as e:"},{"line_number":143,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":144,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":145,"context_line":"            raise exc.HTTPConflict(explanation\u003de.message)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        return self._view_builder.detail(req, backup)"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"072fe443_6b0aa4aa","line":145,"range":{"start_line":145,"start_character":49,"end_line":145,"end_character":56},"updated":"2023-08-10 04:11:51.000000000","message":"e.msg","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                exception.InvalidShare) as e:"},{"line_number":143,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":144,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":145,"context_line":"            raise exc.HTTPConflict(explanation\u003de.message)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        return self._view_builder.detail(req, backup)"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"23a8b248_8cb66246","line":145,"range":{"start_line":145,"start_character":49,"end_line":145,"end_character":56},"in_reply_to":"072fe443_6b0aa4aa","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a4f6dc896ead5d748c394ac9efa9a5c8c049967e","unresolved":true,"context_lines":[{"line_number":161,"context_line":"        try:"},{"line_number":162,"context_line":"            self.share_api.delete_share_backup(context, backup)"},{"line_number":163,"context_line":"        except exception.InvalidBackup as e:"},{"line_number":164,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"ecb998f5_c36e2929","line":164,"range":{"start_line":164,"start_character":51,"end_line":164,"end_character":58},"updated":"2023-08-10 04:11:51.000000000","message":"e.msg","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        try:"},{"line_number":162,"context_line":"            self.share_api.delete_share_backup(context, backup)"},{"line_number":163,"context_line":"        except exception.InvalidBackup as e:"},{"line_number":164,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"aca38337_0c915efa","line":164,"range":{"start_line":164,"start_character":51,"end_line":164,"end_character":58},"in_reply_to":"ecb998f5_c36e2929","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a4f6dc896ead5d748c394ac9efa9a5c8c049967e","unresolved":true,"context_lines":[{"line_number":183,"context_line":"            restored \u003d self.share_api.restore_share_backup(context, backup)"},{"line_number":184,"context_line":"        except (exception.InvalidShare,"},{"line_number":185,"context_line":"                exception.InvalidBackup) as e:"},{"line_number":186,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        retval \u003d self._view_builder.restore_summary(req, restored)"},{"line_number":189,"context_line":"        return retval"}],"source_content_type":"text/x-python","patch_set":59,"id":"8268c807_b0b5f899","line":186,"range":{"start_line":186,"start_character":51,"end_line":186,"end_character":58},"updated":"2023-08-10 04:11:51.000000000","message":"e.msg","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            restored \u003d self.share_api.restore_share_backup(context, backup)"},{"line_number":184,"context_line":"        except (exception.InvalidShare,"},{"line_number":185,"context_line":"                exception.InvalidBackup) as e:"},{"line_number":186,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.message)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        retval \u003d self._view_builder.restore_summary(req, restored)"},{"line_number":189,"context_line":"        return retval"}],"source_content_type":"text/x-python","patch_set":59,"id":"62ecfa54_f6df3d6f","line":186,"range":{"start_line":186,"start_character":51,"end_line":186,"end_character":58},"in_reply_to":"8268c807_b0b5f899","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"}],"manila/api/views/quota_class_sets.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7240ff622673bc9419471533e919cb81e01404aa","unresolved":true,"context_lines":[{"line_number":23,"context_line":"        \"add_share_group_quotas\","},{"line_number":24,"context_line":"        \"add_share_replica_quotas\","},{"line_number":25,"context_line":"        \"add_per_share_gigabytes_quotas\","},{"line_number":26,"context_line":"        \"add_per_share_backup_quotas\","},{"line_number":27,"context_line":"    ]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def detail_list(self, request, quota_class_set, quota_class\u003dNone):"}],"source_content_type":"text/x-python","patch_set":26,"id":"ef204610_cdaaa653","line":26,"range":{"start_line":26,"start_character":9,"end_line":26,"end_character":36},"updated":"2022-05-10 11:09:51.000000000","message":"nit:\nadd_share_backup_quotas.\n\nbecause backup quota is for project, but not per share.","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"65c8a1ca22008e22f9a5df8c0b5cf3b862291236","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        \"add_share_group_quotas\","},{"line_number":24,"context_line":"        \"add_share_replica_quotas\","},{"line_number":25,"context_line":"        \"add_per_share_gigabytes_quotas\","},{"line_number":26,"context_line":"        \"add_per_share_backup_quotas\","},{"line_number":27,"context_line":"    ]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def detail_list(self, request, quota_class_set, quota_class\u003dNone):"}],"source_content_type":"text/x-python","patch_set":26,"id":"e26a438d_577ceba3","line":26,"range":{"start_line":26,"start_character":9,"end_line":26,"end_character":36},"in_reply_to":"ef204610_cdaaa653","updated":"2022-05-31 05:34:40.000000000","message":"Done","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7240ff622673bc9419471533e919cb81e01404aa","unresolved":true,"context_lines":[{"line_number":63,"context_line":"            \u0027per_share_gigabytes\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @common.ViewBuilder.versioned_method(\"2.72\")"},{"line_number":66,"context_line":"    def add_per_share_backup_quotas(self, context, view, quota_class_set):"},{"line_number":67,"context_line":"        view[\u0027backups\u0027] \u003d quota_class_set.get(\u0027backups\u0027)"},{"line_number":68,"context_line":"        view[\u0027backup_gigabytes\u0027] \u003d quota_class_set.get(\u0027backup_gigabytes\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"6d9bd864_e692790e","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":35},"updated":"2022-05-10 11:09:51.000000000","message":"add_share_backup_quotas","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"65c8a1ca22008e22f9a5df8c0b5cf3b862291236","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            \u0027per_share_gigabytes\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @common.ViewBuilder.versioned_method(\"2.72\")"},{"line_number":66,"context_line":"    def add_per_share_backup_quotas(self, context, view, quota_class_set):"},{"line_number":67,"context_line":"        view[\u0027backups\u0027] \u003d quota_class_set.get(\u0027backups\u0027)"},{"line_number":68,"context_line":"        view[\u0027backup_gigabytes\u0027] \u003d quota_class_set.get(\u0027backup_gigabytes\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"0967f14e_59a77a90","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":35},"in_reply_to":"6d9bd864_e692790e","updated":"2022-05-31 05:34:40.000000000","message":"Done","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"}],"manila/api/views/quota_sets.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7240ff622673bc9419471533e919cb81e01404aa","unresolved":true,"context_lines":[{"line_number":23,"context_line":"        \"add_share_group_quotas\","},{"line_number":24,"context_line":"        \"add_share_replica_quotas\","},{"line_number":25,"context_line":"        \"add_per_share_gigabytes_quotas\","},{"line_number":26,"context_line":"        \"add_per_share_backup_quotas\","},{"line_number":27,"context_line":"    ]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def detail_list(self, request, quota_set, project_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":26,"id":"6e3e6bf4_893cb177","line":26,"range":{"start_line":26,"start_character":9,"end_line":26,"end_character":36},"updated":"2022-05-10 11:09:51.000000000","message":"nit: add_share_backup_quotas","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"65c8a1ca22008e22f9a5df8c0b5cf3b862291236","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        \"add_share_group_quotas\","},{"line_number":24,"context_line":"        \"add_share_replica_quotas\","},{"line_number":25,"context_line":"        \"add_per_share_gigabytes_quotas\","},{"line_number":26,"context_line":"        \"add_per_share_backup_quotas\","},{"line_number":27,"context_line":"    ]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def detail_list(self, request, quota_set, project_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":26,"id":"4c083cdd_cfcb7c9b","line":26,"range":{"start_line":26,"start_character":9,"end_line":26,"end_character":36},"in_reply_to":"6e3e6bf4_893cb177","updated":"2022-05-31 05:34:40.000000000","message":"Done","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7240ff622673bc9419471533e919cb81e01404aa","unresolved":true,"context_lines":[{"line_number":69,"context_line":"        view[\u0027per_share_gigabytes\u0027] \u003d quota_set.get(\u0027per_share_gigabytes\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @common.ViewBuilder.versioned_method(\"2.72\")"},{"line_number":72,"context_line":"    def add_per_share_backup_quotas(self, context, view, quota_set):"},{"line_number":73,"context_line":"        view[\u0027backups\u0027] \u003d quota_set.get(\u0027backups\u0027)"},{"line_number":74,"context_line":"        view[\u0027backup_gigabytes\u0027] \u003d quota_set.get(\u0027backup_gigabytes\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"2787caba_90c137be","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":35},"updated":"2022-05-10 11:09:51.000000000","message":"add_share_backup_quotas","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"65c8a1ca22008e22f9a5df8c0b5cf3b862291236","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        view[\u0027per_share_gigabytes\u0027] \u003d quota_set.get(\u0027per_share_gigabytes\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @common.ViewBuilder.versioned_method(\"2.72\")"},{"line_number":72,"context_line":"    def add_per_share_backup_quotas(self, context, view, quota_set):"},{"line_number":73,"context_line":"        view[\u0027backups\u0027] \u003d quota_set.get(\u0027backups\u0027)"},{"line_number":74,"context_line":"        view[\u0027backup_gigabytes\u0027] \u003d quota_set.get(\u0027backup_gigabytes\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"5d97c7bf_c0b59c74","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":35},"in_reply_to":"2787caba_90c137be","updated":"2022-05-31 05:34:40.000000000","message":"Done","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"}],"manila/api/views/share_backups.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":54,"id":"66cb9566_718e7337","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":22},"updated":"2023-07-12 23:45:32.000000000","message":"This line is used only when also adding a company copyright; since you\u0027re not doing that, please leave just the apache v2 license as below","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":54,"id":"52f4b72f_f618e162","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":22},"in_reply_to":"66cb9566_718e7337","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":57,"context_line":"            \u0027share_id\u0027: backup.get(\u0027share_id\u0027),"},{"line_number":58,"context_line":"            \u0027availability_zone\u0027: backup.get(\u0027availability_zone\u0027),"},{"line_number":59,"context_line":"            \u0027created_at\u0027: backup.get(\u0027created_at\u0027),"},{"line_number":60,"context_line":"            \u0027updated_at\u0027: backup.get(\u0027updated_at\u0027),"},{"line_number":61,"context_line":"            \u0027host\u0027: backup.get(\u0027host\u0027),"},{"line_number":62,"context_line":"            \u0027topic\u0027: backup.get(\u0027topic\u0027),"},{"line_number":63,"context_line":"            \u0027backup_state\u0027: backup.get(\u0027status\u0027),"},{"line_number":64,"context_line":"            \u0027name\u0027: backup.get(\u0027display_name\u0027),"},{"line_number":65,"context_line":"            \u0027description\u0027: backup.get(\u0027display_description\u0027),"}],"source_content_type":"text/x-python","patch_set":54,"id":"82261f20_558d35fb","line":62,"range":{"start_line":60,"start_character":51,"end_line":62,"end_character":40},"updated":"2023-07-12 23:45:32.000000000","message":"this information isn\u0027t appropriate to non-admin users","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            \u0027share_id\u0027: backup.get(\u0027share_id\u0027),"},{"line_number":58,"context_line":"            \u0027availability_zone\u0027: backup.get(\u0027availability_zone\u0027),"},{"line_number":59,"context_line":"            \u0027created_at\u0027: backup.get(\u0027created_at\u0027),"},{"line_number":60,"context_line":"            \u0027updated_at\u0027: backup.get(\u0027updated_at\u0027),"},{"line_number":61,"context_line":"            \u0027host\u0027: backup.get(\u0027host\u0027),"},{"line_number":62,"context_line":"            \u0027topic\u0027: backup.get(\u0027topic\u0027),"},{"line_number":63,"context_line":"            \u0027backup_state\u0027: backup.get(\u0027status\u0027),"},{"line_number":64,"context_line":"            \u0027name\u0027: backup.get(\u0027display_name\u0027),"},{"line_number":65,"context_line":"            \u0027description\u0027: backup.get(\u0027display_description\u0027),"}],"source_content_type":"text/x-python","patch_set":54,"id":"9a74ac01_6512a0cd","line":62,"range":{"start_line":60,"start_character":51,"end_line":62,"end_character":40},"in_reply_to":"82261f20_558d35fb","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"bdb52d3550693d7ac5c164f4a5a57220efbcf732","unresolved":true,"context_lines":[{"line_number":53,"context_line":"    def detail(self, request, backup):"},{"line_number":54,"context_line":"        \"\"\"Detailed view of a single backup.\"\"\""},{"line_number":55,"context_line":"        context \u003d request.environ[\u0027manila.context\u0027]"},{"line_number":56,"context_line":"        backup_dict \u003d {"},{"line_number":57,"context_line":"            \u0027id\u0027: backup.get(\u0027id\u0027),"},{"line_number":58,"context_line":"            \u0027size\u0027: backup.get(\u0027size\u0027),"},{"line_number":59,"context_line":"            \u0027share_id\u0027: backup.get(\u0027share_id\u0027),"}],"source_content_type":"text/x-python","patch_set":60,"id":"de6765ec_5a8d273c","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":19},"updated":"2023-08-14 02:15:25.000000000","message":"We better show the backup progress, too\n\n    \u0027progress\u0027: backup.get(\u0027progress\u0027),","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"68a53753936e82d6ca5a48c230f4488baf0a2854","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    def detail(self, request, backup):"},{"line_number":54,"context_line":"        \"\"\"Detailed view of a single backup.\"\"\""},{"line_number":55,"context_line":"        context \u003d request.environ[\u0027manila.context\u0027]"},{"line_number":56,"context_line":"        backup_dict \u003d {"},{"line_number":57,"context_line":"            \u0027id\u0027: backup.get(\u0027id\u0027),"},{"line_number":58,"context_line":"            \u0027size\u0027: backup.get(\u0027size\u0027),"},{"line_number":59,"context_line":"            \u0027share_id\u0027: backup.get(\u0027share_id\u0027),"}],"source_content_type":"text/x-python","patch_set":60,"id":"72c1167d_7a1b8554","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":19},"in_reply_to":"de6765ec_5a8d273c","updated":"2024-02-06 14:09:24.000000000","message":"Done","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"}],"manila/common/constants.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"480f0eecf87d0bc6f1801962cbe108d4b87d9b3e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    STATUS_CREATING, STATUS_DELETING,"},{"line_number":83,"context_line":"    STATUS_MANAGING, STATUS_UNMANAGING,"},{"line_number":84,"context_line":"    STATUS_EXTENDING, STATUS_SHRINKING,"},{"line_number":85,"context_line":"    STATUS_MIGRATING, STATUS_MIGRATING_TO,"},{"line_number":86,"context_line":")"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"UPDATING_RULES_STATUSES \u003d ("}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_be29519d","line":85,"range":{"start_line":85,"start_character":4,"end_line":85,"end_character":42},"updated":"2016-08-11 19:02:27.000000000","message":"you should update this list with your transitional statuses","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a9eda54ce1d3de4ab5a1fd260bc29dcc131b8377","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    STATUS_CREATING, STATUS_DELETING,"},{"line_number":83,"context_line":"    STATUS_MANAGING, STATUS_UNMANAGING,"},{"line_number":84,"context_line":"    STATUS_EXTENDING, STATUS_SHRINKING,"},{"line_number":85,"context_line":"    STATUS_MIGRATING, STATUS_MIGRATING_TO,"},{"line_number":86,"context_line":")"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"UPDATING_RULES_STATUSES \u003d ("}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_700cee42","line":85,"range":{"start_line":85,"start_character":4,"end_line":85,"end_character":42},"in_reply_to":"9ad45d7e_be29519d","updated":"2016-08-15 09:11:39.000000000","message":"Done","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"}],"manila/data/backup_driver.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\"Base class for all backup drivers. \"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class BackupDriver(object):"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_faf6518d","line":16,"range":{"start_line":16,"start_character":37,"end_line":16,"end_character":38},"updated":"2016-08-01 16:08:40.000000000","message":"added space?","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\"Base class for all backup drivers. \"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class BackupDriver(object):"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_ae72a3ae","line":16,"range":{"start_line":16,"start_character":37,"end_line":16,"end_character":38},"in_reply_to":"bacf61ea_faf6518d","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        return"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def get_backup_info(self):"},{"line_number":41,"context_line":"        \"\"\"Get a backup information.\"\"\""},{"line_number":42,"context_line":"        return"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_7a66e151","line":41,"range":{"start_line":41,"start_character":11,"end_line":41,"end_character":35},"updated":"2016-08-01 16:08:40.000000000","message":"\"a backup\" gives the idea that it should be receiving a parameter. I suggest changing to \"Get backup capabilities information of driver.\" or something similar","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        return"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def get_backup_info(self):"},{"line_number":41,"context_line":"        \"\"\"Get a backup information.\"\"\""},{"line_number":42,"context_line":"        return"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_ae9903d3","line":41,"range":{"start_line":41,"start_character":11,"end_line":41,"end_character":35},"in_reply_to":"bacf61ea_7a66e151","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        :param backup: backup id of the backup to verify"},{"line_number":53,"context_line":"        :raises: InvalidBackup, NotImplementedError"},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_379bd019","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":14},"updated":"2016-08-18 08:42:39.000000000","message":"as the comment says, this method might raise NotImplementedError,\nso should here default be raise NotImplementedError()?","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        :param backup: backup id of the backup to verify"},{"line_number":53,"context_line":"        :raises: InvalidBackup, NotImplementedError"},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_d6c79762","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":14},"in_reply_to":"3ac371cc_379bd019","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":54,"id":"652722da_28d73330","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":22},"updated":"2023-07-12 23:45:32.000000000","message":"not part of the apache license; please remove","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":54,"id":"c70488d2_f5e26005","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":22},"in_reply_to":"652722da_28d73330","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":22,"context_line":"        # This flag indicates if backup driver supports force"},{"line_number":23,"context_line":"        # deletion. So it should be set to True if the driver that inherits"},{"line_number":24,"context_line":"        # from BackupDriver supports the force deletion function."},{"line_number":25,"context_line":"        self.support_force_delete \u003d False"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        # This flag indicates if backup driver implement backup, restore and"},{"line_number":28,"context_line":"        # delete operation by its own or uses data manager."}],"source_content_type":"text/x-python","patch_set":54,"id":"921dde5a_4f96e766","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":41},"updated":"2023-07-12 23:45:32.000000000","message":"this isn\u0027t being used anywhere..","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        # This flag indicates if backup driver supports force"},{"line_number":23,"context_line":"        # deletion. So it should be set to True if the driver that inherits"},{"line_number":24,"context_line":"        # from BackupDriver supports the force deletion function."},{"line_number":25,"context_line":"        self.support_force_delete \u003d False"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        # This flag indicates if backup driver implement backup, restore and"},{"line_number":28,"context_line":"        # delete operation by its own or uses data manager."}],"source_content_type":"text/x-python","patch_set":54,"id":"01be1c2b_ce7a0635","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":41},"in_reply_to":"921dde5a_4f96e766","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"}],"manila/data/driver.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\"Base class for all backup drivers.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class BackupDriver(object):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def __init__(self):"},{"line_number":22,"context_line":"        super(BackupDriver, self).__init__()"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_a7a29d98","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":27},"updated":"2016-07-22 21:54:24.000000000","message":"the structure looks like this is a driver for the Data Service itself. I would rename this to backup_driver.py or have manila/data/backup/driver.py","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\"Base class for all backup drivers.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class BackupDriver(object):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def __init__(self):"},{"line_number":22,"context_line":"        super(BackupDriver, self).__init__()"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_7c438842","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":27},"in_reply_to":"dada55a8_a7a29d98","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"}],"manila/data/drivers/nfs.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":23,"context_line":"nfsbackup_service_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027backup_mount_path_template\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027mount -vt %(proto)s %(export)s %(path)s\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027Base dir containing mount for NFS share.\u0027),"},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027NFS share in hostname:path, ipv4addr:path, \u0027"},{"line_number":29,"context_line":"                    \u0027or \"[ipv6addr]:path\" format.\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_e7f13597","line":26,"range":{"start_line":26,"start_character":21,"end_line":26,"end_character":60},"updated":"2016-07-22 21:54:24.000000000","message":"I believe this help text does not correspond to the config option above.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":23,"context_line":"nfsbackup_service_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027backup_mount_path_template\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027mount -vt %(proto)s %(export)s %(path)s\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027Base dir containing mount for NFS share.\u0027),"},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027NFS share in hostname:path, ipv4addr:path, \u0027"},{"line_number":29,"context_line":"                    \u0027or \"[ipv6addr]:path\" format.\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_3c1e305f","line":26,"range":{"start_line":26,"start_character":21,"end_line":26,"end_character":60},"in_reply_to":"dada55a8_e7f13597","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":23,"context_line":"nfsbackup_service_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027backup_mount_path_template\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027mount -vt %(proto)s %(export)s %(path)s\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027The template for mounting shares for NFS share.\u0027),"},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027NFS share in hostname:path, ipv4addr:path, \u0027"},{"line_number":29,"context_line":"                    \u0027or \"[ipv6addr]:path\" format.\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_3a4909b8","line":26,"range":{"start_line":26,"start_character":47,"end_line":26,"end_character":57},"updated":"2016-08-01 16:08:40.000000000","message":"remove","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"nfsbackup_service_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027backup_mount_path_template\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027mount -vt %(proto)s %(export)s %(path)s\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027The template for mounting shares for NFS share.\u0027),"},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027NFS share in hostname:path, ipv4addr:path, \u0027"},{"line_number":29,"context_line":"                    \u0027or \"[ipv6addr]:path\" format.\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_8e851f5b","line":26,"range":{"start_line":26,"start_character":47,"end_line":26,"end_character":57},"in_reply_to":"bacf61ea_3a4909b8","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"480f0eecf87d0bc6f1801962cbe108d4b87d9b3e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"nfsbackup_service_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027backup_mount_path_template\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027mount -vt %(proto)s %(export)s %(path)s\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027The template for mounting NFS share.\u0027),"},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027NFS share in hostname:path, ipv4addr:path, \u0027"},{"line_number":29,"context_line":"                    \u0027or \"[ipv6addr]:path\" format.\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_7e3879d3","line":26,"range":{"start_line":26,"start_character":51,"end_line":26,"end_character":56},"updated":"2016-08-11 19:02:27.000000000","message":"shares","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a9eda54ce1d3de4ab5a1fd260bc29dcc131b8377","unresolved":false,"context_lines":[{"line_number":23,"context_line":"nfsbackup_service_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027backup_mount_path_template\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027mount -vt %(proto)s %(export)s %(path)s\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027The template for mounting NFS share.\u0027),"},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027NFS share in hostname:path, ipv4addr:path, \u0027"},{"line_number":29,"context_line":"                    \u0027or \"[ipv6addr]:path\" format.\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_705eae46","line":26,"range":{"start_line":26,"start_character":51,"end_line":26,"end_character":56},"in_reply_to":"9ad45d7e_7e3879d3","updated":"2016-08-15 09:11:39.000000000","message":"Done","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"nfsbackup_service_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027backup_mount_path_template\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027mount -vt %(proto)s %(export)s %(path)s\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027The template for mounting NFS shares.\u0027),"},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_227a7088","line":24,"range":{"start_line":24,"start_character":16,"end_line":24,"end_character":42},"updated":"2016-08-18 08:42:39.000000000","message":"backup_mount_template would be better I think.\nYour call.","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"nfsbackup_service_opts \u003d ["},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027backup_mount_path_template\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027mount -vt %(proto)s %(export)s %(path)s\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027The template for mounting NFS shares.\u0027),"},{"line_number":27,"context_line":"    cfg.StrOpt(\u0027backup_share\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_d1395ada","line":24,"range":{"start_line":24,"start_character":16,"end_line":24,"end_character":42},"in_reply_to":"3ac371cc_227a7088","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def __init__(self):"},{"line_number":43,"context_line":"        self.backup_share \u003d CONF.backup_share"},{"line_number":44,"context_line":"        self.backup_mount_path_template \u003d CONF.backup_mount_path_template"},{"line_number":45,"context_line":"        self.mount_options \u003d CONF.backup_mount_options or {}"},{"line_number":46,"context_line":"        super(NFSBackupDriver, self).__init__()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_backup_info(self, backup, backup_metadata\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_c2239c54","line":45,"range":{"start_line":45,"start_character":58,"end_line":45,"end_character":60},"updated":"2016-08-18 08:42:39.000000000","message":"the backup_mount_options conf type is string, why here default set a {} while backup_mount_options is not set?","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def __init__(self):"},{"line_number":43,"context_line":"        self.backup_share \u003d CONF.backup_share"},{"line_number":44,"context_line":"        self.backup_mount_path_template \u003d CONF.backup_mount_path_template"},{"line_number":45,"context_line":"        self.mount_options \u003d CONF.backup_mount_options or {}"},{"line_number":46,"context_line":"        super(NFSBackupDriver, self).__init__()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_backup_info(self, backup, backup_metadata\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_2e4e8f96","line":45,"range":{"start_line":45,"start_character":58,"end_line":45,"end_character":60},"in_reply_to":"3ac371cc_c2239c54","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        super(NFSBackupDriver, self).__init__()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_backup_info(self, backup, backup_metadata\u003dFalse):"},{"line_number":49,"context_line":"        \"\"\"Start a backup of a specified share.\"\"\""},{"line_number":50,"context_line":"        mount_command \u003d (self.backup_mount_path_template %"},{"line_number":51,"context_line":"                         {\u0027proto\u0027: self.mount_options,"},{"line_number":52,"context_line":"                          \u0027export\u0027: self.backup_share,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_42bdecd6","line":49,"updated":"2016-08-18 08:42:39.000000000","message":"get backup info","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        super(NFSBackupDriver, self).__init__()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_backup_info(self, backup, backup_metadata\u003dFalse):"},{"line_number":49,"context_line":"        \"\"\"Start a backup of a specified share.\"\"\""},{"line_number":50,"context_line":"        mount_command \u003d (self.backup_mount_path_template %"},{"line_number":51,"context_line":"                         {\u0027proto\u0027: self.mount_options,"},{"line_number":52,"context_line":"                          \u0027export\u0027: self.backup_share,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_aeac3f36","line":49,"in_reply_to":"3ac371cc_42bdecd6","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ad11949fe2bb7cc838aa871a50898dbbccd3d209","unresolved":true,"context_lines":[{"line_number":58,"context_line":"        mount_command \u003d ("},{"line_number":59,"context_line":"            self.backup_mount_template % {"},{"line_number":60,"context_line":"                \u0027proto\u0027: self.backup_mount_proto,"},{"line_number":61,"context_line":"                \u0027options\u0027: self.backup_mount_options,"},{"line_number":62,"context_line":"                \u0027export\u0027: self.backup_share,"},{"line_number":63,"context_line":"                \u0027path\u0027: \u0027%(path)s\u0027,"},{"line_number":64,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":39,"id":"9dc3d880_4857cf33","line":61,"range":{"start_line":61,"start_character":27,"end_line":61,"end_character":52},"updated":"2023-01-03 08:27:02.000000000","message":"i think here should be \u0027%(options)s\u0027\nbecause in manila/data/helper.py line 277\nmount_command \u003d mount_template % {\u0027path\u0027: path,\n                                  \u0027options\u0027: proto_options}                               \nhere  define options again.","commit_id":"54e11ec062ead140da5b92617c5a05d018aee3e5"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"430cc538d090f6edf5dcb63df3ac2f536e7f3f31","unresolved":true,"context_lines":[{"line_number":58,"context_line":"        mount_command \u003d ("},{"line_number":59,"context_line":"            self.backup_mount_template % {"},{"line_number":60,"context_line":"                \u0027proto\u0027: self.backup_mount_proto,"},{"line_number":61,"context_line":"                \u0027options\u0027: self.backup_mount_options,"},{"line_number":62,"context_line":"                \u0027export\u0027: self.backup_share,"},{"line_number":63,"context_line":"                \u0027path\u0027: \u0027%(path)s\u0027,"},{"line_number":64,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":39,"id":"aa55bf5f_6731931c","line":61,"range":{"start_line":61,"start_character":27,"end_line":61,"end_character":52},"in_reply_to":"9dc3d880_4857cf33","updated":"2023-01-03 17:37:00.000000000","message":"No backup_mount options are used to mount backup and should not collide with backup_share_mount_template which is used to mount share. \nSo backup_share_mount_template will take options in mentioned code, while backup_mount_template will have options embedded (just path will be replaced). I will add else case for this in next update of PR.","commit_id":"54e11ec062ead140da5b92617c5a05d018aee3e5"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"21e98f4255e4e9cc3ac659e8cc742a830566394e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        mount_command \u003d ("},{"line_number":59,"context_line":"            self.backup_mount_template % {"},{"line_number":60,"context_line":"                \u0027proto\u0027: self.backup_mount_proto,"},{"line_number":61,"context_line":"                \u0027options\u0027: self.backup_mount_options,"},{"line_number":62,"context_line":"                \u0027export\u0027: self.backup_share,"},{"line_number":63,"context_line":"                \u0027path\u0027: \u0027%(path)s\u0027,"},{"line_number":64,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":39,"id":"c063738d_5290ce89","line":61,"range":{"start_line":61,"start_character":27,"end_line":61,"end_character":52},"in_reply_to":"aa55bf5f_6731931c","updated":"2023-05-30 04:28:11.000000000","message":"Done","commit_id":"54e11ec062ead140da5b92617c5a05d018aee3e5"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"21e98f4255e4e9cc3ac659e8cc742a830566394e","unresolved":true,"context_lines":[{"line_number":65,"context_line":"                \u0027path\u0027: \u0027%(path)s\u0027,"},{"line_number":66,"context_line":"            }"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":"        mount_template_with_backup_folder \u003d ("},{"line_number":69,"context_line":"            self.backup_mount_template % {"},{"line_number":70,"context_line":"                \u0027proto\u0027: self.backup_mount_proto,"},{"line_number":71,"context_line":"                \u0027options\u0027: self.backup_mount_options,"}],"source_content_type":"text/x-python","patch_set":40,"id":"6fd6da84_999e0b4e","line":68,"range":{"start_line":68,"start_character":7,"end_line":68,"end_character":41},"updated":"2023-05-30 04:28:11.000000000","message":"delete it. we no need mount_template_with_backup_folder, mount_template is ok.","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4f58feddc260f07f57df0f04bb1d4113cd93599","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                \u0027path\u0027: \u0027%(path)s\u0027,"},{"line_number":66,"context_line":"            }"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":"        mount_template_with_backup_folder \u003d ("},{"line_number":69,"context_line":"            self.backup_mount_template % {"},{"line_number":70,"context_line":"                \u0027proto\u0027: self.backup_mount_proto,"},{"line_number":71,"context_line":"                \u0027options\u0027: self.backup_mount_options,"}],"source_content_type":"text/x-python","patch_set":40,"id":"803bed9f_66a48f20","line":68,"range":{"start_line":68,"start_character":7,"end_line":68,"end_character":41},"in_reply_to":"6fd6da84_999e0b4e","updated":"2023-05-31 06:06:08.000000000","message":"Done","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"21e98f4255e4e9cc3ac659e8cc742a830566394e","unresolved":true,"context_lines":[{"line_number":69,"context_line":"            self.backup_mount_template % {"},{"line_number":70,"context_line":"                \u0027proto\u0027: self.backup_mount_proto,"},{"line_number":71,"context_line":"                \u0027options\u0027: self.backup_mount_options,"},{"line_number":72,"context_line":"                \u0027export\u0027: os.path.join("},{"line_number":73,"context_line":"                    self.backup_mount_export, backup[\u0027id\u0027]),"},{"line_number":74,"context_line":"                \u0027path\u0027: \u0027%(path)s\u0027,"},{"line_number":75,"context_line":"            }"},{"line_number":76,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":40,"id":"a3279bbf_c892946a","line":73,"range":{"start_line":72,"start_character":16,"end_line":73,"end_character":60},"updated":"2023-05-30 04:28:11.000000000","message":"Whether a directory can be export is determined by the backend NFS storage. \nThe directories that can be exported are configured on the back-end NFS storage.\nFor example, we configured dir1 to be exportable, but dir1/dir2 is not.\nSo, we can\u0027t append backup[\u0027id\u0027] here to modify an already identified export.\nwe no need mount_template_with_backup_folder.","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4f58feddc260f07f57df0f04bb1d4113cd93599","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            self.backup_mount_template % {"},{"line_number":70,"context_line":"                \u0027proto\u0027: self.backup_mount_proto,"},{"line_number":71,"context_line":"                \u0027options\u0027: self.backup_mount_options,"},{"line_number":72,"context_line":"                \u0027export\u0027: os.path.join("},{"line_number":73,"context_line":"                    self.backup_mount_export, backup[\u0027id\u0027]),"},{"line_number":74,"context_line":"                \u0027path\u0027: \u0027%(path)s\u0027,"},{"line_number":75,"context_line":"            }"},{"line_number":76,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":40,"id":"8ac1cc2f_b23bd2d1","line":73,"range":{"start_line":72,"start_character":16,"end_line":73,"end_character":60},"in_reply_to":"a3279bbf_c892946a","updated":"2023-05-31 06:06:08.000000000","message":"Done","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"21e98f4255e4e9cc3ac659e8cc742a830566394e","unresolved":true,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        backup_info \u003d {"},{"line_number":80,"context_line":"            \u0027mount\u0027: mount_template,"},{"line_number":81,"context_line":"            \u0027mount_with_backup_folder\u0027: mount_template_with_backup_folder,"},{"line_number":82,"context_line":"            \u0027unmount\u0027: unmount_template,"},{"line_number":83,"context_line":"        }"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"886a06e6_9aaafb06","line":81,"range":{"start_line":81,"start_character":12,"end_line":81,"end_character":74},"updated":"2023-05-30 04:28:11.000000000","message":"delete it","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4f58feddc260f07f57df0f04bb1d4113cd93599","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        backup_info \u003d {"},{"line_number":80,"context_line":"            \u0027mount\u0027: mount_template,"},{"line_number":81,"context_line":"            \u0027mount_with_backup_folder\u0027: mount_template_with_backup_folder,"},{"line_number":82,"context_line":"            \u0027unmount\u0027: unmount_template,"},{"line_number":83,"context_line":"        }"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"2fe05764_915a4b45","line":81,"range":{"start_line":81,"start_character":12,"end_line":81,"end_character":74},"in_reply_to":"886a06e6_9aaafb06","updated":"2023-05-31 06:06:08.000000000","message":"Done","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"24f69f2278301eec3ca9291ee712d4a631b9ad13","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":54,"id":"f7147c90_a49b9489","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":22},"updated":"2023-07-12 23:45:32.000000000","message":"remove","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"05d110a85af26b2721feb47549375c17cb21461d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":54,"id":"4aa0a6d4_5ea80a8b","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":22},"in_reply_to":"f7147c90_a49b9489","updated":"2023-07-13 11:04:42.000000000","message":"Done","commit_id":"e40eca7f3936beb0fd0c5cd049fca41eca326d7a"}],"manila/data/helper.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"21e98f4255e4e9cc3ac659e8cc742a830566394e","unresolved":true,"context_lines":[{"line_number":279,"context_line":"            os.makedirs(path)"},{"line_number":280,"context_line":"        self._check_dir_exists(path)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if backup:"},{"line_number":283,"context_line":"            # Mount backup export location"},{"line_number":284,"context_line":"            mount_command \u003d mount_template % {\u0027path\u0027: path}"},{"line_number":285,"context_line":"            utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"            # Then create backup folder"},{"line_number":288,"context_line":"            backup_folder \u003d os.path.join(path, backup_id)"},{"line_number":289,"context_line":"            if not os.path.exists(backup_folder):"},{"line_number":290,"context_line":"                os.makedirs(backup_folder)"},{"line_number":291,"context_line":"            self._check_dir_exists(backup_folder)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"            # Unmount backup export location"},{"line_number":294,"context_line":"            unmount_template \u003d mount_info.get(\u0027unmount\u0027)"},{"line_number":295,"context_line":"            unmount_command \u003d unmount_template % {\u0027path\u0027: path}"},{"line_number":296,"context_line":"            utils.execute(*(unmount_command.split()), run_as_root\u003dTrue)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        mount_template \u003d mount_info.get(\u0027mount_with_backup_folder\u0027,"},{"line_number":299,"context_line":"                                        mount_template)"},{"line_number":300,"context_line":"        mount_command \u003d mount_template % {\u0027path\u0027: path,"},{"line_number":301,"context_line":"                                          \u0027options\u0027: proto_options}"},{"line_number":302,"context_line":"        utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def unmount_share_instance_or_backup(self, unmount_info, mount_path):"},{"line_number":305,"context_line":"        mount_point \u003d unmount_info.get(\u0027mount_point\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"db2a4b60_2d1c901b","line":302,"range":{"start_line":282,"start_character":7,"end_line":302,"end_character":65},"updated":"2023-05-30 04:28:11.000000000","message":"This part of the code can be written like this:\n\nmount_command \u003d mount_template % {\u0027path\u0027: path,\n                                  \u0027options\u0027: proto_options}\nutils.execute(*(mount_command.split()), run_as_root\u003dTrue)\nif backup:\n    backup_folder \u003d os.path.join(path, backup_id)\n    if not os.path.exists(backup_folder):\n        os.makedirs(backup_folder)\n    self._check_dir_exists(backup_folder)","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4f58feddc260f07f57df0f04bb1d4113cd93599","unresolved":false,"context_lines":[{"line_number":279,"context_line":"            os.makedirs(path)"},{"line_number":280,"context_line":"        self._check_dir_exists(path)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if backup:"},{"line_number":283,"context_line":"            # Mount backup export location"},{"line_number":284,"context_line":"            mount_command \u003d mount_template % {\u0027path\u0027: path}"},{"line_number":285,"context_line":"            utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"            # Then create backup folder"},{"line_number":288,"context_line":"            backup_folder \u003d os.path.join(path, backup_id)"},{"line_number":289,"context_line":"            if not os.path.exists(backup_folder):"},{"line_number":290,"context_line":"                os.makedirs(backup_folder)"},{"line_number":291,"context_line":"            self._check_dir_exists(backup_folder)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"            # Unmount backup export location"},{"line_number":294,"context_line":"            unmount_template \u003d mount_info.get(\u0027unmount\u0027)"},{"line_number":295,"context_line":"            unmount_command \u003d unmount_template % {\u0027path\u0027: path}"},{"line_number":296,"context_line":"            utils.execute(*(unmount_command.split()), run_as_root\u003dTrue)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        mount_template \u003d mount_info.get(\u0027mount_with_backup_folder\u0027,"},{"line_number":299,"context_line":"                                        mount_template)"},{"line_number":300,"context_line":"        mount_command \u003d mount_template % {\u0027path\u0027: path,"},{"line_number":301,"context_line":"                                          \u0027options\u0027: proto_options}"},{"line_number":302,"context_line":"        utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def unmount_share_instance_or_backup(self, unmount_info, mount_path):"},{"line_number":305,"context_line":"        mount_point \u003d unmount_info.get(\u0027mount_point\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"c76413b1_3420e25c","line":302,"range":{"start_line":282,"start_character":7,"end_line":302,"end_character":65},"in_reply_to":"db2a4b60_2d1c901b","updated":"2023-05-31 06:06:08.000000000","message":"Done","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"6bc2253ff16b9cd7352b23856c716cd218eacd01","unresolved":true,"context_lines":[{"line_number":252,"context_line":"        mount_point \u003d mount_info.get(\u0027mount_point\u0027)"},{"line_number":253,"context_line":"        mount_template \u003d mount_info.get(\u0027mount\u0027)"},{"line_number":254,"context_line":"        share_instance_id \u003d mount_info.get(\u0027share_instance_id\u0027)"},{"line_number":255,"context_line":"        backup \u003d mount_info.get(\u0027backup\u0027, False)"},{"line_number":256,"context_line":"        backup_id \u003d mount_info.get(\u0027backup_id\u0027)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        if share_instance_id:"}],"source_content_type":"text/x-python","patch_set":44,"id":"7d633973_7ccf5dc2","line":255,"range":{"start_line":255,"start_character":42,"end_line":255,"end_character":47},"updated":"2023-06-06 15:32:27.000000000","message":"nit: it\u0027s not necessary to use `False` here, because method will return `None` if there is no value, and this is enough for the validation in the line 285","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"50b4c0d2ddc03a6c5434ee811ee997950765bb4f","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        mount_point \u003d mount_info.get(\u0027mount_point\u0027)"},{"line_number":253,"context_line":"        mount_template \u003d mount_info.get(\u0027mount\u0027)"},{"line_number":254,"context_line":"        share_instance_id \u003d mount_info.get(\u0027share_instance_id\u0027)"},{"line_number":255,"context_line":"        backup \u003d mount_info.get(\u0027backup\u0027, False)"},{"line_number":256,"context_line":"        backup_id \u003d mount_info.get(\u0027backup_id\u0027)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        if share_instance_id:"}],"source_content_type":"text/x-python","patch_set":44,"id":"8f7fc75a_a71bdfb2","line":255,"range":{"start_line":255,"start_character":42,"end_line":255,"end_character":47},"in_reply_to":"7d633973_7ccf5dc2","updated":"2023-06-07 13:00:50.000000000","message":"Done","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":true,"context_lines":[{"line_number":283,"context_line":"                                          \u0027options\u0027: proto_options}"},{"line_number":284,"context_line":"        utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":285,"context_line":"        if backup:"},{"line_number":286,"context_line":"            backup_folder \u003d os.path.join(path, backup_id)"},{"line_number":287,"context_line":"            if not os.path.exists(backup_folder):"},{"line_number":288,"context_line":"                os.makedirs(backup_folder)"},{"line_number":289,"context_line":"            self._check_dir_exists(backup_folder)"}],"source_content_type":"text/x-python","patch_set":45,"id":"30336864_1bc7fab8","line":286,"updated":"2023-06-08 02:14:52.000000000","message":"Here we can add a comment to help understand:\n\n    # we create new folder, which named with backup_id. To distinguish\n    # different backup data at mount points","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9238b6fa26c56034629c61f469aa550e6ff235a","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                                          \u0027options\u0027: proto_options}"},{"line_number":284,"context_line":"        utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":285,"context_line":"        if backup:"},{"line_number":286,"context_line":"            backup_folder \u003d os.path.join(path, backup_id)"},{"line_number":287,"context_line":"            if not os.path.exists(backup_folder):"},{"line_number":288,"context_line":"                os.makedirs(backup_folder)"},{"line_number":289,"context_line":"            self._check_dir_exists(backup_folder)"}],"source_content_type":"text/x-python","patch_set":45,"id":"d5ee2c56_1175fad0","line":286,"in_reply_to":"30336864_1bc7fab8","updated":"2023-06-09 07:55:49.000000000","message":"Done","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        if os.path.exists(path):"},{"line_number":249,"context_line":"            raise exception.Found(\"Folder %s was found.\" % path)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def mount_share_instance_or_backup(self, mount_info, mount_path):"},{"line_number":252,"context_line":"        mount_point \u003d mount_info.get(\u0027mount_point\u0027)"},{"line_number":253,"context_line":"        mount_template \u003d mount_info.get(\u0027mount\u0027)"},{"line_number":254,"context_line":"        share_instance_id \u003d mount_info.get(\u0027share_instance_id\u0027)"}],"source_content_type":"text/x-python","patch_set":51,"id":"8cf24bed_39d05b4f","line":251,"range":{"start_line":251,"start_character":4,"end_line":251,"end_character":69},"updated":"2023-07-06 13:59:43.000000000","message":"personal take on the changes for this method:\nThere isn\u0027t a lot of code being reused between the old mount_share_instance to the mount_share_instance_or_backup, so it makes the method more confusing to read with all of the changes and the whole lot of if/elses added to the method. It would look easier to read in separate methods (mount_share_instance, mount_share_backup). I think we would have fewer chances of breaking the other workflow as well.\nJust sharing my opinion, won\u0027t say this is a -1 reason for me, so if you want to keep it as is, and you\u0027ve ensured that both share migration and share backups workflows are working, that\u0027s fine.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        if os.path.exists(path):"},{"line_number":249,"context_line":"            raise exception.Found(\"Folder %s was found.\" % path)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def mount_share_instance_or_backup(self, mount_info, mount_path):"},{"line_number":252,"context_line":"        mount_point \u003d mount_info.get(\u0027mount_point\u0027)"},{"line_number":253,"context_line":"        mount_template \u003d mount_info.get(\u0027mount\u0027)"},{"line_number":254,"context_line":"        share_instance_id \u003d mount_info.get(\u0027share_instance_id\u0027)"}],"source_content_type":"text/x-python","patch_set":51,"id":"254527fa_b5cc121c","line":251,"range":{"start_line":251,"start_character":4,"end_line":251,"end_character":69},"in_reply_to":"8cf24bed_39d05b4f","updated":"2023-07-07 13:35:25.000000000","message":"yes.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"}],"manila/data/manager.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    cfg.StrOpt(\u0027backup_driver\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027manila.data.drivers.nfs.NFSBackupDriver\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027Driver to use for backups.\u0027,),"},{"line_number":48,"context_line":"    cfg.StrOpt("},{"line_number":49,"context_line":"        \u0027backup_tmp_location\u0027,"},{"line_number":50,"context_line":"        default\u003d\u0027/tmp/\u0027,"},{"line_number":51,"context_line":"        help\u003d\"Temporary path to create and mount shares during backup.\"),"},{"line_number":52,"context_line":"    cfg.StrOpt("},{"line_number":53,"context_line":"        \u0027backup_share_mount_template\u0027,"},{"line_number":54,"context_line":"        default\u003d\u0027mount -vt %(proto)s %(export)s %(path)s\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_a2fe0b36","line":51,"range":{"start_line":48,"start_character":2,"end_line":51,"end_character":73},"updated":"2016-07-22 21:54:24.000000000","message":"I did not find this being used anywhere","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    cfg.StrOpt(\u0027backup_driver\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027manila.data.drivers.nfs.NFSBackupDriver\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027Driver to use for backups.\u0027,),"},{"line_number":48,"context_line":"    cfg.StrOpt("},{"line_number":49,"context_line":"        \u0027backup_tmp_location\u0027,"},{"line_number":50,"context_line":"        default\u003d\u0027/tmp/\u0027,"},{"line_number":51,"context_line":"        help\u003d\"Temporary path to create and mount shares during backup.\"),"},{"line_number":52,"context_line":"    cfg.StrOpt("},{"line_number":53,"context_line":"        \u0027backup_share_mount_template\u0027,"},{"line_number":54,"context_line":"        default\u003d\u0027mount -vt %(proto)s %(export)s %(path)s\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_bc6060d0","line":51,"range":{"start_line":48,"start_character":2,"end_line":51,"end_character":73},"in_reply_to":"dada55a8_a2fe0b36","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                os.path.join(mount_path, dest_share_instance_id),"},{"line_number":126,"context_line":"                ignore_list)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            info_src \u003d {"},{"line_number":129,"context_line":"                \u0027share_id\u0027: share_ref[\u0027id\u0027],"},{"line_number":130,"context_line":"                \u0027share_instance_id\u0027: share_instance_id,"},{"line_number":131,"context_line":"                \u0027mount\u0027: migration_info_src[\u0027mount\u0027],"},{"line_number":132,"context_line":"                \u0027unmount\u0027: migration_info_src[\u0027unmount\u0027],"},{"line_number":133,"context_line":"                \u0027mount_point\u0027: os.path.join(mount_path, share_instance_id),"},{"line_number":134,"context_line":"            }"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"            info_dest \u003d {"},{"line_number":137,"context_line":"                \u0027share_id\u0027: None,"},{"line_number":138,"context_line":"                \u0027share_instance_id\u0027: dest_share_instance_id,"},{"line_number":139,"context_line":"                \u0027mount\u0027: migration_info_dest[\u0027mount\u0027],"},{"line_number":140,"context_line":"                \u0027unmount\u0027: migration_info_dest[\u0027unmount\u0027],"},{"line_number":141,"context_line":"                \u0027mount_point\u0027: os.path.join(mount_path,"},{"line_number":142,"context_line":"                                            dest_share_instance_id),"},{"line_number":143,"context_line":"            }"},{"line_number":144,"context_line":"            self._copy_share_data("},{"line_number":145,"context_line":"                context, copy, info_src, info_dest)"},{"line_number":146,"context_line":"        except exception.ShareDataCopyCancelled:"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_a7af3d2a","line":143,"range":{"start_line":128,"start_character":0,"end_line":143,"end_character":13},"updated":"2016-07-22 21:54:24.000000000","message":"this is a great idea :)","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                os.path.join(mount_path, dest_share_instance_id),"},{"line_number":126,"context_line":"                ignore_list)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"            info_src \u003d {"},{"line_number":129,"context_line":"                \u0027share_id\u0027: share_ref[\u0027id\u0027],"},{"line_number":130,"context_line":"                \u0027share_instance_id\u0027: share_instance_id,"},{"line_number":131,"context_line":"                \u0027mount\u0027: migration_info_src[\u0027mount\u0027],"},{"line_number":132,"context_line":"                \u0027unmount\u0027: migration_info_src[\u0027unmount\u0027],"},{"line_number":133,"context_line":"                \u0027mount_point\u0027: os.path.join(mount_path, share_instance_id),"},{"line_number":134,"context_line":"            }"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"            info_dest \u003d {"},{"line_number":137,"context_line":"                \u0027share_id\u0027: None,"},{"line_number":138,"context_line":"                \u0027share_instance_id\u0027: dest_share_instance_id,"},{"line_number":139,"context_line":"                \u0027mount\u0027: migration_info_dest[\u0027mount\u0027],"},{"line_number":140,"context_line":"                \u0027unmount\u0027: migration_info_dest[\u0027unmount\u0027],"},{"line_number":141,"context_line":"                \u0027mount_point\u0027: os.path.join(mount_path,"},{"line_number":142,"context_line":"                                            dest_share_instance_id),"},{"line_number":143,"context_line":"            }"},{"line_number":144,"context_line":"            self._copy_share_data("},{"line_number":145,"context_line":"                context, copy, info_src, info_dest)"},{"line_number":146,"context_line":"        except exception.ShareDataCopyCancelled:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e33874d5","line":143,"range":{"start_line":128,"start_character":0,"end_line":143,"end_character":13},"in_reply_to":"dada55a8_a7af3d2a","updated":"2016-08-01 11:46:16.000000000","message":"Thanks","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                \u0027mount_point\u0027: os.path.join(mount_path,"},{"line_number":142,"context_line":"                                            dest_share_instance_id),"},{"line_number":143,"context_line":"            }"},{"line_number":144,"context_line":"            self._copy_share_data("},{"line_number":145,"context_line":"                context, copy, info_src, info_dest)"},{"line_number":146,"context_line":"        except exception.ShareDataCopyCancelled:"},{"line_number":147,"context_line":"            share_rpcapi.migration_complete("},{"line_number":148,"context_line":"                context, share_ref, share_instance_id, dest_share_instance_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_67b5457d","line":145,"range":{"start_line":144,"start_character":0,"end_line":145,"end_character":51},"updated":"2016-07-22 21:54:24.000000000","message":"this fits one line","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                \u0027mount_point\u0027: os.path.join(mount_path,"},{"line_number":142,"context_line":"                                            dest_share_instance_id),"},{"line_number":143,"context_line":"            }"},{"line_number":144,"context_line":"            self._copy_share_data("},{"line_number":145,"context_line":"                context, copy, info_src, info_dest)"},{"line_number":146,"context_line":"        except exception.ShareDataCopyCancelled:"},{"line_number":147,"context_line":"            share_rpcapi.migration_complete("},{"line_number":148,"context_line":"                context, share_ref, share_instance_id, dest_share_instance_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_dca1d4f9","line":145,"range":{"start_line":144,"start_character":0,"end_line":145,"end_character":51},"in_reply_to":"dada55a8_67b5457d","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    def _copy_share_data(self, context, copy, info_src, info_dest):"},{"line_number":211,"context_line":"        copied \u003d False"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        if info_src.get(\u0027share_id\u0027):"},{"line_number":214,"context_line":"            share_id \u003d info_src[\u0027share_id\u0027]"},{"line_number":215,"context_line":"        elif info_dest.get(\u0027share_id\u0027):"},{"line_number":216,"context_line":"            share_id \u003d info_dest[\u0027share_id\u0027]"},{"line_number":217,"context_line":"        else:"},{"line_number":218,"context_line":"            msg \u003d _(\"Share data copy failed attempting to undefined share \")"},{"line_number":219,"context_line":"            LOG.exception(msg)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":222,"context_line":"        self.db.share_update("}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_473f61d6","line":219,"range":{"start_line":213,"start_character":8,"end_line":219,"end_character":30},"updated":"2016-07-22 21:54:24.000000000","message":"If this is a problem, why is it not raising any exception?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    def _copy_share_data(self, context, copy, info_src, info_dest):"},{"line_number":211,"context_line":"        copied \u003d False"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        if info_src.get(\u0027share_id\u0027):"},{"line_number":214,"context_line":"            share_id \u003d info_src[\u0027share_id\u0027]"},{"line_number":215,"context_line":"        elif info_dest.get(\u0027share_id\u0027):"},{"line_number":216,"context_line":"            share_id \u003d info_dest[\u0027share_id\u0027]"},{"line_number":217,"context_line":"        else:"},{"line_number":218,"context_line":"            msg \u003d _(\"Share data copy failed attempting to undefined share \")"},{"line_number":219,"context_line":"            LOG.exception(msg)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":222,"context_line":"        self.db.share_update("}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_a30b1c23","line":219,"range":{"start_line":213,"start_character":8,"end_line":219,"end_character":30},"in_reply_to":"dada55a8_473f61d6","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                     \u0027share: %(share_id)s.\u0027),"},{"line_number":367,"context_line":"                 {\u0027backup_id\u0027: backup_id, \u0027share_id\u0027: share_id})"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        expected_status \u003d constants.STATUS_BACKINGUP"},{"line_number":370,"context_line":"        actual_status \u003d share[\u0027status\u0027]"},{"line_number":371,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":372,"context_line":"            err \u003d _(\u0027Create backup aborted, expected share status \u0027"},{"line_number":373,"context_line":"                    \u0027%(expected_status)s but got %(actual_status)s.\u0027) % {"},{"line_number":374,"context_line":"                \u0027expected_status\u0027: expected_status,"},{"line_number":375,"context_line":"                \u0027actual_status\u0027: actual_status,"},{"line_number":376,"context_line":"            }"},{"line_number":377,"context_line":"            self.db.share_backup_update("},{"line_number":378,"context_line":"                context, backup_id,"},{"line_number":379,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR, \u0027fail_reason\u0027: err})"},{"line_number":380,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        expected_status \u003d constants.STATUS_CREATING"},{"line_number":383,"context_line":"        actual_status \u003d backup.status"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_e25123da","line":380,"range":{"start_line":369,"start_character":8,"end_line":380,"end_character":52},"updated":"2016-07-22 21:54:24.000000000","message":"if this code path follows from share/api.py, why are you double checking the status here? what is the scenario that requires this?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                     \u0027share: %(share_id)s.\u0027),"},{"line_number":367,"context_line":"                 {\u0027backup_id\u0027: backup_id, \u0027share_id\u0027: share_id})"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        expected_status \u003d constants.STATUS_BACKINGUP"},{"line_number":370,"context_line":"        actual_status \u003d share[\u0027status\u0027]"},{"line_number":371,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":372,"context_line":"            err \u003d _(\u0027Create backup aborted, expected share status \u0027"},{"line_number":373,"context_line":"                    \u0027%(expected_status)s but got %(actual_status)s.\u0027) % {"},{"line_number":374,"context_line":"                \u0027expected_status\u0027: expected_status,"},{"line_number":375,"context_line":"                \u0027actual_status\u0027: actual_status,"},{"line_number":376,"context_line":"            }"},{"line_number":377,"context_line":"            self.db.share_backup_update("},{"line_number":378,"context_line":"                context, backup_id,"},{"line_number":379,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR, \u0027fail_reason\u0027: err})"},{"line_number":380,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        expected_status \u003d constants.STATUS_CREATING"},{"line_number":383,"context_line":"        actual_status \u003d backup.status"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_3c58f089","line":380,"range":{"start_line":369,"start_character":8,"end_line":380,"end_character":52},"in_reply_to":"dada55a8_e25123da","updated":"2016-08-01 11:46:16.000000000","message":"Because the share_api and share_data are different service, share_api service could update share status again before share_data run create backup function.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR, \u0027fail_reason\u0027: err})"},{"line_number":380,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        expected_status \u003d constants.STATUS_CREATING"},{"line_number":383,"context_line":"        actual_status \u003d backup.status"},{"line_number":384,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":385,"context_line":"            err \u003d _(\u0027Create backup aborted, expected backup status \u0027"},{"line_number":386,"context_line":"                    \u0027%(expected_status)s but got %(actual_status)s.\u0027) % {"},{"line_number":387,"context_line":"                \u0027expected_status\u0027: expected_status,"},{"line_number":388,"context_line":"                \u0027actual_status\u0027: actual_status,"},{"line_number":389,"context_line":"            }"},{"line_number":390,"context_line":"            self.db.share_backup_update("},{"line_number":391,"context_line":"                context, backup_id,"},{"line_number":392,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR, \u0027fail_reason\u0027: err})"},{"line_number":393,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        try:"},{"line_number":396,"context_line":"            self._run_backup(context, backup, share)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_42a0efa5","line":393,"range":{"start_line":382,"start_character":8,"end_line":393,"end_character":53},"updated":"2016-07-22 21:54:24.000000000","message":"same as above","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR, \u0027fail_reason\u0027: err})"},{"line_number":380,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        expected_status \u003d constants.STATUS_CREATING"},{"line_number":383,"context_line":"        actual_status \u003d backup.status"},{"line_number":384,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":385,"context_line":"            err \u003d _(\u0027Create backup aborted, expected backup status \u0027"},{"line_number":386,"context_line":"                    \u0027%(expected_status)s but got %(actual_status)s.\u0027) % {"},{"line_number":387,"context_line":"                \u0027expected_status\u0027: expected_status,"},{"line_number":388,"context_line":"                \u0027actual_status\u0027: actual_status,"},{"line_number":389,"context_line":"            }"},{"line_number":390,"context_line":"            self.db.share_backup_update("},{"line_number":391,"context_line":"                context, backup_id,"},{"line_number":392,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR, \u0027fail_reason\u0027: err})"},{"line_number":393,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        try:"},{"line_number":396,"context_line":"            self._run_backup(context, backup, share)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_3c10f058","line":393,"range":{"start_line":382,"start_character":8,"end_line":393,"end_character":53},"in_reply_to":"dada55a8_42a0efa5","updated":"2016-08-01 11:46:16.000000000","message":"Because the share_api and share_data are different service, share_api service could update backup status again before share_data run create backup function.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            self._run_backup(context, backup, share)"},{"line_number":397,"context_line":"        except Exception as err:"},{"line_number":398,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":399,"context_line":"                self.db.share_update("},{"line_number":400,"context_line":"                    context, backup[\u0027share_id\u0027],"},{"line_number":401,"context_line":"                    {\u0027status\u0027: constants.STATUS_BACKINGUP_ERROR})"},{"line_number":402,"context_line":"                self.db.share_backup_update("},{"line_number":403,"context_line":"                    context, backup_id, {\u0027status\u0027: constants.STATUS_ERROR,"},{"line_number":404,"context_line":"                                         \u0027fail_reason\u0027: six.text_type(err)})"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_82af877c","line":401,"range":{"start_line":399,"start_character":16,"end_line":401,"end_character":65},"updated":"2016-07-22 21:54:24.000000000","message":"if share failed backing up are you sure you want to lock it in this state? Since it does not change the user\u0027s data, the user may want to continue using his share, but this status prevents several operations over it.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            self._run_backup(context, backup, share)"},{"line_number":397,"context_line":"        except Exception as err:"},{"line_number":398,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":399,"context_line":"                self.db.share_update("},{"line_number":400,"context_line":"                    context, backup[\u0027share_id\u0027],"},{"line_number":401,"context_line":"                    {\u0027status\u0027: constants.STATUS_BACKINGUP_ERROR})"},{"line_number":402,"context_line":"                self.db.share_backup_update("},{"line_number":403,"context_line":"                    context, backup_id, {\u0027status\u0027: constants.STATUS_ERROR,"},{"line_number":404,"context_line":"                                         \u0027fail_reason\u0027: six.text_type(err)})"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_b0f7e757","line":401,"range":{"start_line":399,"start_character":16,"end_line":401,"end_character":65},"in_reply_to":"dada55a8_82af877c","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        share_mount, share_unmount \u003d self._get_share_mount_info(share_instance)"},{"line_number":435,"context_line":"        mount_path \u003d CONF.tmp_location"},{"line_number":436,"context_line":"        ignore_list \u003d CONF.backup_ignore_files"},{"line_number":437,"context_line":"        backup_path \u003d \u0027backup_tmp_\u0027 + uuid.uuid4().hex"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        try:"},{"line_number":440,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_a2856bae","line":437,"range":{"start_line":437,"start_character":36,"end_line":437,"end_character":54},"updated":"2016-07-22 21:54:24.000000000","message":"why not backup[\u0027id\u0027]?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        share_mount, share_unmount \u003d self._get_share_mount_info(share_instance)"},{"line_number":435,"context_line":"        mount_path \u003d CONF.tmp_location"},{"line_number":436,"context_line":"        ignore_list \u003d CONF.backup_ignore_files"},{"line_number":437,"context_line":"        backup_path \u003d \u0027backup_tmp_\u0027 + uuid.uuid4().hex"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        try:"},{"line_number":440,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_2371f3a8","line":437,"range":{"start_line":437,"start_character":36,"end_line":437,"end_character":54},"in_reply_to":"dada55a8_a2856bae","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        backup_path \u003d \u0027backup_tmp_\u0027 + uuid.uuid4().hex"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        try:"},{"line_number":440,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":441,"context_line":"        except Exception:"},{"line_number":442,"context_line":"            raise"},{"line_number":443,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_0281d78f","line":440,"range":{"start_line":440,"start_character":32,"end_line":440,"end_character":73},"updated":"2016-07-22 21:54:24.000000000","message":"this method is not in the backup driver base class","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        backup_path \u003d \u0027backup_tmp_\u0027 + uuid.uuid4().hex"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        try:"},{"line_number":440,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":441,"context_line":"        except Exception:"},{"line_number":442,"context_line":"            raise"},{"line_number":443,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_b71b5972","line":440,"range":{"start_line":440,"start_character":32,"end_line":440,"end_character":73},"in_reply_to":"dada55a8_0281d78f","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        backup_path \u003d \u0027backup_tmp_\u0027 + uuid.uuid4().hex"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        try:"},{"line_number":440,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":441,"context_line":"        except Exception:"},{"line_number":442,"context_line":"            raise"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        try:"},{"line_number":445,"context_line":"            copy \u003d data_utils.Copy("}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_c25dff49","line":442,"range":{"start_line":440,"start_character":73,"end_line":442,"end_character":17},"updated":"2016-07-22 21:54:24.000000000","message":"if you are just reraising you don\u0027t need a try/except block","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        backup_path \u003d \u0027backup_tmp_\u0027 + uuid.uuid4().hex"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        try:"},{"line_number":440,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":441,"context_line":"        except Exception:"},{"line_number":442,"context_line":"            raise"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        try:"},{"line_number":445,"context_line":"            copy \u003d data_utils.Copy("}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_170ce539","line":442,"range":{"start_line":440,"start_character":73,"end_line":442,"end_character":17},"in_reply_to":"dada55a8_c25dff49","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":469,"context_line":"                context, share[\u0027id\u0027],"},{"line_number":470,"context_line":"                {\u0027task_state\u0027: constants.TASK_STATE_DATA_COPYING_ERROR})"},{"line_number":471,"context_line":"            msg \u003d _(\"Failed to copy contents from instance %(src)s to \""},{"line_number":472,"context_line":"                    \"instance %(dest)s.\") % {\u0027src\u0027: share_mount,"},{"line_number":473,"context_line":"                                             \u0027dest\u0027: dest_backup_info[\u0027mount\u0027]}"},{"line_number":474,"context_line":"            LOG.exception(msg)"},{"line_number":475,"context_line":"            raise exception.ShareDataCopyFailed(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_7d083629","line":472,"range":{"start_line":472,"start_character":21,"end_line":472,"end_character":29},"updated":"2016-07-22 21:54:24.000000000","message":"backup","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":469,"context_line":"                context, share[\u0027id\u0027],"},{"line_number":470,"context_line":"                {\u0027task_state\u0027: constants.TASK_STATE_DATA_COPYING_ERROR})"},{"line_number":471,"context_line":"            msg \u003d _(\"Failed to copy contents from instance %(src)s to \""},{"line_number":472,"context_line":"                    \"instance %(dest)s.\") % {\u0027src\u0027: share_mount,"},{"line_number":473,"context_line":"                                             \u0027dest\u0027: dest_backup_info[\u0027mount\u0027]}"},{"line_number":474,"context_line":"            LOG.exception(msg)"},{"line_number":475,"context_line":"            raise exception.ShareDataCopyFailed(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_a3e2032d","line":472,"range":{"start_line":472,"start_character":21,"end_line":472,"end_character":29},"in_reply_to":"dada55a8_7d083629","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        backup_info \u003d self.db.share_backup_get(context, backup_id)"},{"line_number":483,"context_line":"        expected_status \u003d constants.STATUS_DELETING"},{"line_number":484,"context_line":"        actual_status \u003d backup_info[\u0027status\u0027]"},{"line_number":485,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":486,"context_line":"            err \u003d (_(\u0027Delete_backup aborted, expected backup status \u0027"},{"line_number":487,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027)"},{"line_number":488,"context_line":"                   % {\u0027expected_status\u0027: expected_status,"},{"line_number":489,"context_line":"                      \u0027actual_status\u0027: actual_status})"},{"line_number":490,"context_line":"            backup \u003d self.db.share_backup_update("},{"line_number":491,"context_line":"                context, backup[\u0027id\u0027],"},{"line_number":492,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR,"},{"line_number":493,"context_line":"                 \u0027fail_reason\u0027: err})"},{"line_number":494,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        try:"},{"line_number":497,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_dd5e8211","line":494,"range":{"start_line":485,"start_character":0,"end_line":494,"end_character":53},"updated":"2016-07-22 21:54:24.000000000","message":"double checking stats already set by share/api.py... why?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        backup_info \u003d self.db.share_backup_get(context, backup_id)"},{"line_number":483,"context_line":"        expected_status \u003d constants.STATUS_DELETING"},{"line_number":484,"context_line":"        actual_status \u003d backup_info[\u0027status\u0027]"},{"line_number":485,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":486,"context_line":"            err \u003d (_(\u0027Delete_backup aborted, expected backup status \u0027"},{"line_number":487,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027)"},{"line_number":488,"context_line":"                   % {\u0027expected_status\u0027: expected_status,"},{"line_number":489,"context_line":"                      \u0027actual_status\u0027: actual_status})"},{"line_number":490,"context_line":"            backup \u003d self.db.share_backup_update("},{"line_number":491,"context_line":"                context, backup[\u0027id\u0027],"},{"line_number":492,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR,"},{"line_number":493,"context_line":"                 \u0027fail_reason\u0027: err})"},{"line_number":494,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        try:"},{"line_number":497,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_d77a4d87","line":494,"range":{"start_line":485,"start_character":0,"end_line":494,"end_character":53},"in_reply_to":"dada55a8_dd5e8211","updated":"2016-08-01 11:46:16.000000000","message":"Because the share_api and share_data are different service, share_api service could update backup status again before share_data run create backup function.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":494,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        try:"},{"line_number":497,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":498,"context_line":"            path \u003d dest_backup_info[\u0027mount_point\u0027]"},{"line_number":499,"context_line":"            if not os.path.exists(path):"},{"line_number":500,"context_line":"                os.makedirs(dest_backup_info[\u0027mount_point\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_dd8cc281","line":497,"range":{"start_line":497,"start_character":12,"end_line":497,"end_character":73},"updated":"2016-07-22 21:54:24.000000000","message":"method not in backup driver\u0027s base class","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":494,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        try:"},{"line_number":497,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":498,"context_line":"            path \u003d dest_backup_info[\u0027mount_point\u0027]"},{"line_number":499,"context_line":"            if not os.path.exists(path):"},{"line_number":500,"context_line":"                os.makedirs(dest_backup_info[\u0027mount_point\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_d7a1adf9","line":497,"range":{"start_line":497,"start_character":12,"end_line":497,"end_character":73},"in_reply_to":"dada55a8_dd8cc281","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        try:"},{"line_number":497,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":498,"context_line":"            path \u003d dest_backup_info[\u0027mount_point\u0027]"},{"line_number":499,"context_line":"            if not os.path.exists(path):"},{"line_number":500,"context_line":"                os.makedirs(dest_backup_info[\u0027mount_point\u0027])"},{"line_number":501,"context_line":"            if not os.path.exists(path):"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_1d3bfa9d","line":498,"range":{"start_line":498,"start_character":12,"end_line":498,"end_character":50},"updated":"2016-07-22 21:54:24.000000000","message":"I don\u0027t see \u0027mount_point\u0027 set in nfs.get_backup_info","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        try:"},{"line_number":497,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":498,"context_line":"            path \u003d dest_backup_info[\u0027mount_point\u0027]"},{"line_number":499,"context_line":"            if not os.path.exists(path):"},{"line_number":500,"context_line":"                os.makedirs(dest_backup_info[\u0027mount_point\u0027])"},{"line_number":501,"context_line":"            if not os.path.exists(path):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_97fe15ac","line":498,"range":{"start_line":498,"start_character":12,"end_line":498,"end_character":50},"in_reply_to":"dada55a8_1d3bfa9d","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":507,"context_line":"            utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":508,"context_line":"            os.remove(path)"},{"line_number":509,"context_line":"        except Exception:"},{"line_number":510,"context_line":"            LOG.exception(_LE(\"Failed to delete backup data\"))"},{"line_number":511,"context_line":"            raise"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        # Get reservations"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_bd710e7a","line":510,"range":{"start_line":510,"start_character":57,"end_line":510,"end_character":60},"updated":"2016-07-22 21:54:24.000000000","message":"add period","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":507,"context_line":"            utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":508,"context_line":"            os.remove(path)"},{"line_number":509,"context_line":"        except Exception:"},{"line_number":510,"context_line":"            LOG.exception(_LE(\"Failed to delete backup data\"))"},{"line_number":511,"context_line":"            raise"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        # Get reservations"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_c353b7e0","line":510,"range":{"start_line":510,"start_character":57,"end_line":510,"end_character":60},"in_reply_to":"dada55a8_bd710e7a","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":521,"context_line":"                                          **reserve_opts)"},{"line_number":522,"context_line":"        except Exception:"},{"line_number":523,"context_line":"            reservations \u003d None"},{"line_number":524,"context_line":"            LOG.exception(_LE(\"Failed to update usages deleting backup\"))"},{"line_number":525,"context_line":"            raise"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        # Commit the reservations"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_3d04fec4","line":524,"range":{"start_line":524,"start_character":68,"end_line":524,"end_character":71},"updated":"2016-07-22 21:54:24.000000000","message":"add period","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":521,"context_line":"                                          **reserve_opts)"},{"line_number":522,"context_line":"        except Exception:"},{"line_number":523,"context_line":"            reservations \u003d None"},{"line_number":524,"context_line":"            LOG.exception(_LE(\"Failed to update usages deleting backup\"))"},{"line_number":525,"context_line":"            raise"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        # Commit the reservations"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_63712b76","line":524,"range":{"start_line":524,"start_character":68,"end_line":524,"end_character":71},"in_reply_to":"dada55a8_3d04fec4","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":543,"context_line":"        backup \u003d self.db.share_backup_get(context, backup[\u0027id\u0027])"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"        expected_status \u003d constants.STATUS_RESTORING"},{"line_number":546,"context_line":"        actual_status \u003d share[\u0027status\u0027]"},{"line_number":547,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":548,"context_line":"            err \u003d (_(\u0027Restore backup aborted, expected share status \u0027"},{"line_number":549,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027) %"},{"line_number":550,"context_line":"                   {\u0027expected_status\u0027: expected_status,"},{"line_number":551,"context_line":"                    \u0027actual_status\u0027: actual_status})"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        expected_status \u003d constants.STATUS_RESTORING"},{"line_number":556,"context_line":"        actual_status \u003d backup[\u0027status\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_b812bc56","line":553,"range":{"start_line":545,"start_character":8,"end_line":553,"end_character":52},"updated":"2016-07-22 21:54:24.000000000","message":"why double check?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":543,"context_line":"        backup \u003d self.db.share_backup_get(context, backup[\u0027id\u0027])"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"        expected_status \u003d constants.STATUS_RESTORING"},{"line_number":546,"context_line":"        actual_status \u003d share[\u0027status\u0027]"},{"line_number":547,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":548,"context_line":"            err \u003d (_(\u0027Restore backup aborted, expected share status \u0027"},{"line_number":549,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027) %"},{"line_number":550,"context_line":"                   {\u0027expected_status\u0027: expected_status,"},{"line_number":551,"context_line":"                    \u0027actual_status\u0027: actual_status})"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        expected_status \u003d constants.STATUS_RESTORING"},{"line_number":556,"context_line":"        actual_status \u003d backup[\u0027status\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_571f7d07","line":553,"range":{"start_line":545,"start_character":8,"end_line":553,"end_character":52},"in_reply_to":"dada55a8_b812bc56","updated":"2016-08-01 11:46:16.000000000","message":"above","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        expected_status \u003d constants.STATUS_RESTORING"},{"line_number":556,"context_line":"        actual_status \u003d backup[\u0027status\u0027]"},{"line_number":557,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":558,"context_line":"            err \u003d (_(\u0027Restore backup aborted: expected backup status \u0027"},{"line_number":559,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027) %"},{"line_number":560,"context_line":"                   {\u0027expected_status\u0027: expected_status,"},{"line_number":561,"context_line":"                    \u0027actual_status\u0027: actual_status})"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"            backup \u003d self.db.share_backup_update("},{"line_number":564,"context_line":"                context, backup[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_980ff82d","line":561,"range":{"start_line":555,"start_character":8,"end_line":561,"end_character":52},"updated":"2016-07-22 21:54:24.000000000","message":"why double check?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        expected_status \u003d constants.STATUS_RESTORING"},{"line_number":556,"context_line":"        actual_status \u003d backup[\u0027status\u0027]"},{"line_number":557,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":558,"context_line":"            err \u003d (_(\u0027Restore backup aborted: expected backup status \u0027"},{"line_number":559,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027) %"},{"line_number":560,"context_line":"                   {\u0027expected_status\u0027: expected_status,"},{"line_number":561,"context_line":"                    \u0027actual_status\u0027: actual_status})"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"            backup \u003d self.db.share_backup_update("},{"line_number":564,"context_line":"                context, backup[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_971575e6","line":561,"range":{"start_line":555,"start_character":8,"end_line":561,"end_character":52},"in_reply_to":"dada55a8_980ff82d","updated":"2016-08-01 11:46:16.000000000","message":"above","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":567,"context_line":"                context, share_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":568,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"        if share[\u0027size\u0027] \u003e backup[\u0027size\u0027]:"},{"line_number":571,"context_line":"            LOG.info(_LI(\u0027Share: %(share_id)s, size: %(share_size)d is \u0027"},{"line_number":572,"context_line":"                         \u0027larger than backup: %(backup_id)s, \u0027"},{"line_number":573,"context_line":"                         \u0027size: %(backup_size)d, continuing with restore.\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_780e84e6","line":570,"range":{"start_line":570,"start_character":11,"end_line":570,"end_character":41},"updated":"2016-07-22 21:54:24.000000000","message":"if backup_size derives from the original share size, then shouldn\u0027t this be \"greater or equal\"?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":567,"context_line":"                context, share_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":568,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"        if share[\u0027size\u0027] \u003e backup[\u0027size\u0027]:"},{"line_number":571,"context_line":"            LOG.info(_LI(\u0027Share: %(share_id)s, size: %(share_size)d is \u0027"},{"line_number":572,"context_line":"                         \u0027larger than backup: %(backup_id)s, \u0027"},{"line_number":573,"context_line":"                         \u0027size: %(backup_size)d, continuing with restore.\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_03df8f0d","line":570,"range":{"start_line":570,"start_character":11,"end_line":570,"end_character":41},"in_reply_to":"dada55a8_780e84e6","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":593,"context_line":"        backup \u003d self.db.share_backup_update("},{"line_number":594,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        LOG.info(_LI(\"Share backup %s restore successfully.\"),"},{"line_number":597,"context_line":"                 backup[\u0027id\u0027])"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    def _run_restore(self, context, backup, share):"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_7825e45a","line":596,"range":{"start_line":596,"start_character":46,"end_line":596,"end_character":58},"updated":"2016-07-22 21:54:24.000000000","message":"I would also include the share_id here","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":593,"context_line":"        backup \u003d self.db.share_backup_update("},{"line_number":594,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        LOG.info(_LI(\"Share backup %s restore successfully.\"),"},{"line_number":597,"context_line":"                 backup[\u0027id\u0027])"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    def _run_restore(self, context, backup, share):"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_98f538cd","line":596,"range":{"start_line":596,"start_character":38,"end_line":596,"end_character":45},"updated":"2016-07-22 21:54:24.000000000","message":"restored","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":593,"context_line":"        backup \u003d self.db.share_backup_update("},{"line_number":594,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        LOG.info(_LI(\"Share backup %s restore successfully.\"),"},{"line_number":597,"context_line":"                 backup[\u0027id\u0027])"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    def _run_restore(self, context, backup, share):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_23857306","line":596,"range":{"start_line":596,"start_character":46,"end_line":596,"end_character":58},"in_reply_to":"dada55a8_7825e45a","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":593,"context_line":"        backup \u003d self.db.share_backup_update("},{"line_number":594,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        LOG.info(_LI(\"Share backup %s restore successfully.\"),"},{"line_number":597,"context_line":"                 backup[\u0027id\u0027])"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    def _run_restore(self, context, backup, share):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_a3fe83ab","line":596,"range":{"start_line":596,"start_character":38,"end_line":596,"end_character":45},"in_reply_to":"dada55a8_98f538cd","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        share_mount, share_unmount \u003d self._get_share_mount_info(share_instance)"},{"line_number":605,"context_line":"        mount_path \u003d CONF.tmp_location"},{"line_number":606,"context_line":"        ignore_list \u003d CONF.backup_ignore_files"},{"line_number":607,"context_line":"        restore_path \u003d \u0027backup_tmp_\u0027 + uuid.uuid4().hex"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        try:"},{"line_number":610,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_f8f0b4cb","line":607,"range":{"start_line":607,"start_character":23,"end_line":607,"end_character":55},"updated":"2016-07-22 21:54:24.000000000","message":"why can\u0027t use backup[\u0027id\u0027]?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        share_mount, share_unmount \u003d self._get_share_mount_info(share_instance)"},{"line_number":605,"context_line":"        mount_path \u003d CONF.tmp_location"},{"line_number":606,"context_line":"        ignore_list \u003d CONF.backup_ignore_files"},{"line_number":607,"context_line":"        restore_path \u003d \u0027backup_tmp_\u0027 + uuid.uuid4().hex"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        try:"},{"line_number":610,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e30a3b89","line":607,"range":{"start_line":607,"start_character":23,"end_line":607,"end_character":55},"in_reply_to":"dada55a8_f8f0b4cb","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        restore_path \u003d \u0027backup_tmp_\u0027 + uuid.uuid4().hex"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        try:"},{"line_number":610,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":611,"context_line":"        except Exception:"},{"line_number":612,"context_line":"            raise"},{"line_number":613,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_d8edf0f0","line":610,"range":{"start_line":610,"start_character":31,"end_line":610,"end_character":73},"updated":"2016-07-22 21:54:24.000000000","message":"method does not exist in backup driver base class","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        restore_path \u003d \u0027backup_tmp_\u0027 + uuid.uuid4().hex"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        try:"},{"line_number":610,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":611,"context_line":"        except Exception:"},{"line_number":612,"context_line":"            raise"},{"line_number":613,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_d7d9ad58","line":610,"range":{"start_line":610,"start_character":31,"end_line":610,"end_character":73},"in_reply_to":"dada55a8_d8edf0f0","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        try:"},{"line_number":610,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":611,"context_line":"        except Exception:"},{"line_number":612,"context_line":"            raise"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        try:"},{"line_number":615,"context_line":"            copy \u003d data_utils.Copy("}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_b8cd9c88","line":612,"range":{"start_line":611,"start_character":7,"end_line":612,"end_character":17},"updated":"2016-07-22 21:54:24.000000000","message":"no need of try/except block in this case","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        try:"},{"line_number":610,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":611,"context_line":"        except Exception:"},{"line_number":612,"context_line":"            raise"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        try:"},{"line_number":615,"context_line":"            copy \u003d data_utils.Copy("}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_17e065f9","line":612,"range":{"start_line":611,"start_character":7,"end_line":612,"end_character":17},"in_reply_to":"dada55a8_b8cd9c88","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                     \u0027share: %(share_id)s.\u0027),"},{"line_number":362,"context_line":"                 {\u0027backup_id\u0027: backup_id, \u0027share_id\u0027: share_id})"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        expected_status \u003d constants.STATUS_BACKINGUP"},{"line_number":365,"context_line":"        actual_status \u003d share[\u0027status\u0027]"},{"line_number":366,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":367,"context_line":"            err \u003d _(\u0027Create backup aborted, expected share status \u0027"},{"line_number":368,"context_line":"                    \u0027%(expected_status)s but got %(actual_status)s.\u0027) % {"},{"line_number":369,"context_line":"                \u0027expected_status\u0027: expected_status,"},{"line_number":370,"context_line":"                \u0027actual_status\u0027: actual_status,"},{"line_number":371,"context_line":"            }"},{"line_number":372,"context_line":"            self.db.share_backup_update("},{"line_number":373,"context_line":"                context, backup_id,"},{"line_number":374,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR, \u0027fail_reason\u0027: err})"},{"line_number":375,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        expected_status \u003d constants.STATUS_CREATING"},{"line_number":378,"context_line":"        actual_status \u003d backup.status"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_7a69c1f8","line":375,"range":{"start_line":364,"start_character":8,"end_line":375,"end_character":52},"updated":"2016-08-01 16:08:40.000000000","message":"you said \"Because the share_api and share_data are different service, share_api service could update share status again before share_data run create backup function.\" Please describe the scenario where the status is changed again before share_data run create backup function.","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"480f0eecf87d0bc6f1801962cbe108d4b87d9b3e","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                     \u0027share: %(share_id)s.\u0027),"},{"line_number":362,"context_line":"                 {\u0027backup_id\u0027: backup_id, \u0027share_id\u0027: share_id})"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        expected_status \u003d constants.STATUS_BACKINGUP"},{"line_number":365,"context_line":"        actual_status \u003d share[\u0027status\u0027]"},{"line_number":366,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":367,"context_line":"            err \u003d _(\u0027Create backup aborted, expected share status \u0027"},{"line_number":368,"context_line":"                    \u0027%(expected_status)s but got %(actual_status)s.\u0027) % {"},{"line_number":369,"context_line":"                \u0027expected_status\u0027: expected_status,"},{"line_number":370,"context_line":"                \u0027actual_status\u0027: actual_status,"},{"line_number":371,"context_line":"            }"},{"line_number":372,"context_line":"            self.db.share_backup_update("},{"line_number":373,"context_line":"                context, backup_id,"},{"line_number":374,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR, \u0027fail_reason\u0027: err})"},{"line_number":375,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        expected_status \u003d constants.STATUS_CREATING"},{"line_number":378,"context_line":"        actual_status \u003d backup.status"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_1e633d43","line":375,"range":{"start_line":364,"start_character":8,"end_line":375,"end_character":52},"updated":"2016-08-11 19:02:27.000000000","message":"this double-checking is still not clear to me. The only use case this seems to be valid is when you have already started a backup and then admin issues \u0027reset-state\u0027. But still I don\u0027t think you should be handling it. If you are concerned about starting a backup, and then something else overriding the status to do something else like \"extending\",\"deleting\" etc then those operations should be blocked. We use statuses as soft-locks that say \"I am using this share to do something, don\u0027t disrupt me\".","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"361bd3a17bdff7d5ab87d8269c8a687867d126e4","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                     \u0027share: %(share_id)s.\u0027),"},{"line_number":362,"context_line":"                 {\u0027backup_id\u0027: backup_id, \u0027share_id\u0027: share_id})"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        expected_status \u003d constants.STATUS_BACKINGUP"},{"line_number":365,"context_line":"        actual_status \u003d share[\u0027status\u0027]"},{"line_number":366,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":367,"context_line":"            err \u003d _(\u0027Create backup aborted, expected share status \u0027"},{"line_number":368,"context_line":"                    \u0027%(expected_status)s but got %(actual_status)s.\u0027) % {"},{"line_number":369,"context_line":"                \u0027expected_status\u0027: expected_status,"},{"line_number":370,"context_line":"                \u0027actual_status\u0027: actual_status,"},{"line_number":371,"context_line":"            }"},{"line_number":372,"context_line":"            self.db.share_backup_update("},{"line_number":373,"context_line":"                context, backup_id,"},{"line_number":374,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR, \u0027fail_reason\u0027: err})"},{"line_number":375,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        expected_status \u003d constants.STATUS_CREATING"},{"line_number":378,"context_line":"        actual_status \u003d backup.status"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_d7fa98bc","line":375,"range":{"start_line":364,"start_character":8,"end_line":375,"end_character":52},"in_reply_to":"3ac371cc_5dd10acd","updated":"2016-08-16 19:23:28.000000000","message":"Other devs may disagree, but my personal opinion is that you shouldn\u0027t, otherwise you would go crazy validating at each step of your code. Also, reset-state is admin-only, so he should know what he is doing.","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a9eda54ce1d3de4ab5a1fd260bc29dcc131b8377","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                     \u0027share: %(share_id)s.\u0027),"},{"line_number":362,"context_line":"                 {\u0027backup_id\u0027: backup_id, \u0027share_id\u0027: share_id})"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        expected_status \u003d constants.STATUS_BACKINGUP"},{"line_number":365,"context_line":"        actual_status \u003d share[\u0027status\u0027]"},{"line_number":366,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":367,"context_line":"            err \u003d _(\u0027Create backup aborted, expected share status \u0027"},{"line_number":368,"context_line":"                    \u0027%(expected_status)s but got %(actual_status)s.\u0027) % {"},{"line_number":369,"context_line":"                \u0027expected_status\u0027: expected_status,"},{"line_number":370,"context_line":"                \u0027actual_status\u0027: actual_status,"},{"line_number":371,"context_line":"            }"},{"line_number":372,"context_line":"            self.db.share_backup_update("},{"line_number":373,"context_line":"                context, backup_id,"},{"line_number":374,"context_line":"                {\u0027status\u0027: constants.STATUS_ERROR, \u0027fail_reason\u0027: err})"},{"line_number":375,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        expected_status \u003d constants.STATUS_CREATING"},{"line_number":378,"context_line":"        actual_status \u003d backup.status"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_5dd10acd","line":375,"range":{"start_line":364,"start_character":8,"end_line":375,"end_character":52},"in_reply_to":"9ad45d7e_1e633d43","updated":"2016-08-15 09:11:39.000000000","message":"Why we not need to handle the first use case? if the status has been modified by admin or user.","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":62,"context_line":"             \"advisable to separate different commands per backend.\"),"},{"line_number":63,"context_line":"    cfg.ListOpt("},{"line_number":64,"context_line":"        \u0027backup_ignore_files\u0027,"},{"line_number":65,"context_line":"        default\u003d[\u0027.snapshot\u0027],"},{"line_number":66,"context_line":"        help\u003d\"List of files and folders to be ignored when backuping shares. \""},{"line_number":67,"context_line":"             \"Items should be names (not including any path).\"),"},{"line_number":68,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_9d3f45b3","line":65,"range":{"start_line":65,"start_character":18,"end_line":65,"end_character":27},"updated":"2016-08-18 08:42:39.000000000","message":"this default value is not typical.\nlost+found would be better.","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":62,"context_line":"             \"advisable to separate different commands per backend.\"),"},{"line_number":63,"context_line":"    cfg.ListOpt("},{"line_number":64,"context_line":"        \u0027backup_ignore_files\u0027,"},{"line_number":65,"context_line":"        default\u003d[\u0027.snapshot\u0027],"},{"line_number":66,"context_line":"        help\u003d\"List of files and folders to be ignored when backuping shares. \""},{"line_number":67,"context_line":"             \"Items should be names (not including any path).\"),"},{"line_number":68,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_cec9bb5c","line":65,"range":{"start_line":65,"start_character":18,"end_line":65,"end_character":27},"in_reply_to":"3ac371cc_9d3f45b3","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    cfg.StrOpt("},{"line_number":72,"context_line":"        \u0027tmp_location\u0027,"},{"line_number":73,"context_line":"        default\u003d\u0027/tmp/\u0027,"},{"line_number":74,"context_line":"        help\u003d\"Temporary path to create and mount shares during migration.\"),"},{"line_number":75,"context_line":"]"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_7d7b697b","line":74,"range":{"start_line":74,"start_character":63,"end_line":74,"end_character":72},"updated":"2016-08-18 08:42:39.000000000","message":"or backup","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    cfg.StrOpt("},{"line_number":72,"context_line":"        \u0027tmp_location\u0027,"},{"line_number":73,"context_line":"        default\u003d\u0027/tmp/\u0027,"},{"line_number":74,"context_line":"        help\u003d\"Temporary path to create and mount shares during migration.\"),"},{"line_number":75,"context_line":"]"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_76918352","line":74,"range":{"start_line":74,"start_character":63,"end_line":74,"end_character":72},"in_reply_to":"3ac371cc_7d7b697b","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        elif info_dest.get(\u0027share_id\u0027):"},{"line_number":210,"context_line":"            share_id \u003d info_dest[\u0027share_id\u0027]"},{"line_number":211,"context_line":"        else:"},{"line_number":212,"context_line":"            msg \u003d _(\"Share data copy failed attempting to undefined share \")"},{"line_number":213,"context_line":"            LOG.exception(msg)"},{"line_number":214,"context_line":"            raise exception.ShareDataCopyFailed(reason\u003dmsg)"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_ddfd3db2","line":212,"range":{"start_line":212,"start_character":73,"end_line":212,"end_character":74},"updated":"2016-08-18 08:42:39.000000000","message":".","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        elif info_dest.get(\u0027share_id\u0027):"},{"line_number":210,"context_line":"            share_id \u003d info_dest[\u0027share_id\u0027]"},{"line_number":211,"context_line":"        else:"},{"line_number":212,"context_line":"            msg \u003d _(\"Share data copy failed attempting to undefined share \")"},{"line_number":213,"context_line":"            LOG.exception(msg)"},{"line_number":214,"context_line":"            raise exception.ShareDataCopyFailed(reason\u003dmsg)"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_9df745d2","line":212,"range":{"start_line":212,"start_character":44,"end_line":212,"end_character":57},"updated":"2016-08-18 08:42:39.000000000","message":"because of","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        elif info_dest.get(\u0027share_id\u0027):"},{"line_number":210,"context_line":"            share_id \u003d info_dest[\u0027share_id\u0027]"},{"line_number":211,"context_line":"        else:"},{"line_number":212,"context_line":"            msg \u003d _(\"Share data copy failed attempting to undefined share \")"},{"line_number":213,"context_line":"            LOG.exception(msg)"},{"line_number":214,"context_line":"            raise exception.ShareDataCopyFailed(reason\u003dmsg)"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_168e4f27","line":212,"range":{"start_line":212,"start_character":44,"end_line":212,"end_character":57},"in_reply_to":"3ac371cc_9df745d2","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        elif info_dest.get(\u0027share_id\u0027):"},{"line_number":210,"context_line":"            share_id \u003d info_dest[\u0027share_id\u0027]"},{"line_number":211,"context_line":"        else:"},{"line_number":212,"context_line":"            msg \u003d _(\"Share data copy failed attempting to undefined share \")"},{"line_number":213,"context_line":"            LOG.exception(msg)"},{"line_number":214,"context_line":"            raise exception.ShareDataCopyFailed(reason\u003dmsg)"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_3686eb13","line":212,"range":{"start_line":212,"start_character":73,"end_line":212,"end_character":74},"in_reply_to":"3ac371cc_ddfd3db2","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            share_id \u003d info_dest[\u0027share_id\u0027]"},{"line_number":211,"context_line":"        else:"},{"line_number":212,"context_line":"            msg \u003d _(\"Share data copy failed attempting to undefined share \")"},{"line_number":213,"context_line":"            LOG.exception(msg)"},{"line_number":214,"context_line":"            raise exception.ShareDataCopyFailed(reason\u003dmsg)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        share \u003d self.db.share_get(context, share_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_7d25295a","line":213,"range":{"start_line":213,"start_character":16,"end_line":213,"end_character":25},"updated":"2016-08-18 08:42:39.000000000","message":"error","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            share_id \u003d info_dest[\u0027share_id\u0027]"},{"line_number":211,"context_line":"        else:"},{"line_number":212,"context_line":"            msg \u003d _(\"Share data copy failed attempting to undefined share \")"},{"line_number":213,"context_line":"            LOG.exception(msg)"},{"line_number":214,"context_line":"            raise exception.ShareDataCopyFailed(reason\u003dmsg)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        share \u003d self.db.share_get(context, share_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_d69e7762","line":213,"range":{"start_line":213,"start_character":16,"end_line":213,"end_character":25},"in_reply_to":"3ac371cc_7d25295a","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        except Exception:"},{"line_number":287,"context_line":"            LOG.exception(_LE(\"Failed to copy data from share instance \""},{"line_number":288,"context_line":"                              \"%(src)s to %(des)s.\"),"},{"line_number":289,"context_line":"                          {\u0027src\u0027: info_src[\u0027mount\u0027],"},{"line_number":290,"context_line":"                           \u0027des\u0027: info_dest[\u0027mount\u0027]})"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_68a7290b","line":289,"range":{"start_line":289,"start_character":44,"end_line":289,"end_character":49},"updated":"2016-08-18 08:42:39.000000000","message":"mount_point?","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        except Exception:"},{"line_number":287,"context_line":"            LOG.exception(_LE(\"Failed to copy data from share instance \""},{"line_number":288,"context_line":"                              \"%(src)s to %(des)s.\"),"},{"line_number":289,"context_line":"                          {\u0027src\u0027: info_src[\u0027mount\u0027],"},{"line_number":290,"context_line":"                           \u0027des\u0027: info_dest[\u0027mount\u0027]})"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_365eeb76","line":289,"range":{"start_line":289,"start_character":44,"end_line":289,"end_character":49},"in_reply_to":"3ac371cc_68a7290b","updated":"2016-08-19 07:59:33.000000000","message":"The mount is the real share instance path, the mount_point is the temp path that we create in host.","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                              info_src[\u0027mount_point\u0027])"},{"line_number":295,"context_line":"        except Exception:"},{"line_number":296,"context_line":"            LOG.exception(_LE(\"Could not unmount folder of \""},{"line_number":297,"context_line":"                          \" %s after its data copy.\"), info_src[\u0027unmount\u0027])"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        try:"},{"line_number":300,"context_line":"            helper_dest.unmount_share_instance("}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_8808a529","line":297,"range":{"start_line":297,"start_character":65,"end_line":297,"end_character":72},"updated":"2016-08-18 08:42:39.000000000","message":"mount_point","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                                              info_src[\u0027mount_point\u0027])"},{"line_number":295,"context_line":"        except Exception:"},{"line_number":296,"context_line":"            LOG.exception(_LE(\"Could not unmount folder of \""},{"line_number":297,"context_line":"                          \" %s after its data copy.\"), info_src[\u0027unmount\u0027])"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        try:"},{"line_number":300,"context_line":"            helper_dest.unmount_share_instance("}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_62e37d06","line":297,"range":{"start_line":297,"start_character":65,"end_line":297,"end_character":72},"in_reply_to":"3ac371cc_8808a529","updated":"2016-08-19 07:59:33.000000000","message":"above","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            helper_dest.unmount_share_instance("},{"line_number":301,"context_line":"                info_dest[\u0027unmount\u0027], info_dest[\u0027mount_point\u0027])"},{"line_number":302,"context_line":"        except Exception:"},{"line_number":303,"context_line":"            LOG.exception(_LE(\"Could not unmount folder of instance\""},{"line_number":304,"context_line":"                          \" %s after its data copy.\"),"},{"line_number":305,"context_line":"                          info_dest[\u0027share_instance_id\u0027])"},{"line_number":306,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_88f26504","line":303,"range":{"start_line":303,"start_character":59,"end_line":303,"end_character":67},"updated":"2016-08-18 08:42:39.000000000","message":"remove","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        except Exception:"},{"line_number":303,"context_line":"            LOG.exception(_LE(\"Could not unmount folder of instance\""},{"line_number":304,"context_line":"                          \" %s after its data copy.\"),"},{"line_number":305,"context_line":"                          info_dest[\u0027share_instance_id\u0027])"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        try:"},{"line_number":308,"context_line":"            if info_src[\u0027share_instance_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_48eced29","line":305,"range":{"start_line":305,"start_character":37,"end_line":305,"end_character":54},"updated":"2016-08-18 08:42:39.000000000","message":"mount_point","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        elif not copied:"},{"line_number":339,"context_line":"            msg \u003d _(\"Copying data from share instance %(src)s \""},{"line_number":340,"context_line":"                    \"to %(dest)s did not succeed.\") % ("},{"line_number":341,"context_line":"                {\u0027src\u0027: info_dest[\u0027mount\u0027],"},{"line_number":342,"context_line":"                 \u0027dest\u0027: info_dest[\u0027mount\u0027]})"},{"line_number":343,"context_line":"            raise exception.ShareDataCopyFailed(reason\u003dmsg)"},{"line_number":344,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_288ed12d","line":341,"range":{"start_line":341,"start_character":24,"end_line":341,"end_character":33},"updated":"2016-08-18 08:42:39.000000000","message":"info_src","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        elif not copied:"},{"line_number":339,"context_line":"            msg \u003d _(\"Copying data from share instance %(src)s \""},{"line_number":340,"context_line":"                    \"to %(dest)s did not succeed.\") % ("},{"line_number":341,"context_line":"                {\u0027src\u0027: info_dest[\u0027mount\u0027],"},{"line_number":342,"context_line":"                 \u0027dest\u0027: info_dest[\u0027mount\u0027]})"},{"line_number":343,"context_line":"            raise exception.ShareDataCopyFailed(reason\u003dmsg)"},{"line_number":344,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_022569ad","line":341,"range":{"start_line":341,"start_character":24,"end_line":341,"end_character":33},"in_reply_to":"3ac371cc_288ed12d","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        LOG.debug(\"Copy of data from share instance %(src)s to \""},{"line_number":350,"context_line":"                  \"share instance %(dest)s was successful.\","},{"line_number":351,"context_line":"                  {\u0027src\u0027: info_dest[\u0027mount\u0027],"},{"line_number":352,"context_line":"                   \u0027dest\u0027: info_dest[\u0027mount\u0027]})"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def create_backup(self, context, backup, preserve_metadata):"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_a87ac121","line":351,"range":{"start_line":351,"start_character":26,"end_line":351,"end_character":35},"updated":"2016-08-18 08:42:39.000000000","message":"info_src","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        LOG.debug(\"Copy of data from share instance %(src)s to \""},{"line_number":350,"context_line":"                  \"share instance %(dest)s was successful.\","},{"line_number":351,"context_line":"                  {\u0027src\u0027: info_dest[\u0027mount\u0027],"},{"line_number":352,"context_line":"                   \u0027dest\u0027: info_dest[\u0027mount\u0027]})"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def create_backup(self, context, backup, preserve_metadata):"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_421f615b","line":351,"range":{"start_line":351,"start_character":26,"end_line":351,"end_character":35},"in_reply_to":"3ac371cc_a87ac121","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":356,"context_line":"        backup_id \u003d backup[\u0027id\u0027]"},{"line_number":357,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":358,"context_line":"        backup \u003d self.db.share_backup_get(context, backup[\u0027id\u0027])"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        LOG.info(_LI(\u0027Create backup started, backup: %(backup_id)s \u0027"},{"line_number":361,"context_line":"                     \u0027share: %(share_id)s.\u0027),"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_88e6e5e5","line":358,"range":{"start_line":358,"start_character":51,"end_line":358,"end_character":63},"updated":"2016-08-18 08:42:39.000000000","message":"could use backup_id","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":356,"context_line":"        backup_id \u003d backup[\u0027id\u0027]"},{"line_number":357,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":358,"context_line":"        backup \u003d self.db.share_backup_get(context, backup[\u0027id\u0027])"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        LOG.info(_LI(\u0027Create backup started, backup: %(backup_id)s \u0027"},{"line_number":361,"context_line":"                     \u0027share: %(share_id)s.\u0027),"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_823959db","line":358,"range":{"start_line":358,"start_character":51,"end_line":358,"end_character":63},"in_reply_to":"3ac371cc_88e6e5e5","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":391,"context_line":"            self._run_backup(context, backup, share)"},{"line_number":392,"context_line":"        except Exception as err:"},{"line_number":393,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":394,"context_line":"                self.db.share_update("},{"line_number":395,"context_line":"                    context, backup[\u0027share_id\u0027],"},{"line_number":396,"context_line":"                    {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":397,"context_line":"                self.db.share_backup_update("}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_a85c814b","line":394,"updated":"2016-08-18 08:42:39.000000000","message":"suggest adding a error log here.","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        except Exception as err:"},{"line_number":393,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":394,"context_line":"                self.db.share_update("},{"line_number":395,"context_line":"                    context, backup[\u0027share_id\u0027],"},{"line_number":396,"context_line":"                    {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":397,"context_line":"                self.db.share_backup_update("},{"line_number":398,"context_line":"                    context, backup_id, {\u0027status\u0027: constants.STATUS_ERROR,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_a8ae412b","line":395,"range":{"start_line":395,"start_character":29,"end_line":395,"end_character":47},"updated":"2016-08-18 08:42:39.000000000","message":"could use share_id","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        except Exception as err:"},{"line_number":393,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":394,"context_line":"                self.db.share_update("},{"line_number":395,"context_line":"                    context, backup[\u0027share_id\u0027],"},{"line_number":396,"context_line":"                    {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":397,"context_line":"                self.db.share_backup_update("},{"line_number":398,"context_line":"                    context, backup_id, {\u0027status\u0027: constants.STATUS_ERROR,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_826799e9","line":395,"range":{"start_line":395,"start_character":29,"end_line":395,"end_character":47},"in_reply_to":"3ac371cc_a8ae412b","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                    context, backup_id, {\u0027status\u0027: constants.STATUS_ERROR,"},{"line_number":399,"context_line":"                                         \u0027fail_reason\u0027: six.text_type(err)})"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        self.db.share_update(context, backup[\u0027share_id\u0027],"},{"line_number":402,"context_line":"                             {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        self.db.share_backup_update("}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_e829599c","line":401,"range":{"start_line":401,"start_character":38,"end_line":401,"end_character":56},"updated":"2016-08-18 08:42:39.000000000","message":"share_id","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                    context, backup_id, {\u0027status\u0027: constants.STATUS_ERROR,"},{"line_number":399,"context_line":"                                         \u0027fail_reason\u0027: six.text_type(err)})"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        self.db.share_update(context, backup[\u0027share_id\u0027],"},{"line_number":402,"context_line":"                             {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        self.db.share_backup_update("}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_62641de5","line":401,"range":{"start_line":401,"start_character":38,"end_line":401,"end_character":56},"in_reply_to":"3ac371cc_e829599c","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":402,"context_line":"                             {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        self.db.share_backup_update("},{"line_number":405,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":406,"context_line":"        LOG.info(_LI(\"Create share backup %s successfully.\"),"},{"line_number":407,"context_line":"                 backup_id)"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_0806751f","line":405,"range":{"start_line":405,"start_character":21,"end_line":405,"end_character":34},"updated":"2016-08-18 08:42:39.000000000","message":"backup_id","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":402,"context_line":"                             {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        self.db.share_backup_update("},{"line_number":405,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":406,"context_line":"        LOG.info(_LI(\"Create share backup %s successfully.\"),"},{"line_number":407,"context_line":"                 backup_id)"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_c26191d5","line":405,"range":{"start_line":405,"start_character":21,"end_line":405,"end_character":34},"in_reply_to":"3ac371cc_0806751f","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        if not path:"},{"line_number":415,"context_line":"            path \u003d share_instance[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        format_template \u003d {\u0027proto\u0027: share_instance[\u0027share_proto\u0027].lower(),"},{"line_number":418,"context_line":"                           \u0027export\u0027: path,"},{"line_number":419,"context_line":"                           \u0027path\u0027: \u0027%(path)s\u0027}"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_8381a6fd","line":417,"range":{"start_line":417,"start_character":8,"end_line":417,"end_character":23},"updated":"2016-08-18 08:42:39.000000000","message":"format_args","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        if not path:"},{"line_number":415,"context_line":"            path \u003d share_instance[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        format_template \u003d {\u0027proto\u0027: share_instance[\u0027share_proto\u0027].lower(),"},{"line_number":418,"context_line":"                           \u0027export\u0027: path,"},{"line_number":419,"context_line":"                           \u0027path\u0027: \u0027%(path)s\u0027}"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_82ae79e5","line":417,"range":{"start_line":417,"start_character":8,"end_line":417,"end_character":23},"in_reply_to":"3ac371cc_8381a6fd","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":475,"context_line":"        expected_status \u003d constants.STATUS_DELETING"},{"line_number":476,"context_line":"        actual_status \u003d backup_info[\u0027status\u0027]"},{"line_number":477,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":478,"context_line":"            err \u003d (_(\u0027Delete_backup aborted, expected backup status \u0027"},{"line_number":479,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027)"},{"line_number":480,"context_line":"                   % {\u0027expected_status\u0027: expected_status,"},{"line_number":481,"context_line":"                      \u0027actual_status\u0027: actual_status})"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_63b8ea75","line":478,"range":{"start_line":478,"start_character":28,"end_line":478,"end_character":29},"updated":"2016-08-18 08:42:39.000000000","message":"remove","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":475,"context_line":"        expected_status \u003d constants.STATUS_DELETING"},{"line_number":476,"context_line":"        actual_status \u003d backup_info[\u0027status\u0027]"},{"line_number":477,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":478,"context_line":"            err \u003d (_(\u0027Delete_backup aborted, expected backup status \u0027"},{"line_number":479,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027)"},{"line_number":480,"context_line":"                   % {\u0027expected_status\u0027: expected_status,"},{"line_number":481,"context_line":"                      \u0027actual_status\u0027: actual_status})"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_c2b8712d","line":478,"range":{"start_line":478,"start_character":28,"end_line":478,"end_character":29},"in_reply_to":"3ac371cc_63b8ea75","updated":"2016-08-19 07:59:33.000000000","message":"Done","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":486,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        try:"},{"line_number":489,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":490,"context_line":"            mount_path \u003d CONF.tmp_location"},{"line_number":491,"context_line":"            backup_path \u003d \u0027backup_tmp_\u0027 + backup[\u0027id\u0027]"},{"line_number":492,"context_line":"            path \u003d os.path.join(mount_path, backup_path)"},{"line_number":493,"context_line":"            if not os.path.exists(path):"},{"line_number":494,"context_line":"                os.makedirs(path)"},{"line_number":495,"context_line":"            if not os.path.exists(path):"},{"line_number":496,"context_line":"                raise exception.NotFound(\"Folder %s could not be found.\""},{"line_number":497,"context_line":"                                         % path)"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"            mount_command \u003d dest_backup_info[\u0027mount\u0027] % {\u0027path\u0027: path}"},{"line_number":500,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_c30f1e35","line":497,"range":{"start_line":489,"start_character":0,"end_line":497,"end_character":48},"updated":"2016-08-18 08:42:39.000000000","message":"this code snippet could be moved out of try statement.","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":498,"context_line":""},{"line_number":499,"context_line":"            mount_command \u003d dest_backup_info[\u0027mount\u0027] % {\u0027path\u0027: path}"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"            utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":502,"context_line":"            os.remove(path)"},{"line_number":503,"context_line":"        except Exception:"},{"line_number":504,"context_line":"            LOG.exception(_LE(\"Failed to delete backup data.\"))"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_38629cd8","line":501,"updated":"2016-08-18 08:42:39.000000000","message":"Need to allow access before mounting?","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"51775681a49cf6a87ccb48b8b60bd49bcd70d7f4","unresolved":false,"context_lines":[{"line_number":498,"context_line":""},{"line_number":499,"context_line":"            mount_command \u003d dest_backup_info[\u0027mount\u0027] % {\u0027path\u0027: path}"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"            utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":502,"context_line":"            os.remove(path)"},{"line_number":503,"context_line":"        except Exception:"},{"line_number":504,"context_line":"            LOG.exception(_LE(\"Failed to delete backup data.\"))"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_6e86c714","line":501,"in_reply_to":"3ac371cc_38629cd8","updated":"2016-08-19 07:59:33.000000000","message":"This dest_backup share is not managed by manila, we could not do the allow access for it. It is up to backup driver.","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"54787d48a2885ce5caf0406aa9e61cf6613bad35","unresolved":false,"context_lines":[{"line_number":587,"context_line":"        backup \u003d self.db.share_backup_update("},{"line_number":588,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"        LOG.info(_LI(\"Share %(share_id)s backup %(backup_id)s restored\""},{"line_number":591,"context_line":"                     \" successfully.\"),"},{"line_number":592,"context_line":"                 {\u0027share_id\u0027: share_id, \u0027backup_id\u0027: backup[\u0027id\u0027]})"},{"line_number":593,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_15a84976","line":590,"range":{"start_line":590,"start_character":22,"end_line":590,"end_character":70},"updated":"2016-08-18 08:42:39.000000000","message":"Share %(share_id)s is restored from backup %(backup_id)s","commit_id":"65fb7e5f00cfd02739d69f7600929d10c825d6c8"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7240ff622673bc9419471533e919cb81e01404aa","unresolved":true,"context_lines":[{"line_number":222,"context_line":"        access_ref_src \u003d None"},{"line_number":223,"context_line":"        access_ref_dest \u003d None"},{"line_number":224,"context_line":"        if info_src[\u0027share_instance_id\u0027]:"},{"line_number":225,"context_line":"            access_ref_src \u003d helper_src.allow_access_to_data_service("},{"line_number":226,"context_line":"                share, info_src[\u0027share_instance_id\u0027])"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        if info_dest[\u0027share_instance_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":26,"id":"a7117bea_af18aea3","line":225,"range":{"start_line":225,"start_character":40,"end_line":225,"end_character":68},"updated":"2022-05-10 11:09:51.000000000","message":"based on manila/data/helper.py#141\ndef allow_access_to_data_service(\n            self, share_instance, connection_info_src,\n            dest_share_instance\u003dNone, connection_info_dest\u003dNone):\nThe function call may have the wrong input parameter.","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"65c8a1ca22008e22f9a5df8c0b5cf3b862291236","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        access_ref_src \u003d None"},{"line_number":223,"context_line":"        access_ref_dest \u003d None"},{"line_number":224,"context_line":"        if info_src[\u0027share_instance_id\u0027]:"},{"line_number":225,"context_line":"            access_ref_src \u003d helper_src.allow_access_to_data_service("},{"line_number":226,"context_line":"                share, info_src[\u0027share_instance_id\u0027])"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        if info_dest[\u0027share_instance_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":26,"id":"a945c255_7aa08b09","line":225,"range":{"start_line":225,"start_character":40,"end_line":225,"end_character":68},"in_reply_to":"a7117bea_af18aea3","updated":"2022-05-31 05:34:40.000000000","message":"Done","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"21e98f4255e4e9cc3ac659e8cc742a830566394e","unresolved":true,"context_lines":[{"line_number":79,"context_line":"    cfg.StrOpt("},{"line_number":80,"context_line":"        \u0027mount_tmp_location\u0027,"},{"line_number":81,"context_line":"        default\u003d\u0027/tmp/\u0027,"},{"line_number":82,"context_line":"        help\u003d\"Temporary path to create and mount shares during migration.\"),"},{"line_number":83,"context_line":"    cfg.BoolOpt("},{"line_number":84,"context_line":"        \u0027check_hash\u0027,"},{"line_number":85,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":40,"id":"21082d26_6bac6259","line":82,"updated":"2023-05-30 04:28:11.000000000","message":"cfg.StrOpt(\n        \u0027backup_mount_tmp_location\u0027,\n        default\u003d\u0027/tmp/backup/\u0027,\n        help\u003d\"Temporary path to create and mount backup during share backup.\"),","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4f58feddc260f07f57df0f04bb1d4113cd93599","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    cfg.StrOpt("},{"line_number":80,"context_line":"        \u0027mount_tmp_location\u0027,"},{"line_number":81,"context_line":"        default\u003d\u0027/tmp/\u0027,"},{"line_number":82,"context_line":"        help\u003d\"Temporary path to create and mount shares during migration.\"),"},{"line_number":83,"context_line":"    cfg.BoolOpt("},{"line_number":84,"context_line":"        \u0027check_hash\u0027,"},{"line_number":85,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":40,"id":"af3e93d3_690459c6","line":82,"in_reply_to":"21082d26_6bac6259","updated":"2023-05-31 06:06:08.000000000","message":"Done","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"21e98f4255e4e9cc3ac659e8cc742a830566394e","unresolved":true,"context_lines":[{"line_number":430,"context_line":"        access_mapping \u003d self._get_backup_access_mapping(share)"},{"line_number":431,"context_line":"        ignore_list \u003d CONF.backup_ignore_files"},{"line_number":432,"context_line":"        mount_path \u003d CONF.mount_tmp_location"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        mount_info \u003d self._get_share_mount_info(share_instance)"},{"line_number":435,"context_line":"        backup_path \u003d \u0027backup_tmp_\u0027 + backup[\u0027id\u0027]"},{"line_number":436,"context_line":"        dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"}],"source_content_type":"text/x-python","patch_set":40,"id":"24505648_36e7dc31","line":433,"updated":"2023-05-30 04:28:11.000000000","message":"add:\n\nbackup_mount_path \u003d CONF.backup_mount_tmp_location","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4f58feddc260f07f57df0f04bb1d4113cd93599","unresolved":false,"context_lines":[{"line_number":430,"context_line":"        access_mapping \u003d self._get_backup_access_mapping(share)"},{"line_number":431,"context_line":"        ignore_list \u003d CONF.backup_ignore_files"},{"line_number":432,"context_line":"        mount_path \u003d CONF.mount_tmp_location"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        mount_info \u003d self._get_share_mount_info(share_instance)"},{"line_number":435,"context_line":"        backup_path \u003d \u0027backup_tmp_\u0027 + backup[\u0027id\u0027]"},{"line_number":436,"context_line":"        dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"}],"source_content_type":"text/x-python","patch_set":40,"id":"2449786c_794e2407","line":433,"in_reply_to":"24505648_36e7dc31","updated":"2023-05-31 06:06:08.000000000","message":"Done","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"21e98f4255e4e9cc3ac659e8cc742a830566394e","unresolved":true,"context_lines":[{"line_number":432,"context_line":"        mount_path \u003d CONF.mount_tmp_location"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        mount_info \u003d self._get_share_mount_info(share_instance)"},{"line_number":435,"context_line":"        backup_path \u003d \u0027backup_tmp_\u0027 + backup[\u0027id\u0027]"},{"line_number":436,"context_line":"        dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":40,"id":"0cc061b6_718fd9d9","line":435,"range":{"start_line":435,"start_character":7,"end_line":435,"end_character":50},"updated":"2023-05-30 04:28:11.000000000","message":"remove this line.","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4f58feddc260f07f57df0f04bb1d4113cd93599","unresolved":false,"context_lines":[{"line_number":432,"context_line":"        mount_path \u003d CONF.mount_tmp_location"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        mount_info \u003d self._get_share_mount_info(share_instance)"},{"line_number":435,"context_line":"        backup_path \u003d \u0027backup_tmp_\u0027 + backup[\u0027id\u0027]"},{"line_number":436,"context_line":"        dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":40,"id":"eb36ba59_432b725e","line":435,"range":{"start_line":435,"start_character":7,"end_line":435,"end_character":50},"in_reply_to":"0cc061b6_718fd9d9","updated":"2023-05-31 06:06:08.000000000","message":"Done","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"21e98f4255e4e9cc3ac659e8cc742a830566394e","unresolved":true,"context_lines":[{"line_number":438,"context_line":"        try:"},{"line_number":439,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":440,"context_line":"                os.path.join(mount_path, share_instance_id),"},{"line_number":441,"context_line":"                os.path.join(mount_path, backup_path),"},{"line_number":442,"context_line":"                ignore_list)"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"            info_src \u003d {"}],"source_content_type":"text/x-python","patch_set":40,"id":"ccaa4cc7_cfe77e67","line":441,"range":{"start_line":441,"start_character":16,"end_line":441,"end_character":54},"updated":"2023-05-30 04:28:11.000000000","message":"os.path.join(backup_mount_path, backup[\u0027id\u0027]),\n\nthis means we copy data from\n/tmp/share_instance_id/*  to /tmp/backup/backup_id/\n\nwe have already mount -t nfs host:ip:backup_mount_export /tmp/backup/\n\nand backup_id dir has already created when mount.","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4f58feddc260f07f57df0f04bb1d4113cd93599","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        try:"},{"line_number":439,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":440,"context_line":"                os.path.join(mount_path, share_instance_id),"},{"line_number":441,"context_line":"                os.path.join(mount_path, backup_path),"},{"line_number":442,"context_line":"                ignore_list)"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"            info_src \u003d {"}],"source_content_type":"text/x-python","patch_set":40,"id":"0e96bd61_a0ca7f11","line":441,"range":{"start_line":441,"start_character":16,"end_line":441,"end_character":54},"in_reply_to":"ccaa4cc7_cfe77e67","updated":"2023-05-31 06:06:08.000000000","message":"Done","commit_id":"e379cd11be19ded6758f8222c11a0910d59659a6"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"6bc2253ff16b9cd7352b23856c716cd218eacd01","unresolved":true,"context_lines":[{"line_number":219,"context_line":"            LOG.error(msg)"},{"line_number":220,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def _copy_share_data(self, context, copy, info_src, info_dest):"},{"line_number":223,"context_line":"        mount_path \u003d CONF.mount_tmp_location"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        if info_src.get(\u0027share_id\u0027):"}],"source_content_type":"text/x-python","patch_set":44,"id":"3b17a857_9615e52a","line":222,"updated":"2023-06-06 15:32:27.000000000","message":"It took me some time to understand how this function works, I think some doc/comments might be helpful here.\n\nSuggestion: you could do something like this - https://github.com/openstack/manila/blob/76feed440f12e2a8a2ee9b172ed27c1fa8990f52/manila/share/drivers/netapp/dataontap/cluster_mode/data_motion.py#L185","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"50b4c0d2ddc03a6c5434ee811ee997950765bb4f","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            LOG.error(msg)"},{"line_number":220,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def _copy_share_data(self, context, copy, info_src, info_dest):"},{"line_number":223,"context_line":"        mount_path \u003d CONF.mount_tmp_location"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        if info_src.get(\u0027share_id\u0027):"}],"source_content_type":"text/x-python","patch_set":44,"id":"ff7d7223_0b121d94","line":222,"in_reply_to":"3b17a857_9615e52a","updated":"2023-06-07 13:00:50.000000000","message":"Done","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"6bc2253ff16b9cd7352b23856c716cd218eacd01","unresolved":true,"context_lines":[{"line_number":252,"context_line":"            access_ref_src \u003d helper_src.allow_access_to_data_service("},{"line_number":253,"context_line":"                share_instance_src, info_src, share_instance_dest, info_dest)"},{"line_number":254,"context_line":"            access_ref_dest \u003d access_ref_src"},{"line_number":255,"context_line":"        elif share_instance_dest:"},{"line_number":256,"context_line":"            access_ref_src \u003d helper_src.allow_access_to_data_service("},{"line_number":257,"context_line":"                share_instance_dest, info_dest, share_instance_src, info_src)"},{"line_number":258,"context_line":"            access_ref_dest \u003d access_ref_src"}],"source_content_type":"text/x-python","patch_set":44,"id":"47220285_084a0ac3","line":255,"updated":"2023-06-06 15:32:27.000000000","message":"Sorry if this is a silly question, but I couldn\u0027t understand the reason of trying to retrieve info from destination if you don\u0027t have the info in the source.\n\nIf the purpose of the function is to copy data from source to destination, I understand that if some required information is not present in the source, an error should be raised.\n\nCould you please help me understand this scenario?","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"50b4c0d2ddc03a6c5434ee811ee997950765bb4f","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            access_ref_src \u003d helper_src.allow_access_to_data_service("},{"line_number":253,"context_line":"                share_instance_src, info_src, share_instance_dest, info_dest)"},{"line_number":254,"context_line":"            access_ref_dest \u003d access_ref_src"},{"line_number":255,"context_line":"        elif share_instance_dest:"},{"line_number":256,"context_line":"            access_ref_src \u003d helper_src.allow_access_to_data_service("},{"line_number":257,"context_line":"                share_instance_dest, info_dest, share_instance_src, info_src)"},{"line_number":258,"context_line":"            access_ref_dest \u003d access_ref_src"}],"source_content_type":"text/x-python","patch_set":44,"id":"e9fc1458_0321b4da","line":255,"in_reply_to":"47220285_084a0ac3","updated":"2023-06-07 13:00:50.000000000","message":"in case of backup restore, there is no source share instance.","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"6bc2253ff16b9cd7352b23856c716cd218eacd01","unresolved":true,"context_lines":[{"line_number":606,"context_line":"                \u0027access_mapping\u0027: access_mapping"},{"line_number":607,"context_line":"            }"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"            self._copy_share_data(context, copy, info_src, info_dest)"},{"line_number":610,"context_line":"            self.db.share_update(context, share[\u0027id\u0027], {\u0027task_state\u0027: None})"},{"line_number":611,"context_line":"        except Exception:"},{"line_number":612,"context_line":"            self.db.share_update("}],"source_content_type":"text/x-python","patch_set":44,"id":"97d40173_6b4ba6e2","line":609,"updated":"2023-06-06 15:32:27.000000000","message":"Please correct me if I\u0027m wrong, but it looks like you are trying to copy data from `info_dest` to `info_src` (to restore data). \n\nIf I\u0027m correct, wouldn\u0027t be better to just revert the args? I mean: `self._copy_share_data(context, copy, info_dest, info_src)`. I believe this would allow you to simplify the `_copy_share_data` function.\n\nWhat do you think?","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                \u0027access_mapping\u0027: access_mapping"},{"line_number":607,"context_line":"            }"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"            self._copy_share_data(context, copy, info_src, info_dest)"},{"line_number":610,"context_line":"            self.db.share_update(context, share[\u0027id\u0027], {\u0027task_state\u0027: None})"},{"line_number":611,"context_line":"        except Exception:"},{"line_number":612,"context_line":"            self.db.share_update("}],"source_content_type":"text/x-python","patch_set":44,"id":"9c16b5ab_b7ed8b3f","line":609,"in_reply_to":"60725609_b5e32aa8","updated":"2023-06-08 02:14:52.000000000","message":"hi, Nahim\ni think here is ok.\nbecause info_dest means the share and info_src means the backup, we always copy data from src to dest( backup to share in restore).","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"50b4c0d2ddc03a6c5434ee811ee997950765bb4f","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                \u0027access_mapping\u0027: access_mapping"},{"line_number":607,"context_line":"            }"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"            self._copy_share_data(context, copy, info_src, info_dest)"},{"line_number":610,"context_line":"            self.db.share_update(context, share[\u0027id\u0027], {\u0027task_state\u0027: None})"},{"line_number":611,"context_line":"        except Exception:"},{"line_number":612,"context_line":"            self.db.share_update("}],"source_content_type":"text/x-python","patch_set":44,"id":"60725609_b5e32aa8","line":609,"in_reply_to":"97d40173_6b4ba6e2","updated":"2023-06-07 13:00:50.000000000","message":"I prefer to keep as it is for better readability and to keep migration unaffected by any chance.","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":true,"context_lines":[{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        mount_info \u003d self._get_share_mount_info(share_instance)"},{"line_number":451,"context_line":"        dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        try:"},{"line_number":454,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":455,"context_line":"                os.path.join(mount_path, share_instance_id),"}],"source_content_type":"text/x-python","patch_set":45,"id":"53912ae1_6e2a6fe5","line":452,"updated":"2023-06-08 02:14:52.000000000","message":"dest_backup_mount_point \u003d os.path.join(backup_mount_path, backup[\u0027id\u0027])\n    backup_folder \u003d os.path.join(dest_backup_mount_point, backup[\u0027id\u0027])","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9238b6fa26c56034629c61f469aa550e6ff235a","unresolved":false,"context_lines":[{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        mount_info \u003d self._get_share_mount_info(share_instance)"},{"line_number":451,"context_line":"        dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        try:"},{"line_number":454,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":455,"context_line":"                os.path.join(mount_path, share_instance_id),"}],"source_content_type":"text/x-python","patch_set":45,"id":"b279d4d1_87b039fc","line":452,"in_reply_to":"53912ae1_6e2a6fe5","updated":"2023-06-09 07:55:49.000000000","message":"Done","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":true,"context_lines":[{"line_number":453,"context_line":"        try:"},{"line_number":454,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":455,"context_line":"                os.path.join(mount_path, share_instance_id),"},{"line_number":456,"context_line":"                os.path.join(backup_mount_path, backup[\u0027id\u0027]),"},{"line_number":457,"context_line":"                ignore_list)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"            info_src \u003d {"}],"source_content_type":"text/x-python","patch_set":45,"id":"b433525b_e4db06f8","line":456,"range":{"start_line":456,"start_character":16,"end_line":456,"end_character":61},"updated":"2023-06-08 02:14:52.000000000","message":"here should be\n    backup_folder\n    \nbecause the mount point is /tmp/backup_id\nAfter we mount the backup to the mount point, a new directory named backup_id is created under the mount point(manila/data/helper.py line: 288).\nTherefore, the real backup data should be in the mount point directory and backup_id subdirectory.\n\nfor example:\nshare id is 123， backup id is 456.\nmount share to /tmp/123/\nmount backup to /tmp/456/, then we create new folder 456 under /tmp/456/\nmaybe another backup already in /tmp/456/789.\n\nthen we copy data from /tmp/123/*  to tmp/456/456/\n\n\nwhen restore backup\nwe copy data from /tmp/456/456/* to /tmp/123/","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9238b6fa26c56034629c61f469aa550e6ff235a","unresolved":false,"context_lines":[{"line_number":453,"context_line":"        try:"},{"line_number":454,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":455,"context_line":"                os.path.join(mount_path, share_instance_id),"},{"line_number":456,"context_line":"                os.path.join(backup_mount_path, backup[\u0027id\u0027]),"},{"line_number":457,"context_line":"                ignore_list)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"            info_src \u003d {"}],"source_content_type":"text/x-python","patch_set":45,"id":"4b84a03b_db8b11a9","line":456,"range":{"start_line":456,"start_character":16,"end_line":456,"end_character":61},"in_reply_to":"59b34c5c_6a72cbb5","updated":"2023-06-09 07:55:49.000000000","message":"Done","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"57e720a9b16229c9dbc588e30532183a5fedf8c8","unresolved":true,"context_lines":[{"line_number":453,"context_line":"        try:"},{"line_number":454,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":455,"context_line":"                os.path.join(mount_path, share_instance_id),"},{"line_number":456,"context_line":"                os.path.join(backup_mount_path, backup[\u0027id\u0027]),"},{"line_number":457,"context_line":"                ignore_list)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"            info_src \u003d {"}],"source_content_type":"text/x-python","patch_set":45,"id":"59b34c5c_6a72cbb5","line":456,"range":{"start_line":456,"start_character":16,"end_line":456,"end_character":61},"in_reply_to":"75fdd2ad_aeab1100","updated":"2023-06-09 07:17:45.000000000","message":"In the case of backup share, note that its mount point is /tmp/456, and when we go into the mount directory, we can see a number of backup directories named with the backup id. Each directory represents a backup.\n\nFor example, there are now three backups with ids of 456,789,010. During backup, the backup NFS is mounted to the mount point /tmp/456 of the host. If we go to the /tmp/456/ directory, we can see the three subdirectories 456,789,010. When the backup NFS is mounted to the mount point /tmp/789/ on the host. If we go to the /tmp/4789/ directory, we can also see the three subdirectories 456,789,010.\n\n\n| I think copy from /tmp/123 to /tmp/456 should be good\nSo,/tmp/456 is just the mount point directory, not exactly the backup id directory","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b169c54de9684f361cec4c1e89b7d6b44e5504bd","unresolved":true,"context_lines":[{"line_number":453,"context_line":"        try:"},{"line_number":454,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":455,"context_line":"                os.path.join(mount_path, share_instance_id),"},{"line_number":456,"context_line":"                os.path.join(backup_mount_path, backup[\u0027id\u0027]),"},{"line_number":457,"context_line":"                ignore_list)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"            info_src \u003d {"}],"source_content_type":"text/x-python","patch_set":45,"id":"75fdd2ad_aeab1100","line":456,"range":{"start_line":456,"start_character":16,"end_line":456,"end_character":61},"in_reply_to":"b433525b_e4db06f8","updated":"2023-06-08 12:01:25.000000000","message":"\u003emaybe another backup already in /tmp/456/789.\nbackup id is unique, so how can this be possible ?\nI think copy from /tmp/123 to /tmp/456 should be good","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":true,"context_lines":[{"line_number":472,"context_line":"                \u0027backup_id\u0027: backup[\u0027id\u0027],"},{"line_number":473,"context_line":"                \u0027mount\u0027: dest_backup_info[\u0027mount\u0027],"},{"line_number":474,"context_line":"                \u0027unmount\u0027: dest_backup_info[\u0027unmount\u0027],"},{"line_number":475,"context_line":"                \u0027mount_point\u0027: os.path.join(backup_mount_path, backup[\u0027id\u0027]),"},{"line_number":476,"context_line":"                \u0027access_mapping\u0027: access_mapping"},{"line_number":477,"context_line":"            }"},{"line_number":478,"context_line":"            self._copy_share_data(context, copy, info_src, info_dest)"}],"source_content_type":"text/x-python","patch_set":45,"id":"00ae1880_035a3e23","line":475,"range":{"start_line":475,"start_character":31,"end_line":475,"end_character":76},"updated":"2023-06-08 02:14:52.000000000","message":"dest_backup_mount_point","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9238b6fa26c56034629c61f469aa550e6ff235a","unresolved":false,"context_lines":[{"line_number":472,"context_line":"                \u0027backup_id\u0027: backup[\u0027id\u0027],"},{"line_number":473,"context_line":"                \u0027mount\u0027: dest_backup_info[\u0027mount\u0027],"},{"line_number":474,"context_line":"                \u0027unmount\u0027: dest_backup_info[\u0027unmount\u0027],"},{"line_number":475,"context_line":"                \u0027mount_point\u0027: os.path.join(backup_mount_path, backup[\u0027id\u0027]),"},{"line_number":476,"context_line":"                \u0027access_mapping\u0027: access_mapping"},{"line_number":477,"context_line":"            }"},{"line_number":478,"context_line":"            self._copy_share_data(context, copy, info_src, info_dest)"}],"source_content_type":"text/x-python","patch_set":45,"id":"c74982f6_348692d6","line":475,"range":{"start_line":475,"start_character":31,"end_line":475,"end_character":76},"in_reply_to":"00ae1880_035a3e23","updated":"2023-06-09 07:55:49.000000000","message":"Done","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":true,"context_lines":[{"line_number":497,"context_line":"        try:"},{"line_number":498,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":499,"context_line":"            backup_mount_path \u003d CONF.backup_mount_tmp_location"},{"line_number":500,"context_line":"            path \u003d os.path.join(backup_mount_path, backup[\u0027id\u0027])"},{"line_number":501,"context_line":"            if not os.path.exists(path):"},{"line_number":502,"context_line":"                os.makedirs(path)"},{"line_number":503,"context_line":"            if not os.path.exists(path):"}],"source_content_type":"text/x-python","patch_set":45,"id":"28db9e25_8e95c180","line":500,"range":{"start_line":500,"start_character":12,"end_line":500,"end_character":16},"updated":"2023-06-08 02:14:52.000000000","message":"Change the name to mount_point to help us understand\n\n    mount_point \u003d os.path.join(backup_mount_path, backup[\u0027id\u0027])\n    backup_folder \u003d os.path.join(mount_point, backup[\u0027id\u0027])","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b169c54de9684f361cec4c1e89b7d6b44e5504bd","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        try:"},{"line_number":498,"context_line":"            dest_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":499,"context_line":"            backup_mount_path \u003d CONF.backup_mount_tmp_location"},{"line_number":500,"context_line":"            path \u003d os.path.join(backup_mount_path, backup[\u0027id\u0027])"},{"line_number":501,"context_line":"            if not os.path.exists(path):"},{"line_number":502,"context_line":"                os.makedirs(path)"},{"line_number":503,"context_line":"            if not os.path.exists(path):"}],"source_content_type":"text/x-python","patch_set":45,"id":"68662ff1_7b4b591d","line":500,"range":{"start_line":500,"start_character":12,"end_line":500,"end_character":16},"in_reply_to":"28db9e25_8e95c180","updated":"2023-06-08 12:01:25.000000000","message":"Done","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":true,"context_lines":[{"line_number":508,"context_line":"            mount_command \u003d mount_template % {\u0027path\u0027: path}"},{"line_number":509,"context_line":"            unmount_command \u003d unmount_template % {\u0027path\u0027: path}"},{"line_number":510,"context_line":"            utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":511,"context_line":"            for filename in os.listdir(path):"},{"line_number":512,"context_line":"                if filename in CONF.backup_ignore_files:"},{"line_number":513,"context_line":"                    continue"},{"line_number":514,"context_line":"                file_path \u003d os.path.join(path, filename)"}],"source_content_type":"text/x-python","patch_set":45,"id":"00119c9c_2a9e84f7","line":511,"range":{"start_line":511,"start_character":39,"end_line":511,"end_character":43},"updated":"2023-06-08 02:14:52.000000000","message":"backup_folder\n\nTo repeat the above example, this should be /tmp/456/456/, otherwise, all backup directories may be deleted","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b169c54de9684f361cec4c1e89b7d6b44e5504bd","unresolved":true,"context_lines":[{"line_number":508,"context_line":"            mount_command \u003d mount_template % {\u0027path\u0027: path}"},{"line_number":509,"context_line":"            unmount_command \u003d unmount_template % {\u0027path\u0027: path}"},{"line_number":510,"context_line":"            utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":511,"context_line":"            for filename in os.listdir(path):"},{"line_number":512,"context_line":"                if filename in CONF.backup_ignore_files:"},{"line_number":513,"context_line":"                    continue"},{"line_number":514,"context_line":"                file_path \u003d os.path.join(path, filename)"}],"source_content_type":"text/x-python","patch_set":45,"id":"08aa9e36_60cb9a70","line":511,"range":{"start_line":511,"start_character":39,"end_line":511,"end_character":43},"in_reply_to":"00119c9c_2a9e84f7","updated":"2023-06-08 12:01:25.000000000","message":"If /tmp is backup mount tmp location and /tmp/456 is backup location, On delete, it will delete /tmp/456. Why you think all backup directories may be deleted ?","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"57e720a9b16229c9dbc588e30532183a5fedf8c8","unresolved":true,"context_lines":[{"line_number":508,"context_line":"            mount_command \u003d mount_template % {\u0027path\u0027: path}"},{"line_number":509,"context_line":"            unmount_command \u003d unmount_template % {\u0027path\u0027: path}"},{"line_number":510,"context_line":"            utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":511,"context_line":"            for filename in os.listdir(path):"},{"line_number":512,"context_line":"                if filename in CONF.backup_ignore_files:"},{"line_number":513,"context_line":"                    continue"},{"line_number":514,"context_line":"                file_path \u003d os.path.join(path, filename)"}],"source_content_type":"text/x-python","patch_set":45,"id":"a4efb874_55cfc229","line":511,"range":{"start_line":511,"start_character":39,"end_line":511,"end_character":43},"in_reply_to":"08aa9e36_60cb9a70","updated":"2023-06-09 07:17:45.000000000","message":"/tmp is an important directory for storing temporary files in linux, so /tmp cannot be used as a mount point directly. Otherwise, temporary files generated by the system will fall into the backup NFS instead of the local host. In addition, you can see that line 500 of the code, we use /tmp/backup_id/ as the mount point, after mounting, you can enter the mount point to see all directories named with backup id.\n\nin this case, after mount backup NFS,\n#  cd /tmp/456\n#  ls\n456 789 010","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9238b6fa26c56034629c61f469aa550e6ff235a","unresolved":false,"context_lines":[{"line_number":508,"context_line":"            mount_command \u003d mount_template % {\u0027path\u0027: path}"},{"line_number":509,"context_line":"            unmount_command \u003d unmount_template % {\u0027path\u0027: path}"},{"line_number":510,"context_line":"            utils.execute(*(mount_command.split()), run_as_root\u003dTrue)"},{"line_number":511,"context_line":"            for filename in os.listdir(path):"},{"line_number":512,"context_line":"                if filename in CONF.backup_ignore_files:"},{"line_number":513,"context_line":"                    continue"},{"line_number":514,"context_line":"                file_path \u003d os.path.join(path, filename)"}],"source_content_type":"text/x-python","patch_set":45,"id":"771a7dcc_f0b2a7c3","line":511,"range":{"start_line":511,"start_character":39,"end_line":511,"end_character":43},"in_reply_to":"a4efb874_55cfc229","updated":"2023-06-09 07:55:49.000000000","message":"Done","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":true,"context_lines":[{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        mount_info \u003d self._get_share_mount_info(share_instance)"},{"line_number":590,"context_line":"        src_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        try:"},{"line_number":593,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":594,"context_line":"                os.path.join(backup_mount_path, backup[\u0027id\u0027]),"}],"source_content_type":"text/x-python","patch_set":45,"id":"7cb03a94_1656f10d","line":591,"updated":"2023-06-08 02:14:52.000000000","message":"add new line code:\n\n    src_backup_mount_point \u003d os.path.join(backup_mount_path, backup[\u0027id\u0027])\n    backup_folder \u003d os.path.join(src_backup_mount_point, backup[\u0027id\u0027])","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9238b6fa26c56034629c61f469aa550e6ff235a","unresolved":false,"context_lines":[{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        mount_info \u003d self._get_share_mount_info(share_instance)"},{"line_number":590,"context_line":"        src_backup_info \u003d self.backup_driver.get_backup_info(backup)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        try:"},{"line_number":593,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":594,"context_line":"                os.path.join(backup_mount_path, backup[\u0027id\u0027]),"}],"source_content_type":"text/x-python","patch_set":45,"id":"e81bef5b_49e660a7","line":591,"in_reply_to":"7cb03a94_1656f10d","updated":"2023-06-09 07:55:49.000000000","message":"Done","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":true,"context_lines":[{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        try:"},{"line_number":593,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":594,"context_line":"                os.path.join(backup_mount_path, backup[\u0027id\u0027]),"},{"line_number":595,"context_line":"                os.path.join(mount_path, share_instance_id),"},{"line_number":596,"context_line":"                ignore_list)"},{"line_number":597,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"94800215_290a42c1","line":594,"range":{"start_line":594,"start_character":16,"end_line":594,"end_character":61},"updated":"2023-06-08 02:14:52.000000000","message":"backup_folder","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9238b6fa26c56034629c61f469aa550e6ff235a","unresolved":false,"context_lines":[{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        try:"},{"line_number":593,"context_line":"            copy \u003d data_utils.Copy("},{"line_number":594,"context_line":"                os.path.join(backup_mount_path, backup[\u0027id\u0027]),"},{"line_number":595,"context_line":"                os.path.join(mount_path, share_instance_id),"},{"line_number":596,"context_line":"                ignore_list)"},{"line_number":597,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"b05bad9a_f01c3b78","line":594,"range":{"start_line":594,"start_character":16,"end_line":594,"end_character":61},"in_reply_to":"94800215_290a42c1","updated":"2023-06-09 07:55:49.000000000","message":"Done","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f040f1e7a98362467d9bfdf3ac81197f90693fc8","unresolved":true,"context_lines":[{"line_number":602,"context_line":"                \u0027backup_id\u0027: backup[\u0027id\u0027],"},{"line_number":603,"context_line":"                \u0027mount\u0027: src_backup_info[\u0027mount\u0027],"},{"line_number":604,"context_line":"                \u0027unmount\u0027: src_backup_info[\u0027unmount\u0027],"},{"line_number":605,"context_line":"                \u0027mount_point\u0027: os.path.join(backup_mount_path, backup[\u0027id\u0027]),"},{"line_number":606,"context_line":"                \u0027access_mapping\u0027: access_mapping"},{"line_number":607,"context_line":"            }"},{"line_number":608,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"cd61b40d_bc8705fc","line":605,"range":{"start_line":605,"start_character":31,"end_line":605,"end_character":76},"updated":"2023-06-08 02:14:52.000000000","message":"src_backup_mount_point","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d9238b6fa26c56034629c61f469aa550e6ff235a","unresolved":false,"context_lines":[{"line_number":602,"context_line":"                \u0027backup_id\u0027: backup[\u0027id\u0027],"},{"line_number":603,"context_line":"                \u0027mount\u0027: src_backup_info[\u0027mount\u0027],"},{"line_number":604,"context_line":"                \u0027unmount\u0027: src_backup_info[\u0027unmount\u0027],"},{"line_number":605,"context_line":"                \u0027mount_point\u0027: os.path.join(backup_mount_path, backup[\u0027id\u0027]),"},{"line_number":606,"context_line":"                \u0027access_mapping\u0027: access_mapping"},{"line_number":607,"context_line":"            }"},{"line_number":608,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"71bb7b6a_de4983e7","line":605,"range":{"start_line":605,"start_character":31,"end_line":605,"end_character":76},"in_reply_to":"cd61b40d_bc8705fc","updated":"2023-06-09 07:55:49.000000000","message":"Done","commit_id":"69b1173c076b43678056508d3788acd04032abff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ef4f5dbdec341026255d36448d750cb19fb2afde","unresolved":true,"context_lines":[{"line_number":502,"context_line":"            backup_mount_path \u003d CONF.backup_mount_tmp_location"},{"line_number":503,"context_line":"            mount_point \u003d os.path.join(backup_mount_path, backup[\u0027id\u0027])"},{"line_number":504,"context_line":"            backup_folder \u003d os.path.join(mount_point, backup[\u0027id\u0027])"},{"line_number":505,"context_line":"            if not os.path.exists(backup_folder):"},{"line_number":506,"context_line":"                os.makedirs(backup_folder)"},{"line_number":507,"context_line":"            if not os.path.exists(backup_folder):"},{"line_number":508,"context_line":"                raise exception.NotFound(\"Path %s could not be \""},{"line_number":509,"context_line":"                                         \"found.\" % backup_folder)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"            mount_template \u003d dest_backup_info[\u0027mount\u0027]"},{"line_number":512,"context_line":"            unmount_template \u003d dest_backup_info[\u0027unmount\u0027]"}],"source_content_type":"text/x-python","patch_set":47,"id":"c94a84f1_01493eed","line":509,"range":{"start_line":505,"start_character":12,"end_line":509,"end_character":66},"updated":"2023-06-12 01:33:29.000000000","message":"we just need to make sure mount point exists before execute mount.\n\n    if not os.path.exists(mount_point):\n        os.makedirs(mount_point)\n        if not os.path.exists(mount_point):\n            raise exception.NotFound(\"Mount point %s failed to \"\n                                     \"create.\" % mount_point)","commit_id":"e706558ab678d02227311cafa341eb86c44a13d4"},{"author":{"_account_id":35507,"name":"Kiran Pawar","email":"kiranpawarpict2010@gmail.com","username":"kpawar"},"change_message_id":"68e40028eb0339587cb4f2ca8b43ae07767fea8a","unresolved":false,"context_lines":[{"line_number":502,"context_line":"            backup_mount_path \u003d CONF.backup_mount_tmp_location"},{"line_number":503,"context_line":"            mount_point \u003d os.path.join(backup_mount_path, backup[\u0027id\u0027])"},{"line_number":504,"context_line":"            backup_folder \u003d os.path.join(mount_point, backup[\u0027id\u0027])"},{"line_number":505,"context_line":"            if not os.path.exists(backup_folder):"},{"line_number":506,"context_line":"                os.makedirs(backup_folder)"},{"line_number":507,"context_line":"            if not os.path.exists(backup_folder):"},{"line_number":508,"context_line":"                raise exception.NotFound(\"Path %s could not be \""},{"line_number":509,"context_line":"                                         \"found.\" % backup_folder)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"            mount_template \u003d dest_backup_info[\u0027mount\u0027]"},{"line_number":512,"context_line":"            unmount_template \u003d dest_backup_info[\u0027unmount\u0027]"}],"source_content_type":"text/x-python","patch_set":47,"id":"aeb0c674_c2d065de","line":509,"range":{"start_line":505,"start_character":12,"end_line":509,"end_character":66},"in_reply_to":"c94a84f1_01493eed","updated":"2023-06-12 03:11:38.000000000","message":"Done","commit_id":"e706558ab678d02227311cafa341eb86c44a13d4"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"4e7b3f34b306195e932e3847089ec889d051e309","unresolved":true,"context_lines":[{"line_number":492,"context_line":"        finally:"},{"line_number":493,"context_line":"            self.busy_tasks_shares.pop(share[\u0027id\u0027], None)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def delete_backup(self, context, backup):"},{"line_number":496,"context_line":"        backup_id \u003d backup[\u0027id\u0027]"},{"line_number":497,"context_line":"        LOG.info(\u0027Delete backup started, backup: %s.\u0027, backup_id)"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"b82d5f55_42952af5","line":495,"updated":"2023-06-20 15:27:25.000000000","message":"I think it\u0027s important to have unit test in this method, as it seems to me to be part of the feature core and last CI execution shows it is not covered [0].\n\n[0] https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_cff/343980/48/check/openstack-tox-cover/cffa99b/cover/d_fa647ede8f10d07c_manager_py.html#t498","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        finally:"},{"line_number":493,"context_line":"            self.busy_tasks_shares.pop(share[\u0027id\u0027], None)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def delete_backup(self, context, backup):"},{"line_number":496,"context_line":"        backup_id \u003d backup[\u0027id\u0027]"},{"line_number":497,"context_line":"        LOG.info(\u0027Delete backup started, backup: %s.\u0027, backup_id)"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"50794f0a_7206a03d","line":495,"in_reply_to":"b82d5f55_42952af5","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"4e7b3f34b306195e932e3847089ec889d051e309","unresolved":true,"context_lines":[{"line_number":553,"context_line":"        self.db.share_backup_delete(context, backup_id)"},{"line_number":554,"context_line":"        LOG.info(\"Share backup %s deleted successfully.\", backup_id)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"    def restore_backup(self, context, backup, share_id):"},{"line_number":557,"context_line":"        LOG.info(\u0027Restore backup started, backup: %(backup_id)s \u0027"},{"line_number":558,"context_line":"                 \u0027share: %(share_id)s.\u0027,"},{"line_number":559,"context_line":"                 {\u0027backup_id\u0027: backup[\u0027id\u0027], \u0027share_id\u0027: share_id})"}],"source_content_type":"text/x-python","patch_set":48,"id":"7ead554e_5222420d","line":556,"updated":"2023-06-20 15:27:25.000000000","message":"I think it\u0027s important to have unit test in this method, as it seems to me to be part of the feature core and last CI execution shows it is not covered [0].\n\n[0] https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_cff/343980/48/check/openstack-tox-cover/cffa99b/cover/d_fa647ede8f10d07c_manager_py.html#t559","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":553,"context_line":"        self.db.share_backup_delete(context, backup_id)"},{"line_number":554,"context_line":"        LOG.info(\"Share backup %s deleted successfully.\", backup_id)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"    def restore_backup(self, context, backup, share_id):"},{"line_number":557,"context_line":"        LOG.info(\u0027Restore backup started, backup: %(backup_id)s \u0027"},{"line_number":558,"context_line":"                 \u0027share: %(share_id)s.\u0027,"},{"line_number":559,"context_line":"                 {\u0027backup_id\u0027: backup[\u0027id\u0027], \u0027share_id\u0027: share_id})"}],"source_content_type":"text/x-python","patch_set":48,"id":"892a33f0_c05822e3","line":556,"in_reply_to":"7ead554e_5222420d","updated":"2023-08-01 02:23:01.000000000","message":"+1","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        self.db.share_backup_delete(context, backup_id)"},{"line_number":554,"context_line":"        LOG.info(\"Share backup %s deleted successfully.\", backup_id)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"    def restore_backup(self, context, backup, share_id):"},{"line_number":557,"context_line":"        LOG.info(\u0027Restore backup started, backup: %(backup_id)s \u0027"},{"line_number":558,"context_line":"                 \u0027share: %(share_id)s.\u0027,"},{"line_number":559,"context_line":"                 {\u0027backup_id\u0027: backup[\u0027id\u0027], \u0027share_id\u0027: share_id})"}],"source_content_type":"text/x-python","patch_set":48,"id":"fea56b5a_4fdf2839","line":556,"in_reply_to":"892a33f0_c05822e3","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":411,"context_line":"        path \u003d next((x[\u0027path\u0027] for x in share_instance[\u0027export_locations\u0027]"},{"line_number":412,"context_line":"                    if x[\u0027is_admin_only\u0027]), None)"},{"line_number":413,"context_line":"        if not path:"},{"line_number":414,"context_line":"            path \u003d share_instance[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        format_args \u003d {"},{"line_number":417,"context_line":"            \u0027proto\u0027: share_instance[\u0027share_proto\u0027].lower(),"}],"source_content_type":"text/x-python","patch_set":51,"id":"cf567b14_1e71fd0a","line":414,"range":{"start_line":414,"start_character":12,"end_line":414,"end_character":64},"updated":"2023-07-06 13:59:43.000000000","message":"you might consider as well checking if the share has an export location tagged as preferred\u003dTrue, I think that would be the ideal. If not, we should fall back to the other options","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"361f6275ebff77287daccc723d3dbcef59cb774e","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        path \u003d next((x[\u0027path\u0027] for x in share_instance[\u0027export_locations\u0027]"},{"line_number":412,"context_line":"                    if x[\u0027is_admin_only\u0027]), None)"},{"line_number":413,"context_line":"        if not path:"},{"line_number":414,"context_line":"            path \u003d share_instance[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        format_args \u003d {"},{"line_number":417,"context_line":"            \u0027proto\u0027: share_instance[\u0027share_proto\u0027].lower(),"}],"source_content_type":"text/x-python","patch_set":51,"id":"6255a7a3_4a83dd6d","line":414,"range":{"start_line":414,"start_character":12,"end_line":414,"end_character":64},"in_reply_to":"3a8c6c3e_276fb82e","updated":"2023-07-10 12:08:20.000000000","message":"yes, indeed preferred is not always present, but when it is we could have a performance enhancement. I\u0027d like to get more people opinion on this too :)","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"35cadebb754162f98ef14c4c41631fb7bc7608ea","unresolved":true,"context_lines":[{"line_number":411,"context_line":"        path \u003d next((x[\u0027path\u0027] for x in share_instance[\u0027export_locations\u0027]"},{"line_number":412,"context_line":"                    if x[\u0027is_admin_only\u0027]), None)"},{"line_number":413,"context_line":"        if not path:"},{"line_number":414,"context_line":"            path \u003d share_instance[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        format_args \u003d {"},{"line_number":417,"context_line":"            \u0027proto\u0027: share_instance[\u0027share_proto\u0027].lower(),"}],"source_content_type":"text/x-python","patch_set":51,"id":"54acef5a_1aa6d238","line":414,"range":{"start_line":414,"start_character":12,"end_line":414,"end_character":64},"in_reply_to":"3ed6c982_d54cb50f","updated":"2023-07-10 04:22:04.000000000","message":"Drivers may use this field (preferred) to identify which export locations are most efficient and should be used preferentially by clients. This may improve backup performance.  but it is not necessary. filtered admin is ok for me.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3974fa0cd2c8073bad54eecf8eac802d2162f141","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        path \u003d next((x[\u0027path\u0027] for x in share_instance[\u0027export_locations\u0027]"},{"line_number":412,"context_line":"                    if x[\u0027is_admin_only\u0027]), None)"},{"line_number":413,"context_line":"        if not path:"},{"line_number":414,"context_line":"            path \u003d share_instance[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        format_args \u003d {"},{"line_number":417,"context_line":"            \u0027proto\u0027: share_instance[\u0027share_proto\u0027].lower(),"}],"source_content_type":"text/x-python","patch_set":51,"id":"3a8c6c3e_276fb82e","line":414,"range":{"start_line":414,"start_character":12,"end_line":414,"end_character":64},"in_reply_to":"54acef5a_1aa6d238","updated":"2023-07-10 06:48:23.000000000","message":"yes, this(NFS) is data path. Driver implementation would be different where we can go with preferred.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":true,"context_lines":[{"line_number":411,"context_line":"        path \u003d next((x[\u0027path\u0027] for x in share_instance[\u0027export_locations\u0027]"},{"line_number":412,"context_line":"                    if x[\u0027is_admin_only\u0027]), None)"},{"line_number":413,"context_line":"        if not path:"},{"line_number":414,"context_line":"            path \u003d share_instance[\u0027export_locations\u0027][0][\u0027path\u0027]"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        format_args \u003d {"},{"line_number":417,"context_line":"            \u0027proto\u0027: share_instance[\u0027share_proto\u0027].lower(),"}],"source_content_type":"text/x-python","patch_set":51,"id":"3ed6c982_d54cb50f","line":414,"range":{"start_line":414,"start_character":12,"end_line":414,"end_character":64},"in_reply_to":"cf567b14_1e71fd0a","updated":"2023-07-07 13:35:25.000000000","message":"i dont think, we need it as preferred is not always present and we have already filtered admin path. I dont see use somewhere else.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":64,"context_line":"    cfg.ListOpt("},{"line_number":65,"context_line":"        \u0027backup_ignore_files\u0027,"},{"line_number":66,"context_line":"        default\u003d[\u0027lost+found\u0027],"},{"line_number":67,"context_line":"        help\u003d\"List of files and folders to be ignored when backuping shares. \""},{"line_number":68,"context_line":"             \"Items should be names (not including any path).\"),"},{"line_number":69,"context_line":"    cfg.DictOpt("},{"line_number":70,"context_line":"        \u0027backup_protocol_access_mapping\u0027,"}],"source_content_type":"text/x-python","patch_set":57,"id":"97cb709c_543504dd","line":67,"range":{"start_line":67,"start_character":59,"end_line":67,"end_character":68},"updated":"2023-08-01 02:23:01.000000000","message":"nit: backing up","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    cfg.ListOpt("},{"line_number":65,"context_line":"        \u0027backup_ignore_files\u0027,"},{"line_number":66,"context_line":"        default\u003d[\u0027lost+found\u0027],"},{"line_number":67,"context_line":"        help\u003d\"List of files and folders to be ignored when backuping shares. \""},{"line_number":68,"context_line":"             \"Items should be names (not including any path).\"),"},{"line_number":69,"context_line":"    cfg.DictOpt("},{"line_number":70,"context_line":"        \u0027backup_protocol_access_mapping\u0027,"}],"source_content_type":"text/x-python","patch_set":57,"id":"0c3873f9_117790e2","line":67,"range":{"start_line":67,"start_character":59,"end_line":67,"end_character":68},"in_reply_to":"97cb709c_543504dd","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d40fc35036c5b32bea269698e2d2550f4bb0b05","unresolved":true,"context_lines":[{"line_number":423,"context_line":"            backup_id \u003d backup[\u0027id\u0027]"},{"line_number":424,"context_line":"            share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":425,"context_line":"            result \u003d {}"},{"line_number":426,"context_line":"            try:"},{"line_number":427,"context_line":"                result \u003d self.data_copy_get_progress(context, share_id)"},{"line_number":428,"context_line":"            except Exception:"},{"line_number":429,"context_line":"                LOG.warning(\"Failed to get progress of share %(share)s \""},{"line_number":430,"context_line":"                            \"backing up in share_backup %(backup).\","},{"line_number":431,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":432,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":433,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":434,"context_line":"                                        {\u0027progress\u0027: progress})"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"            if progress \u003d\u003d \u0027100\u0027:"},{"line_number":437,"context_line":"                self.db.share_update("}],"source_content_type":"text/x-python","patch_set":58,"id":"1c138e97_61d938cc","line":434,"range":{"start_line":426,"start_character":12,"end_line":434,"end_character":63},"updated":"2023-08-08 07:04:18.000000000","message":"if backup share with self.share_rpcapi.create_backup(context, backup_ref).\nthat means share_topic specified by user.\nthen here periodic_task result \u003d self.data_copy_get_progress(context, share_id) will raise InvalidShare.\nresult \u003d self.driver.create_backup_continue(context, share_instance, backup)\nin share/manager.py will return total_progress and update backup in db.\n\nso here we can not update progress to 0.\ni think here should be:\n\n            try:\n                result \u003d self.data_copy_get_progress(context, share_id)\n            except Exception:\n                LOG.warning(\"Failed to get progress of share %(share)s \"\n                            \"backing up in share_backup %(backup).\",\n                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})\n            if result:\n                progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)\n                self.db.share_backup_update(context, backup_id,\n                                            {\u0027progress\u0027: progress})\n\n                if progress \u003d\u003d \u0027100\u0027:\n                    self.db.share_update(\n                        context, share_id,\n                        {\u0027status\u0027: constants.STATUS_AVAILABLE})\n                    self.db.share_backup_update(\n                        context, backup_id,\n                        {\u0027status\u0027: constants.STATUS_AVAILABLE})\n                    LOG.info(\"Share backup %s created successfully.\", backup_id)","commit_id":"4c6394e479ce4ea0af8fda5a8b57ace4ad9e252b"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f6d25780cbf3e055a9a2d693f4b983b152c3716e","unresolved":true,"context_lines":[{"line_number":423,"context_line":"            backup_id \u003d backup[\u0027id\u0027]"},{"line_number":424,"context_line":"            share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":425,"context_line":"            result \u003d {}"},{"line_number":426,"context_line":"            try:"},{"line_number":427,"context_line":"                result \u003d self.data_copy_get_progress(context, share_id)"},{"line_number":428,"context_line":"            except Exception:"},{"line_number":429,"context_line":"                LOG.warning(\"Failed to get progress of share %(share)s \""},{"line_number":430,"context_line":"                            \"backing up in share_backup %(backup).\","},{"line_number":431,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":432,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":433,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":434,"context_line":"                                        {\u0027progress\u0027: progress})"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"            if progress \u003d\u003d \u0027100\u0027:"},{"line_number":437,"context_line":"                self.db.share_update("}],"source_content_type":"text/x-python","patch_set":58,"id":"e21b324e_c85f4d4e","line":434,"range":{"start_line":426,"start_character":12,"end_line":434,"end_character":63},"in_reply_to":"1c138e97_61d938cc","updated":"2023-08-08 09:43:22.000000000","message":"or we can do this: \nif backup not copy data by data/manager, we need skip to update backup.\n\n    for backup in backups:\n            if backup[\u0027status\u0027] !\u003d constants.STATUS_CREATING:\n                continue\n            if backup[\u0027topic\u0027] !\u003d CONF.data_topic:\n                continue","commit_id":"4c6394e479ce4ea0af8fda5a8b57ace4ad9e252b"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a498e3776b7c9d2a5e3033ccb02613451577caf2","unresolved":false,"context_lines":[{"line_number":423,"context_line":"            backup_id \u003d backup[\u0027id\u0027]"},{"line_number":424,"context_line":"            share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":425,"context_line":"            result \u003d {}"},{"line_number":426,"context_line":"            try:"},{"line_number":427,"context_line":"                result \u003d self.data_copy_get_progress(context, share_id)"},{"line_number":428,"context_line":"            except Exception:"},{"line_number":429,"context_line":"                LOG.warning(\"Failed to get progress of share %(share)s \""},{"line_number":430,"context_line":"                            \"backing up in share_backup %(backup).\","},{"line_number":431,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":432,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":433,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":434,"context_line":"                                        {\u0027progress\u0027: progress})"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"            if progress \u003d\u003d \u0027100\u0027:"},{"line_number":437,"context_line":"                self.db.share_update("}],"source_content_type":"text/x-python","patch_set":58,"id":"7c7dceda_b1ac2aef","line":434,"range":{"start_line":426,"start_character":12,"end_line":434,"end_character":63},"in_reply_to":"e21b324e_c85f4d4e","updated":"2023-08-08 10:46:37.000000000","message":"Done","commit_id":"4c6394e479ce4ea0af8fda5a8b57ace4ad9e252b"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d40fc35036c5b32bea269698e2d2550f4bb0b05","unresolved":true,"context_lines":[{"line_number":647,"context_line":"                LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":648,"context_line":"                            \"%(backup)s restoring in share %(share).\","},{"line_number":649,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":650,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":651,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":652,"context_line":"                                        {\u0027restore_progress\u0027: progress})"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"            if progress \u003d\u003d \u0027100\u0027:"},{"line_number":655,"context_line":"                self.db.share_update("}],"source_content_type":"text/x-python","patch_set":58,"id":"28948548_ecfb77fa","line":652,"range":{"start_line":650,"start_character":12,"end_line":652,"end_character":71},"updated":"2023-08-08 07:04:18.000000000","message":"same above. if raise should not update total_progress to 0.","commit_id":"4c6394e479ce4ea0af8fda5a8b57ace4ad9e252b"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a498e3776b7c9d2a5e3033ccb02613451577caf2","unresolved":false,"context_lines":[{"line_number":647,"context_line":"                LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":648,"context_line":"                            \"%(backup)s restoring in share %(share).\","},{"line_number":649,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":650,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":651,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":652,"context_line":"                                        {\u0027restore_progress\u0027: progress})"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"            if progress \u003d\u003d \u0027100\u0027:"},{"line_number":655,"context_line":"                self.db.share_update("}],"source_content_type":"text/x-python","patch_set":58,"id":"a7cfb6d4_b89b3540","line":652,"range":{"start_line":650,"start_character":12,"end_line":652,"end_character":71},"in_reply_to":"28948548_ecfb77fa","updated":"2023-08-08 10:46:37.000000000","message":"Done","commit_id":"4c6394e479ce4ea0af8fda5a8b57ace4ad9e252b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":414,"context_line":"    @periodic_task.periodic_task("},{"line_number":415,"context_line":"        spacing\u003dCONF.backup_continue_update_interval)"},{"line_number":416,"context_line":"    def create_backup_continue(self, context):"},{"line_number":417,"context_line":"        backups \u003d self.db.share_backups_get_all(context)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        for backup in backups:"},{"line_number":420,"context_line":"            if backup[\u0027status\u0027] !\u003d constants.STATUS_CREATING:"}],"source_content_type":"text/x-python","patch_set":59,"id":"36710865_4a7343ee","line":417,"range":{"start_line":417,"start_character":26,"end_line":417,"end_character":56},"updated":"2023-08-10 01:59:23.000000000","message":"please filter by specific host and status.. this host only supports one topic, so no need to filter by that, you can avoid checking on lines 422-423","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":414,"context_line":"    @periodic_task.periodic_task("},{"line_number":415,"context_line":"        spacing\u003dCONF.backup_continue_update_interval)"},{"line_number":416,"context_line":"    def create_backup_continue(self, context):"},{"line_number":417,"context_line":"        backups \u003d self.db.share_backups_get_all(context)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        for backup in backups:"},{"line_number":420,"context_line":"            if backup[\u0027status\u0027] !\u003d constants.STATUS_CREATING:"}],"source_content_type":"text/x-python","patch_set":59,"id":"76c46a68_aa8ee123","line":417,"range":{"start_line":417,"start_character":26,"end_line":417,"end_character":56},"in_reply_to":"173246ee_a5f4ebc2","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e7032aa02d19d33f59de82abbdb71524ce17d5e0","unresolved":true,"context_lines":[{"line_number":414,"context_line":"    @periodic_task.periodic_task("},{"line_number":415,"context_line":"        spacing\u003dCONF.backup_continue_update_interval)"},{"line_number":416,"context_line":"    def create_backup_continue(self, context):"},{"line_number":417,"context_line":"        backups \u003d self.db.share_backups_get_all(context)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        for backup in backups:"},{"line_number":420,"context_line":"            if backup[\u0027status\u0027] !\u003d constants.STATUS_CREATING:"}],"source_content_type":"text/x-python","patch_set":59,"id":"173246ee_a5f4ebc2","line":417,"range":{"start_line":417,"start_character":26,"end_line":417,"end_character":56},"in_reply_to":"36710865_4a7343ee","updated":"2023-08-10 07:20:56.000000000","message":"data_topic is copied by manila/data after mounting. This backup mode is a universal backup mode that is supported by any share. share_topic must be backed up in a way that requires back-end driver support. A share that supports share_topic must also support data_topic. Then a host can support both types of topics. We can\u0027t ignore topic filtering.","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":625,"context_line":"    @periodic_task.periodic_task("},{"line_number":626,"context_line":"        spacing\u003dCONF.restore_continue_update_interval)"},{"line_number":627,"context_line":"    def restore_backup_continue(self, context):"},{"line_number":628,"context_line":"        shares \u003d self.db.share_get_all(context)"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        for share in shares:"},{"line_number":631,"context_line":"            backup_id \u003d share.get(\u0027source_backup_id\u0027)"}],"source_content_type":"text/x-python","patch_set":59,"id":"3c297ae8_93ab7600","line":628,"range":{"start_line":628,"start_character":17,"end_line":628,"end_character":47},"updated":"2023-08-10 01:59:23.000000000","message":"same comment as in the share manager; please invert this query.. share_get_all is too expensive a query; instead, get backups specific to this host, and with status\u003d\u003d\"restoring\" instead and grab the share inside an iterative processing of backups..","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":625,"context_line":"    @periodic_task.periodic_task("},{"line_number":626,"context_line":"        spacing\u003dCONF.restore_continue_update_interval)"},{"line_number":627,"context_line":"    def restore_backup_continue(self, context):"},{"line_number":628,"context_line":"        shares \u003d self.db.share_get_all(context)"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        for share in shares:"},{"line_number":631,"context_line":"            backup_id \u003d share.get(\u0027source_backup_id\u0027)"}],"source_content_type":"text/x-python","patch_set":59,"id":"204454f4_9dfb5ca7","line":628,"range":{"start_line":628,"start_character":17,"end_line":628,"end_character":47},"in_reply_to":"3c297ae8_93ab7600","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2d059f1d483f53cd84cc2272c2a8d0765cb59ee9","unresolved":true,"context_lines":[{"line_number":414,"context_line":"    @periodic_task.periodic_task("},{"line_number":415,"context_line":"        spacing\u003dCONF.backup_continue_update_interval)"},{"line_number":416,"context_line":"    def create_backup_continue(self, context):"},{"line_number":417,"context_line":"        filters \u003d {\u0027status\u0027: constants.STATUS_CREATING,"},{"line_number":418,"context_line":"                   \u0027host\u0027: self.host,"},{"line_number":419,"context_line":"                   \u0027topic\u0027: CONF.data_topic}"},{"line_number":420,"context_line":"        backups \u003d self.db.share_backups_get_all(context, filters)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        for backup in backups:"}],"source_content_type":"text/x-python","patch_set":60,"id":"776a3513_3ffce942","line":419,"range":{"start_line":417,"start_character":18,"end_line":419,"end_character":44},"updated":"2023-08-11 02:04:47.000000000","message":"please use appropriate dict formatting: https://docs.openstack.org/hacking/latest/user/hacking.html#dictionaries-lists","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"68a53753936e82d6ca5a48c230f4488baf0a2854","unresolved":false,"context_lines":[{"line_number":414,"context_line":"    @periodic_task.periodic_task("},{"line_number":415,"context_line":"        spacing\u003dCONF.backup_continue_update_interval)"},{"line_number":416,"context_line":"    def create_backup_continue(self, context):"},{"line_number":417,"context_line":"        filters \u003d {\u0027status\u0027: constants.STATUS_CREATING,"},{"line_number":418,"context_line":"                   \u0027host\u0027: self.host,"},{"line_number":419,"context_line":"                   \u0027topic\u0027: CONF.data_topic}"},{"line_number":420,"context_line":"        backups \u003d self.db.share_backups_get_all(context, filters)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        for backup in backups:"}],"source_content_type":"text/x-python","patch_set":60,"id":"36baa108_203abf61","line":419,"range":{"start_line":417,"start_character":18,"end_line":419,"end_character":44},"in_reply_to":"776a3513_3ffce942","updated":"2024-02-06 14:09:24.000000000","message":"Done","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2d059f1d483f53cd84cc2272c2a8d0765cb59ee9","unresolved":true,"context_lines":[{"line_number":636,"context_line":"        for backup in backups:"},{"line_number":637,"context_line":"            backup_id \u003d backup[\u0027id\u0027]"},{"line_number":638,"context_line":"            try:"},{"line_number":639,"context_line":"                filters \u003d {\u0027source_backup_id\u0027: backup_id}"},{"line_number":640,"context_line":"                shares \u003d self.db.share_get_all(context, filters)"},{"line_number":641,"context_line":"            except Exception:"},{"line_number":642,"context_line":"                LOG.warning(\u0027Failed to get shares for backup %s\u0027, backup_id)"}],"source_content_type":"text/x-python","patch_set":60,"id":"4a96c42f_fc171241","line":639,"range":{"start_line":639,"start_character":26,"end_line":639,"end_character":57},"updated":"2023-08-11 02:04:47.000000000","message":"why not add \"status\" \u003d\u003d \"restoring\" to the filtering here? \n\nalso, shouldn\u0027t there be at most one share that\u0027s restoring from a given backup?","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"68a53753936e82d6ca5a48c230f4488baf0a2854","unresolved":false,"context_lines":[{"line_number":636,"context_line":"        for backup in backups:"},{"line_number":637,"context_line":"            backup_id \u003d backup[\u0027id\u0027]"},{"line_number":638,"context_line":"            try:"},{"line_number":639,"context_line":"                filters \u003d {\u0027source_backup_id\u0027: backup_id}"},{"line_number":640,"context_line":"                shares \u003d self.db.share_get_all(context, filters)"},{"line_number":641,"context_line":"            except Exception:"},{"line_number":642,"context_line":"                LOG.warning(\u0027Failed to get shares for backup %s\u0027, backup_id)"}],"source_content_type":"text/x-python","patch_set":60,"id":"db1b8162_56df1853","line":639,"range":{"start_line":639,"start_character":26,"end_line":639,"end_character":57},"in_reply_to":"4a96c42f_fc171241","updated":"2024-02-06 14:09:24.000000000","message":"for the time being we support restore in original share. In future, we should allow restore to any share as long as certain conditions are met. Also, in use case of creating share from backup(similar to share from snapshot), we would create share and then trigger restore internally. So even if its at most one share now, it wont be in future.","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2d059f1d483f53cd84cc2272c2a8d0765cb59ee9","unresolved":true,"context_lines":[{"line_number":663,"context_line":"                        LOG.info(\"Share backup %s restored successfully.\","},{"line_number":664,"context_line":"                                 backup_id)"},{"line_number":665,"context_line":"                except Exception:"},{"line_number":666,"context_line":"                    LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":667,"context_line":"                                \"%(backup)s restoring in share %(share).\","},{"line_number":668,"context_line":"                                {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":669,"context_line":"                    self.db.share_update("}],"source_content_type":"text/x-python","patch_set":60,"id":"85cc3f6b_0d8dea47","line":666,"range":{"start_line":666,"start_character":24,"end_line":666,"end_character":31},"updated":"2023-08-11 02:04:47.000000000","message":"exception","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"68a53753936e82d6ca5a48c230f4488baf0a2854","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                        LOG.info(\"Share backup %s restored successfully.\","},{"line_number":664,"context_line":"                                 backup_id)"},{"line_number":665,"context_line":"                except Exception:"},{"line_number":666,"context_line":"                    LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":667,"context_line":"                                \"%(backup)s restoring in share %(share).\","},{"line_number":668,"context_line":"                                {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":669,"context_line":"                    self.db.share_update("}],"source_content_type":"text/x-python","patch_set":60,"id":"1000995a_4c23fa67","line":666,"range":{"start_line":666,"start_character":24,"end_line":666,"end_character":31},"in_reply_to":"85cc3f6b_0d8dea47","updated":"2024-02-06 14:09:24.000000000","message":"Done","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"}],"manila/data/rpcapi.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":35,"context_line":"              data_copy_get_progress()"},{"line_number":36,"context_line":"        1.1 - create_backup(),"},{"line_number":37,"context_line":"              delete_backup(),"},{"line_number":38,"context_line":"              restore_backup(),"},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_22be9bd4","line":38,"range":{"start_line":38,"start_character":30,"end_line":38,"end_character":31},"updated":"2016-07-22 21:54:24.000000000","message":"no comma","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":35,"context_line":"              data_copy_get_progress()"},{"line_number":36,"context_line":"        1.1 - create_backup(),"},{"line_number":37,"context_line":"              delete_backup(),"},{"line_number":38,"context_line":"              restore_backup(),"},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_83fa5f73","line":38,"range":{"start_line":38,"start_character":30,"end_line":38,"end_character":31},"in_reply_to":"dada55a8_22be9bd4","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"}],"manila/db/api.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    \u0027names.\u0027),"},{"line_number":60,"context_line":"    cfg.StrOpt(\u0027backup_name_template\u0027,"},{"line_number":61,"context_line":"               default\u003d\u0027backup-%s\u0027,"},{"line_number":62,"context_line":"               help\u003d\u0027Template string to be used to generate backup names\u0027),"},{"line_number":63,"context_line":"]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_66dcf9e4","line":62,"range":{"start_line":62,"start_character":72,"end_line":62,"end_character":73},"updated":"2016-08-22 09:29:32.000000000","message":"add tail period.","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    \u0027names.\u0027),"},{"line_number":60,"context_line":"    cfg.StrOpt(\u0027backup_name_template\u0027,"},{"line_number":61,"context_line":"               default\u003d\u0027backup-%s\u0027,"},{"line_number":62,"context_line":"               help\u003d\u0027Template string to be used to generate backup names\u0027),"},{"line_number":63,"context_line":"]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_2b6b9df2","line":62,"range":{"start_line":62,"start_character":72,"end_line":62,"end_character":73},"in_reply_to":"1ac06dbe_66dcf9e4","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1c934489e97ea15726afaea431225b0fb0d1c7dd","unresolved":true,"context_lines":[{"line_number":1211,"context_line":"    return IMPL.share_server_update(context, id, values)"},{"line_number":1212,"context_line":""},{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"def share_server_get(context, id):"},{"line_number":1215,"context_line":"    \"\"\"Get share server DB record by ID.\"\"\""},{"line_number":1216,"context_line":"    return IMPL.share_server_get(context, id)"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"def share_server_search_by_identifier(context, identifier):"},{"line_number":1220,"context_line":"    \"\"\"Search for share servers based on given identifier.\"\"\""},{"line_number":1221,"context_line":"    return IMPL.share_server_search_by_identifier("},{"line_number":1222,"context_line":"        context, identifier,"},{"line_number":1223,"context_line":"    )"},{"line_number":1224,"context_line":""},{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"def share_server_get_all_by_host_and_share_subnet_valid("},{"line_number":1227,"context_line":"    context, host, share_subnet_id,"},{"line_number":1228,"context_line":"):"},{"line_number":1229,"context_line":"    \"\"\"Get share server DB records by host and share net not error.\"\"\""},{"line_number":1230,"context_line":"    return IMPL.share_server_get_all_by_host_and_share_subnet_valid("},{"line_number":1231,"context_line":"        context, host, share_subnet_id,"},{"line_number":1232,"context_line":"    )"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"def share_server_get_all_by_host_and_share_subnet("},{"line_number":1236,"context_line":"    context, host, share_subnet_id,"},{"line_number":1237,"context_line":"):"},{"line_number":1238,"context_line":"    \"\"\"Get share server DB records by host and share net.\"\"\""},{"line_number":1239,"context_line":"    return IMPL.share_server_get_all_by_host_and_share_subnet("},{"line_number":1240,"context_line":"        context, host, share_subnet_id,"},{"line_number":1241,"context_line":"    )"},{"line_number":1242,"context_line":""},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"def share_server_get_all(context):"}],"source_content_type":"text/x-python","patch_set":44,"id":"14815763_b14806fa","line":1241,"range":{"start_line":1214,"start_character":4,"end_line":1241,"end_character":5},"updated":"2023-06-01 03:41:04.000000000","message":"Are these code changes related to the share backup feature?","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"26e6aa2c876c7d7894ba9ad8d28db03152cd6ec4","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"    return IMPL.share_server_update(context, id, values)"},{"line_number":1212,"context_line":""},{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"def share_server_get(context, id):"},{"line_number":1215,"context_line":"    \"\"\"Get share server DB record by ID.\"\"\""},{"line_number":1216,"context_line":"    return IMPL.share_server_get(context, id)"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"def share_server_search_by_identifier(context, identifier):"},{"line_number":1220,"context_line":"    \"\"\"Search for share servers based on given identifier.\"\"\""},{"line_number":1221,"context_line":"    return IMPL.share_server_search_by_identifier("},{"line_number":1222,"context_line":"        context, identifier,"},{"line_number":1223,"context_line":"    )"},{"line_number":1224,"context_line":""},{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"def share_server_get_all_by_host_and_share_subnet_valid("},{"line_number":1227,"context_line":"    context, host, share_subnet_id,"},{"line_number":1228,"context_line":"):"},{"line_number":1229,"context_line":"    \"\"\"Get share server DB records by host and share net not error.\"\"\""},{"line_number":1230,"context_line":"    return IMPL.share_server_get_all_by_host_and_share_subnet_valid("},{"line_number":1231,"context_line":"        context, host, share_subnet_id,"},{"line_number":1232,"context_line":"    )"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"def share_server_get_all_by_host_and_share_subnet("},{"line_number":1236,"context_line":"    context, host, share_subnet_id,"},{"line_number":1237,"context_line":"):"},{"line_number":1238,"context_line":"    \"\"\"Get share server DB records by host and share net.\"\"\""},{"line_number":1239,"context_line":"    return IMPL.share_server_get_all_by_host_and_share_subnet("},{"line_number":1240,"context_line":"        context, host, share_subnet_id,"},{"line_number":1241,"context_line":"    )"},{"line_number":1242,"context_line":""},{"line_number":1243,"context_line":""},{"line_number":1244,"context_line":"def share_server_get_all(context):"}],"source_content_type":"text/x-python","patch_set":44,"id":"458d6152_817d7e1f","line":1241,"range":{"start_line":1214,"start_character":4,"end_line":1241,"end_character":5},"in_reply_to":"14815763_b14806fa","updated":"2023-06-01 03:44:38.000000000","message":"I misread it. Please ignore it. :)","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"}],"manila/db/migrations/alembic/versions/5f3fac1xs03e_add_backup.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\"Add backup attributes."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Revision ID: 5f3fac1xs03e"},{"line_number":18,"context_line":"Revises: fdfb668d19e1"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_d89b3071","line":15,"range":{"start_line":15,"start_character":14,"end_line":15,"end_character":24},"updated":"2016-07-22 21:54:24.000000000","message":"table","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\"Add backup attributes."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Revision ID: 5f3fac1xs03e"},{"line_number":18,"context_line":"Revises: fdfb668d19e1"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_c34737ba","line":15,"range":{"start_line":15,"start_character":14,"end_line":15,"end_character":24},"in_reply_to":"dada55a8_d89b3071","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            sa.Column(\u0027store\u0027, sa.String(255)),"},{"line_number":60,"context_line":"            sa.Column(\u0027size\u0027, sa.Integer),"},{"line_number":61,"context_line":"            sa.Column(\u0027share_id\u0027, sa.String(36),"},{"line_number":62,"context_line":"                      sa.ForeignKey(\u0027shares.id\u0027, name\u003d\"sel_id_fk\")),"},{"line_number":63,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":64,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"},{"line_number":65,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_9878982d","line":62,"range":{"start_line":62,"start_character":55,"end_line":62,"end_character":58},"updated":"2016-07-22 21:54:24.000000000","message":"doesn\u0027t \"sel\" mean \"share export locations\"?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            sa.Column(\u0027store\u0027, sa.String(255)),"},{"line_number":60,"context_line":"            sa.Column(\u0027size\u0027, sa.Integer),"},{"line_number":61,"context_line":"            sa.Column(\u0027share_id\u0027, sa.String(36),"},{"line_number":62,"context_line":"                      sa.ForeignKey(\u0027shares.id\u0027, name\u003d\"sel_id_fk\")),"},{"line_number":63,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":64,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"},{"line_number":65,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_c3fa9742","line":62,"range":{"start_line":62,"start_character":55,"end_line":62,"end_character":58},"in_reply_to":"dada55a8_9878982d","updated":"2016-08-01 11:46:16.000000000","message":":D  \n\nDone","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"    except Exception:"},{"line_number":67,"context_line":"        LOG.error(_LE(\"Table |%s| not created!\"),"},{"line_number":68,"context_line":"                  share_backups_table_name)"},{"line_number":69,"context_line":"        raise"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_f8755432","line":67,"range":{"start_line":67,"start_character":45,"end_line":67,"end_character":46},"updated":"2016-07-22 21:54:24.000000000","message":":O","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"    except Exception:"},{"line_number":67,"context_line":"        LOG.error(_LE(\"Table |%s| not created!\"),"},{"line_number":68,"context_line":"                  share_backups_table_name)"},{"line_number":69,"context_line":"        raise"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_63dacbe9","line":67,"range":{"start_line":67,"start_character":45,"end_line":67,"end_character":46},"in_reply_to":"dada55a8_f8755432","updated":"2016-08-01 11:46:16.000000000","message":":O ?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    try:"},{"line_number":75,"context_line":"        op.drop_table(share_backups_table_name)"},{"line_number":76,"context_line":"    except Exception:"},{"line_number":77,"context_line":"        LOG.error(_LE(\"%s table not dropped\"), share_backups_table_name)"},{"line_number":78,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_388ecc27","line":77,"range":{"start_line":77,"start_character":42,"end_line":77,"end_character":44},"updated":"2016-07-22 21:54:24.000000000","message":"period","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    try:"},{"line_number":75,"context_line":"        op.drop_table(share_backups_table_name)"},{"line_number":76,"context_line":"    except Exception:"},{"line_number":77,"context_line":"        LOG.error(_LE(\"%s table not dropped\"), share_backups_table_name)"},{"line_number":78,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_430a277a","line":77,"range":{"start_line":77,"start_character":42,"end_line":77,"end_character":44},"in_reply_to":"dada55a8_388ecc27","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def downgrade():"},{"line_number":73,"context_line":"    \"\"\"Remove replication attributes from Shares and ShareInstances.\"\"\""},{"line_number":74,"context_line":"    try:"},{"line_number":75,"context_line":"        op.drop_table(share_backups_table_name)"},{"line_number":76,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_e9827a51","line":73,"updated":"2016-08-22 09:29:32.000000000","message":"update this doc","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def downgrade():"},{"line_number":73,"context_line":"    \"\"\"Remove replication attributes from Shares and ShareInstances.\"\"\""},{"line_number":74,"context_line":"    try:"},{"line_number":75,"context_line":"        op.drop_table(share_backups_table_name)"},{"line_number":76,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_2b427d68","line":73,"in_reply_to":"1ac06dbe_e9827a51","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"}],"manila/db/migrations/alembic/versions/9afbe2df4945_add_backup.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":65,"context_line":"                  share_backups_table_name)"},{"line_number":66,"context_line":"        raise"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    op.add_column("},{"line_number":69,"context_line":"        \u0027shares\u0027,"},{"line_number":70,"context_line":"        sa.Column(\u0027source_backup_id\u0027, sa.String(36), nullable\u003dTrue))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def downgrade():"}],"source_content_type":"text/x-python","patch_set":51,"id":"08840fc3_21efa224","line":70,"range":{"start_line":68,"start_character":4,"end_line":70,"end_character":68},"updated":"2023-07-06 13:59:43.000000000","message":"please wrap this in a try/catch block","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                  share_backups_table_name)"},{"line_number":66,"context_line":"        raise"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    op.add_column("},{"line_number":69,"context_line":"        \u0027shares\u0027,"},{"line_number":70,"context_line":"        sa.Column(\u0027source_backup_id\u0027, sa.String(36), nullable\u003dTrue))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def downgrade():"}],"source_content_type":"text/x-python","patch_set":51,"id":"eb91fe38_797b820e","line":70,"range":{"start_line":68,"start_character":4,"end_line":70,"end_character":68},"in_reply_to":"08840fc3_21efa224","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":78,"context_line":"        LOG.error(\"%s table not dropped.\", share_backups_table_name)"},{"line_number":79,"context_line":"        raise"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    op.drop_column(\u0027shares\u0027, \u0027source_backup_id\u0027)"}],"source_content_type":"text/x-python","patch_set":51,"id":"22e87e78_ac986e15","line":81,"range":{"start_line":81,"start_character":4,"end_line":81,"end_character":48},"updated":"2023-07-06 13:59:43.000000000","message":"please wrap this in a try/catch","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        LOG.error(\"%s table not dropped.\", share_backups_table_name)"},{"line_number":79,"context_line":"        raise"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    op.drop_column(\u0027shares\u0027, \u0027source_backup_id\u0027)"}],"source_content_type":"text/x-python","patch_set":51,"id":"f9f7be54_7e05a55f","line":81,"range":{"start_line":81,"start_character":4,"end_line":81,"end_character":48},"in_reply_to":"22e87e78_ac986e15","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":56,"context_line":"            sa.Column(\u0027store\u0027, sa.String(255)),"},{"line_number":57,"context_line":"            sa.Column(\u0027size\u0027, sa.Integer),"},{"line_number":58,"context_line":"            sa.Column(\u0027share_id\u0027, sa.String(36),"},{"line_number":59,"context_line":"                      sa.ForeignKey(\u0027shares.id\u0027, name\u003d\"fk_backup_share_id\")),"},{"line_number":60,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":61,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"},{"line_number":62,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":57,"id":"f4b55d51_f836bedd","line":59,"range":{"start_line":59,"start_character":58,"end_line":59,"end_character":64},"updated":"2023-08-01 02:23:01.000000000","message":"the convention for naming is:\n\n```\n\"fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s\"\n```\n\n```\n\"fk_backups_share_id_shares\"\n```\n\nagain something we\u0027ve been inconsistent with :(\n\nhttps://alembic.sqlalchemy.org/en/latest/naming.html","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            sa.Column(\u0027store\u0027, sa.String(255)),"},{"line_number":57,"context_line":"            sa.Column(\u0027size\u0027, sa.Integer),"},{"line_number":58,"context_line":"            sa.Column(\u0027share_id\u0027, sa.String(36),"},{"line_number":59,"context_line":"                      sa.ForeignKey(\u0027shares.id\u0027, name\u003d\"fk_backup_share_id\")),"},{"line_number":60,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":61,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"},{"line_number":62,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":57,"id":"5656e3f7_02afe8c5","line":59,"range":{"start_line":59,"start_character":58,"end_line":59,"end_character":64},"in_reply_to":"f4b55d51_f836bedd","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def downgrade():"},{"line_number":78,"context_line":"    \"\"\"Remove share backup attributes from share_backups.\"\"\""},{"line_number":79,"context_line":"    try:"},{"line_number":80,"context_line":"        op.drop_table(share_backups_table_name)"},{"line_number":81,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":57,"id":"5c63c81f_c89d235f","line":78,"range":{"start_line":78,"start_character":38,"end_line":78,"end_character":42},"updated":"2023-08-01 02:23:01.000000000","message":"nit: and table","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def downgrade():"},{"line_number":78,"context_line":"    \"\"\"Remove share backup attributes from share_backups.\"\"\""},{"line_number":79,"context_line":"    try:"},{"line_number":80,"context_line":"        op.drop_table(share_backups_table_name)"},{"line_number":81,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":57,"id":"0fc5240a_b546aa69","line":78,"range":{"start_line":78,"start_character":38,"end_line":78,"end_character":42},"in_reply_to":"5c63c81f_c89d235f","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":3770,"context_line":""},{"line_number":3771,"context_line":"    if with_share_data:"},{"line_number":3772,"context_line":"        parent_share \u003d share_get(context, result[\u0027share_id\u0027], session\u003dsession)"},{"line_number":3773,"context_line":"        result.set_share_data(parent_share)"},{"line_number":3774,"context_line":""},{"line_number":3775,"context_line":"    return result"},{"line_number":3776,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_89f8264b","line":3773,"range":{"start_line":3773,"start_character":15,"end_line":3773,"end_character":29},"updated":"2016-08-22 09:29:32.000000000","message":"Looks like ShareBackup doesn\u0027t have this method.","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":3770,"context_line":""},{"line_number":3771,"context_line":"    if with_share_data:"},{"line_number":3772,"context_line":"        parent_share \u003d share_get(context, result[\u0027share_id\u0027], session\u003dsession)"},{"line_number":3773,"context_line":"        result.set_share_data(parent_share)"},{"line_number":3774,"context_line":""},{"line_number":3775,"context_line":"    return result"},{"line_number":3776,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_a618641f","line":3773,"range":{"start_line":3773,"start_character":15,"end_line":3773,"end_character":29},"in_reply_to":"1ac06dbe_89f8264b","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":3786,"context_line":""},{"line_number":3787,"context_line":"@require_context"},{"line_number":3788,"context_line":"def share_backups_get_all_by_share(context, share_id\u003dNone):"},{"line_number":3789,"context_line":"    \"\"\"Returns list of share instances that belong to given share.\"\"\""},{"line_number":3790,"context_line":"    query \u003d _share_backups_get_with_filters(share_id)"},{"line_number":3791,"context_line":"    return query"},{"line_number":3792,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_09ba766e","line":3789,"range":{"start_line":3789,"start_character":29,"end_line":3789,"end_character":38},"updated":"2016-08-22 09:29:32.000000000","message":"backups","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":3786,"context_line":""},{"line_number":3787,"context_line":"@require_context"},{"line_number":3788,"context_line":"def share_backups_get_all_by_share(context, share_id\u003dNone):"},{"line_number":3789,"context_line":"    \"\"\"Returns list of share instances that belong to given share.\"\"\""},{"line_number":3790,"context_line":"    query \u003d _share_backups_get_with_filters(share_id)"},{"line_number":3791,"context_line":"    return query"},{"line_number":3792,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_ab04ad17","line":3789,"range":{"start_line":3789,"start_character":29,"end_line":3789,"end_character":38},"in_reply_to":"1ac06dbe_09ba766e","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":3792,"context_line":""},{"line_number":3793,"context_line":""},{"line_number":3794,"context_line":"def _share_backups_get_with_filters(context, share_id\u003dNone, session\u003dNone):"},{"line_number":3795,"context_line":"    \"\"\"Returns list of share instances that belong to given share.\"\"\""},{"line_number":3796,"context_line":"    session \u003d session or get_session()"},{"line_number":3797,"context_line":"    query \u003d model_query(context, models.ShareBackup, session\u003dsession,"},{"line_number":3798,"context_line":"                        read_deleted\u003d\"no\")"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_296e5201","line":3795,"range":{"start_line":3795,"start_character":29,"end_line":3795,"end_character":38},"updated":"2016-08-22 09:29:32.000000000","message":"backups","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":3792,"context_line":""},{"line_number":3793,"context_line":""},{"line_number":3794,"context_line":"def _share_backups_get_with_filters(context, share_id\u003dNone, session\u003dNone):"},{"line_number":3795,"context_line":"    \"\"\"Returns list of share instances that belong to given share.\"\"\""},{"line_number":3796,"context_line":"    session \u003d session or get_session()"},{"line_number":3797,"context_line":"    query \u003d model_query(context, models.ShareBackup, session\u003dsession,"},{"line_number":3798,"context_line":"                        read_deleted\u003d\"no\")"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_8b01f108","line":3795,"range":{"start_line":3795,"start_character":29,"end_line":3795,"end_character":38},"in_reply_to":"1ac06dbe_296e5201","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":7072,"context_line":"@require_context"},{"line_number":7073,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":7074,"context_line":"def share_backup_update(context, backup_id, values):"},{"line_number":7075,"context_line":"    session \u003d get_session()"},{"line_number":7076,"context_line":"    with session.begin():"},{"line_number":7077,"context_line":"        backup_ref \u003d share_backup_get(context, backup_id)"},{"line_number":7078,"context_line":"        backup_ref.update(values)"}],"source_content_type":"text/x-python","patch_set":51,"id":"9958c10a_685ae281","line":7075,"range":{"start_line":7075,"start_character":4,"end_line":7075,"end_character":27},"updated":"2023-07-06 13:59:43.000000000","message":"please use the sqlalchemy 2.0 way of using the session, as Stephen has been working on it for the past couple of releases [1], and also add the decorators (@context_manager.reader/@context_manager.writer) for all the new methods.\n\n[1] https://review.opendev.org/c/openstack/manila/+/880201/3/manila/db/sqlalchemy/api.py#4012","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":7072,"context_line":"@require_context"},{"line_number":7073,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":7074,"context_line":"def share_backup_update(context, backup_id, values):"},{"line_number":7075,"context_line":"    session \u003d get_session()"},{"line_number":7076,"context_line":"    with session.begin():"},{"line_number":7077,"context_line":"        backup_ref \u003d share_backup_get(context, backup_id)"},{"line_number":7078,"context_line":"        backup_ref.update(values)"}],"source_content_type":"text/x-python","patch_set":51,"id":"f1250628_500a4a99","line":7075,"range":{"start_line":7075,"start_character":4,"end_line":7075,"end_character":27},"in_reply_to":"9958c10a_685ae281","updated":"2023-07-07 13:35:25.000000000","message":"most of update calls are still in old ways. I will keep it as it is for now.\ndecorators added.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"374b5cbeb884814bcc0654a39f823658242c5dcd","unresolved":false,"context_lines":[{"line_number":7072,"context_line":"@require_context"},{"line_number":7073,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":7074,"context_line":"def share_backup_update(context, backup_id, values):"},{"line_number":7075,"context_line":"    session \u003d get_session()"},{"line_number":7076,"context_line":"    with session.begin():"},{"line_number":7077,"context_line":"        backup_ref \u003d share_backup_get(context, backup_id)"},{"line_number":7078,"context_line":"        backup_ref.update(values)"}],"source_content_type":"text/x-python","patch_set":51,"id":"fff13b6c_9d93e1bf","line":7075,"range":{"start_line":7075,"start_character":4,"end_line":7075,"end_character":27},"in_reply_to":"bbe11b2b_d89e1f99","updated":"2023-07-17 16:00:56.000000000","message":"\u003e So I checked other update calls and seems all are still in old ways.\n\nNot all, some have already being migrated, and it reafirms what I\u0027ve been trying to convey: if we don\u0027t change it now, we are adding todos for the future, when we should be already following a pattern now. It would be nice if we could not add more things than we already have in the backlog.\n\nIf the other reviewers agree, I\u0027m happy with fixing this in a follow-up change, but that has to merge in this cycle.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"361f6275ebff77287daccc723d3dbcef59cb774e","unresolved":false,"context_lines":[{"line_number":7072,"context_line":"@require_context"},{"line_number":7073,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":7074,"context_line":"def share_backup_update(context, backup_id, values):"},{"line_number":7075,"context_line":"    session \u003d get_session()"},{"line_number":7076,"context_line":"    with session.begin():"},{"line_number":7077,"context_line":"        backup_ref \u003d share_backup_get(context, backup_id)"},{"line_number":7078,"context_line":"        backup_ref.update(values)"}],"source_content_type":"text/x-python","patch_set":51,"id":"f843351a_83341cce","line":7075,"range":{"start_line":7075,"start_character":4,"end_line":7075,"end_character":27},"in_reply_to":"f1250628_500a4a99","updated":"2023-07-10 12:08:20.000000000","message":"sorry, I disagree :/\n\n\u003e most of update calls are still in old ways\n\nyes, this is true, but we are doing an effort to have this being migrated, and that is being done slowly because we have a single person working on it and some folks doing the reviews (you did some of them too). So if we don\u0027t do this now, we are adding more work for someone else in the future, so that\u0027s why I think the new pattern *must* be applied from now on, so we don\u0027t add more workload to someone else when we have the chance to work on something that is currently open.\nIt shouldn\u0027t be that big of a change though","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"642cc11f7b6f6c3716a5d4f28f019ec736ef55d4","unresolved":false,"context_lines":[{"line_number":7072,"context_line":"@require_context"},{"line_number":7073,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":7074,"context_line":"def share_backup_update(context, backup_id, values):"},{"line_number":7075,"context_line":"    session \u003d get_session()"},{"line_number":7076,"context_line":"    with session.begin():"},{"line_number":7077,"context_line":"        backup_ref \u003d share_backup_get(context, backup_id)"},{"line_number":7078,"context_line":"        backup_ref.update(values)"}],"source_content_type":"text/x-python","patch_set":51,"id":"bbe11b2b_d89e1f99","line":7075,"range":{"start_line":7075,"start_character":4,"end_line":7075,"end_character":27},"in_reply_to":"f843351a_83341cce","updated":"2023-07-10 13:21:04.000000000","message":"I had tried this earlier as well and even today. The update call needs session derived out of context and its not present in tests causing tests failure. So I checked other update calls and seems all are still in old ways. The modification of context and session in db/tests should not be part of this PR ideally.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"faaca19db668e2345bba3d51f6dd731f6694b5e1","unresolved":false,"context_lines":[{"line_number":7072,"context_line":"@require_context"},{"line_number":7073,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":7074,"context_line":"def share_backup_update(context, backup_id, values):"},{"line_number":7075,"context_line":"    session \u003d get_session()"},{"line_number":7076,"context_line":"    with session.begin():"},{"line_number":7077,"context_line":"        backup_ref \u003d share_backup_get(context, backup_id)"},{"line_number":7078,"context_line":"        backup_ref.update(values)"}],"source_content_type":"text/x-python","patch_set":51,"id":"d9e988ab_cb2d38bc","line":7075,"range":{"start_line":7075,"start_character":4,"end_line":7075,"end_character":27},"in_reply_to":"fff13b6c_9d93e1bf","updated":"2023-07-18 03:06:40.000000000","message":"hi, Kiran Pawar.\nThis function can be written as follows:\n\n    @require_context\n    @oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)\n    @context_manager.writer\n    def share_backup_update(context, backup_id, values):\n        backup_ref \u003d share_backup_get(context, backup_id)\n        backup_ref.update(values)\n        backup_ref.save(session\u003dcontext.session)\n        return backup_ref\n        \nI\u0027ve tested it and it won\u0027t cause the unit test to fail, you can try it if you want.\nIf you don\u0027t want to merge this code, then I can submit a new patch after your patch is merged to update this function.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"374b5cbeb884814bcc0654a39f823658242c5dcd","unresolved":true,"context_lines":[{"line_number":7069,"context_line":"    return (result[0] or 0, result[1] or 0)"},{"line_number":7070,"context_line":""},{"line_number":7071,"context_line":""},{"line_number":7072,"context_line":"@require_context"},{"line_number":7073,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":7074,"context_line":"def share_backup_update(context, backup_id, values):"},{"line_number":7075,"context_line":"    session \u003d get_session()"}],"source_content_type":"text/x-python","patch_set":55,"id":"845e03b5_80b7015c","line":7072,"updated":"2023-07-17 16:00:56.000000000","message":"missing @context_manager decorator.","commit_id":"28503376751ca1a67daa0200fee078add0bc9960"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7067d3b7e7997f58c1fbc9860252939bb439f2aa","unresolved":false,"context_lines":[{"line_number":7069,"context_line":"    return (result[0] or 0, result[1] or 0)"},{"line_number":7070,"context_line":""},{"line_number":7071,"context_line":""},{"line_number":7072,"context_line":"@require_context"},{"line_number":7073,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":7074,"context_line":"def share_backup_update(context, backup_id, values):"},{"line_number":7075,"context_line":"    session \u003d get_session()"}],"source_content_type":"text/x-python","patch_set":55,"id":"59e26c29_cd9f0525","line":7072,"in_reply_to":"845e03b5_80b7015c","updated":"2023-07-18 08:07:31.000000000","message":"Done","commit_id":"28503376751ca1a67daa0200fee078add0bc9960"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":7080,"context_line":"@require_context"},{"line_number":7081,"context_line":"@context_manager.reader"},{"line_number":7082,"context_line":"def share_backup_get(context, share_backup_id):"},{"line_number":7083,"context_line":"    result \u003d model_query("},{"line_number":7084,"context_line":"        context, models.ShareBackup,"},{"line_number":7085,"context_line":"    ).filter_by("},{"line_number":7086,"context_line":"        id\u003dshare_backup_id,"},{"line_number":7087,"context_line":"    ).first()"}],"source_content_type":"text/x-python","patch_set":57,"id":"315f0ca6_da9ca5be","line":7084,"range":{"start_line":7083,"start_character":13,"end_line":7084,"end_character":36},"updated":"2023-08-01 02:23:01.000000000","message":"you\u0027ll want to make sure you query by \"project_only\u003dTrue\"; else we\u0027d not prevent lookup by UUID from non-privileged users outside the project that owns the backup","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":7080,"context_line":"@require_context"},{"line_number":7081,"context_line":"@context_manager.reader"},{"line_number":7082,"context_line":"def share_backup_get(context, share_backup_id):"},{"line_number":7083,"context_line":"    result \u003d model_query("},{"line_number":7084,"context_line":"        context, models.ShareBackup,"},{"line_number":7085,"context_line":"    ).filter_by("},{"line_number":7086,"context_line":"        id\u003dshare_backup_id,"},{"line_number":7087,"context_line":"    ).first()"}],"source_content_type":"text/x-python","patch_set":57,"id":"5937f2f4_dd70042c","line":7084,"range":{"start_line":7083,"start_character":13,"end_line":7084,"end_character":36},"in_reply_to":"315f0ca6_da9ca5be","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":7098,"context_line":"    return result"},{"line_number":7099,"context_line":""},{"line_number":7100,"context_line":""},{"line_number":7101,"context_line":"@require_context"},{"line_number":7102,"context_line":"@context_manager.reader"},{"line_number":7103,"context_line":"def share_backups_get_all_by_share(context, share_id\u003dNone):"},{"line_number":7104,"context_line":"    \"\"\"Returns list of share backups that belong to given share.\"\"\""},{"line_number":7105,"context_line":"    query \u003d _share_backups_get_with_filters(context, share_id).all()"},{"line_number":7106,"context_line":"    return query"},{"line_number":7107,"context_line":""},{"line_number":7108,"context_line":""},{"line_number":7109,"context_line":"def _share_backups_get_with_filters(context, share_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":57,"id":"066172fc_da582f58","line":7106,"range":{"start_line":7101,"start_character":0,"end_line":7106,"end_character":16},"updated":"2023-08-01 02:23:01.000000000","message":"seems useless to me; just add filters; you can extend filtering and allow more query parameters when you move sorting and filtering to the db level","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":7098,"context_line":"    return result"},{"line_number":7099,"context_line":""},{"line_number":7100,"context_line":""},{"line_number":7101,"context_line":"@require_context"},{"line_number":7102,"context_line":"@context_manager.reader"},{"line_number":7103,"context_line":"def share_backups_get_all_by_share(context, share_id\u003dNone):"},{"line_number":7104,"context_line":"    \"\"\"Returns list of share backups that belong to given share.\"\"\""},{"line_number":7105,"context_line":"    query \u003d _share_backups_get_with_filters(context, share_id).all()"},{"line_number":7106,"context_line":"    return query"},{"line_number":7107,"context_line":""},{"line_number":7108,"context_line":""},{"line_number":7109,"context_line":"def _share_backups_get_with_filters(context, share_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":57,"id":"771809cd_b9695bf1","line":7106,"range":{"start_line":7101,"start_character":0,"end_line":7106,"end_character":16},"in_reply_to":"066172fc_da582f58","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":7108,"context_line":""},{"line_number":7109,"context_line":"def _share_backups_get_with_filters(context, share_id\u003dNone):"},{"line_number":7110,"context_line":"    \"\"\"Returns list of share backups that belong to given share.\"\"\""},{"line_number":7111,"context_line":"    query \u003d model_query(context, models.ShareBackup, read_deleted\u003d\"no\")"},{"line_number":7112,"context_line":""},{"line_number":7113,"context_line":"    if share_id is not None:"},{"line_number":7114,"context_line":"        query \u003d query.filter(models.ShareBackup.share_id \u003d\u003d share_id)"}],"source_content_type":"text/x-python","patch_set":57,"id":"1cad763f_2959af59","line":7111,"range":{"start_line":7111,"start_character":52,"end_line":7111,"end_character":53},"updated":"2023-08-01 02:23:01.000000000","message":"as with above, make sure \"project_only\" is set to True, \n\nor, \n\nensure that you\u0027re always using a project_id filter.. something along these lines:\n\n\n    if not (\u0027all_projects\u0027 in filters and filters[\u0027all_projects\u0027] is True):\n        query.filter(models.ShareBackup.project_id \u003d\u003d context.project_id)","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":7108,"context_line":""},{"line_number":7109,"context_line":"def _share_backups_get_with_filters(context, share_id\u003dNone):"},{"line_number":7110,"context_line":"    \"\"\"Returns list of share backups that belong to given share.\"\"\""},{"line_number":7111,"context_line":"    query \u003d model_query(context, models.ShareBackup, read_deleted\u003d\"no\")"},{"line_number":7112,"context_line":""},{"line_number":7113,"context_line":"    if share_id is not None:"},{"line_number":7114,"context_line":"        query \u003d query.filter(models.ShareBackup.share_id \u003d\u003d share_id)"}],"source_content_type":"text/x-python","patch_set":57,"id":"85c5a2bc_17a73e19","line":7111,"range":{"start_line":7111,"start_character":52,"end_line":7111,"end_character":53},"in_reply_to":"1cad763f_2959af59","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e7032aa02d19d33f59de82abbdb71524ce17d5e0","unresolved":true,"context_lines":[{"line_number":7132,"context_line":"        query \u003d query.filter_by(project_id\u003dproject_id)"},{"line_number":7133,"context_line":""},{"line_number":7134,"context_line":"    share_id \u003d filters.get(\u0027share_id\u0027)"},{"line_number":7135,"context_line":"    if share_id:"},{"line_number":7136,"context_line":"        query \u003d query.filter_by(share_id\u003dshare_id)"},{"line_number":7137,"context_line":""},{"line_number":7138,"context_line":"    legal_filter_keys \u003d (\u0027display_name\u0027, \u0027display_name~\u0027,"},{"line_number":7139,"context_line":"                         \u0027display_description\u0027, \u0027display_description~\u0027,"}],"source_content_type":"text/x-python","patch_set":59,"id":"362b3c9e_2cdfc67a","line":7136,"range":{"start_line":7135,"start_character":4,"end_line":7136,"end_character":50},"updated":"2023-08-10 07:20:56.000000000","message":"if share_id:\n        query \u003d query.filter_by(share_id\u003dshare_id)\n        filters.pop(\u0027share_id\u0027)","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":7132,"context_line":"        query \u003d query.filter_by(project_id\u003dproject_id)"},{"line_number":7133,"context_line":""},{"line_number":7134,"context_line":"    share_id \u003d filters.get(\u0027share_id\u0027)"},{"line_number":7135,"context_line":"    if share_id:"},{"line_number":7136,"context_line":"        query \u003d query.filter_by(share_id\u003dshare_id)"},{"line_number":7137,"context_line":""},{"line_number":7138,"context_line":"    legal_filter_keys \u003d (\u0027display_name\u0027, \u0027display_name~\u0027,"},{"line_number":7139,"context_line":"                         \u0027display_description\u0027, \u0027display_description~\u0027,"}],"source_content_type":"text/x-python","patch_set":59,"id":"a9f36880_0d4de872","line":7136,"range":{"start_line":7135,"start_character":4,"end_line":7136,"end_character":50},"in_reply_to":"362b3c9e_2cdfc67a","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e7032aa02d19d33f59de82abbdb71524ce17d5e0","unresolved":true,"context_lines":[{"line_number":7135,"context_line":"    if share_id:"},{"line_number":7136,"context_line":"        query \u003d query.filter_by(share_id\u003dshare_id)"},{"line_number":7137,"context_line":""},{"line_number":7138,"context_line":"    legal_filter_keys \u003d (\u0027display_name\u0027, \u0027display_name~\u0027,"},{"line_number":7139,"context_line":"                         \u0027display_description\u0027, \u0027display_description~\u0027,"},{"line_number":7140,"context_line":"                         \u0027id\u0027, \u0027project_id\u0027, \u0027share_id\u0027)"},{"line_number":7141,"context_line":"    query \u003d exact_filter(query, models.ShareBackup,"},{"line_number":7142,"context_line":"                         filters, legal_filter_keys)"},{"line_number":7143,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"803bc094_bb23388c","line":7140,"range":{"start_line":7138,"start_character":4,"end_line":7140,"end_character":56},"updated":"2023-08-10 07:20:56.000000000","message":"legal_filter_keys can remove \u0027project_id\u0027 and \u0027share_id\u0027.\nadd \u0027host\u0027, \u0027topic\u0027, \u0027status\u0027.","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":7135,"context_line":"    if share_id:"},{"line_number":7136,"context_line":"        query \u003d query.filter_by(share_id\u003dshare_id)"},{"line_number":7137,"context_line":""},{"line_number":7138,"context_line":"    legal_filter_keys \u003d (\u0027display_name\u0027, \u0027display_name~\u0027,"},{"line_number":7139,"context_line":"                         \u0027display_description\u0027, \u0027display_description~\u0027,"},{"line_number":7140,"context_line":"                         \u0027id\u0027, \u0027project_id\u0027, \u0027share_id\u0027)"},{"line_number":7141,"context_line":"    query \u003d exact_filter(query, models.ShareBackup,"},{"line_number":7142,"context_line":"                         filters, legal_filter_keys)"},{"line_number":7143,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"7f11ded7_d9042189","line":7140,"range":{"start_line":7138,"start_character":4,"end_line":7140,"end_character":56},"in_reply_to":"803bc094_bb23388c","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2d059f1d483f53cd84cc2272c2a8d0765cb59ee9","unresolved":true,"context_lines":[{"line_number":2126,"context_line":"        filters \u003d {}"},{"line_number":2127,"context_line":""},{"line_number":2128,"context_line":"    share_filter_keys \u003d [\u0027share_group_id\u0027, \u0027snapshot_id\u0027,"},{"line_number":2129,"context_line":"                         \u0027is_soft_deleted\u0027, \u0027source_backup_id\u0027]"},{"line_number":2130,"context_line":"    instance_filter_keys \u003d [\u0027share_server_id\u0027, \u0027status\u0027, \u0027share_type_id\u0027,"},{"line_number":2131,"context_line":"                            \u0027host\u0027, \u0027share_network_id\u0027]"},{"line_number":2132,"context_line":"    share_filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":60,"id":"3ca0034c_f00023e8","line":2129,"range":{"start_line":2129,"start_character":62,"end_line":2129,"end_character":63},"updated":"2023-08-11 02:04:47.000000000","message":"also add \"status\" so you can filter by \"restoring\" or \"backup_creating\"","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"68a53753936e82d6ca5a48c230f4488baf0a2854","unresolved":false,"context_lines":[{"line_number":2126,"context_line":"        filters \u003d {}"},{"line_number":2127,"context_line":""},{"line_number":2128,"context_line":"    share_filter_keys \u003d [\u0027share_group_id\u0027, \u0027snapshot_id\u0027,"},{"line_number":2129,"context_line":"                         \u0027is_soft_deleted\u0027, \u0027source_backup_id\u0027]"},{"line_number":2130,"context_line":"    instance_filter_keys \u003d [\u0027share_server_id\u0027, \u0027status\u0027, \u0027share_type_id\u0027,"},{"line_number":2131,"context_line":"                            \u0027host\u0027, \u0027share_network_id\u0027]"},{"line_number":2132,"context_line":"    share_filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":60,"id":"751972cc_d16ca60b","line":2129,"range":{"start_line":2129,"start_character":62,"end_line":2129,"end_character":63},"in_reply_to":"3ca0034c_f00023e8","updated":"2024-02-06 14:09:24.000000000","message":"Done","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"}],"manila/db/sqlalchemy/models.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":1492,"context_line":"    display_description \u003d Column(String(255))"},{"line_number":1493,"context_line":"    store \u003d Column(String(255))"},{"line_number":1494,"context_line":"    status \u003d Column(String(255))"},{"line_number":1495,"context_line":"    fail_reason \u003d Column(String(255))"},{"line_number":1496,"context_line":""},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"def register_models():"}],"source_content_type":"text/x-python","patch_set":57,"id":"bea13788_e815b0ef","line":1495,"range":{"start_line":1495,"start_character":17,"end_line":1495,"end_character":37},"updated":"2023-08-01 02:23:01.000000000","message":"this can be 1023; allow a larger string","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"    display_description \u003d Column(String(255))"},{"line_number":1493,"context_line":"    store \u003d Column(String(255))"},{"line_number":1494,"context_line":"    status \u003d Column(String(255))"},{"line_number":1495,"context_line":"    fail_reason \u003d Column(String(255))"},{"line_number":1496,"context_line":""},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"def register_models():"}],"source_content_type":"text/x-python","patch_set":57,"id":"ad203abe_3c6bbe99","line":1495,"range":{"start_line":1495,"start_character":17,"end_line":1495,"end_character":37},"in_reply_to":"bea13788_e815b0ef","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"}],"manila/exception.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":798,"context_line":""},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"class BackupLimitExceeded(QuotaError):"},{"line_number":801,"context_line":"    message \u003d _(\"Maximum number of backups allowed (%(allowed)d) exceeded\")"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"class ShareBackupNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_18bae8c0","line":801,"range":{"start_line":801,"start_character":72,"end_line":801,"end_character":75},"updated":"2016-07-22 21:54:24.000000000","message":"period","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":798,"context_line":""},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"class BackupLimitExceeded(QuotaError):"},{"line_number":801,"context_line":"    message \u003d _(\"Maximum number of backups allowed (%(allowed)d) exceeded\")"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"class ShareBackupNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_433987f1","line":801,"range":{"start_line":801,"start_character":72,"end_line":801,"end_character":75},"in_reply_to":"dada55a8_18bae8c0","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"c4e33b2cb4f673fff6fbb283fdf7589ea9c8c5eb","unresolved":false,"context_lines":[{"line_number":802,"context_line":""},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"class ShareBackupNotFound(NotFound):"},{"line_number":805,"context_line":"    message \u003d _(\"Backup %(backup_id)s could not be found.\")"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"class ShareBackupSizeExceedsAvailableQuota(QuotaError):"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_0e49a760","line":805,"updated":"2016-07-26 06:29:07.000000000","message":"This exception is identical with BackupNotFound, duplicated?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":802,"context_line":""},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"class ShareBackupNotFound(NotFound):"},{"line_number":805,"context_line":"    message \u003d _(\"Backup %(backup_id)s could not be found.\")"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"class ShareBackupSizeExceedsAvailableQuota(QuotaError):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_663939d7","line":805,"in_reply_to":"dada55a8_0e49a760","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"}],"manila/policies/share_backup.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"BASE_POLICY_NAME \u003d \u0027share_backup:%s\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"DEPRECATED_REASON \u003d \"\"\""},{"line_number":21,"context_line":"The share backup API now supports system scope and default roles."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"share_backup_policies \u003d ["},{"line_number":25,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":51,"id":"5b815c1a_3c17bd5d","line":22,"range":{"start_line":20,"start_character":0,"end_line":22,"end_character":3},"updated":"2023-07-06 13:59:43.000000000","message":"this variable is not being used anywhere, but it should.\nPlease add the deprecated rules as done this change: https://review.opendev.org/c/openstack/manila/+/887115/1/manila/policies/resource_lock.py#24","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"BASE_POLICY_NAME \u003d \u0027share_backup:%s\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"DEPRECATED_REASON \u003d \"\"\""},{"line_number":21,"context_line":"The share backup API now supports system scope and default roles."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"share_backup_policies \u003d ["},{"line_number":25,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":51,"id":"f0f88ae4_166dfb21","line":22,"range":{"start_line":20,"start_character":0,"end_line":22,"end_character":3},"in_reply_to":"5b815c1a_3c17bd5d","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":25,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":26,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027create\u0027,"},{"line_number":27,"context_line":"        check_str\u003dbase.ADMIN_OR_PROJECT_MEMBER,"},{"line_number":28,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":29,"context_line":"        description\u003d\"Create share backup.\","},{"line_number":30,"context_line":"        operations\u003d["},{"line_number":31,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":51,"id":"dd97cac8_b31885ef","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":29},"updated":"2023-07-06 13:59:43.000000000","message":"I\u0027m a bit confused on the usage of system here and below. Isn\u0027t create backup something that would be done only using the project scope? I know the service will perform actions on it, but at the end, the request would come from a project. I might be missing something here though :)","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":26,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027create\u0027,"},{"line_number":27,"context_line":"        check_str\u003dbase.ADMIN_OR_PROJECT_MEMBER,"},{"line_number":28,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":29,"context_line":"        description\u003d\"Create share backup.\","},{"line_number":30,"context_line":"        operations\u003d["},{"line_number":31,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":51,"id":"e3d354fc_450c1f87","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":29},"in_reply_to":"77eaa8a8_8e8ef57f","updated":"2023-08-01 02:23:01.000000000","message":"Good point; \"system\" was dropped from all manila API policies recently: https://review.opendev.org/c/openstack/manila/+/856394","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":26,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027create\u0027,"},{"line_number":27,"context_line":"        check_str\u003dbase.ADMIN_OR_PROJECT_MEMBER,"},{"line_number":28,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":29,"context_line":"        description\u003d\"Create share backup.\","},{"line_number":30,"context_line":"        operations\u003d["},{"line_number":31,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":51,"id":"77eaa8a8_8e8ef57f","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":29},"in_reply_to":"dd97cac8_b31885ef","updated":"2023-07-07 13:35:25.000000000","message":"makes sense. updated","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":57,"id":"09091e9d_3539ce33","updated":"2023-08-01 02:23:01.000000000","message":"These policies look good; but, they\u0027re not used anywhere! \n\nYou\u0027re missing policy checks in the API methods. I\u0027d add them right on the top of the respective methods in api/v2/share_backups.py using the \"authorize\" decorator","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":57,"id":"bdd195ac_d97e7fae","in_reply_to":"09091e9d_3539ce33","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"}],"manila/quota.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":60,"context_line":"               help\u003d\u0027Default driver to use for quota checks.\u0027),"},{"line_number":61,"context_line":"    cfg.IntOpt(\u0027quota_backups\u0027,"},{"line_number":62,"context_line":"               default\u003d10,"},{"line_number":63,"context_line":"               help\u003d\u0027Number of share backups allowed per project\u0027),"},{"line_number":64,"context_line":"    cfg.IntOpt(\u0027quota_backup_gigabytes\u0027,"},{"line_number":65,"context_line":"               default\u003d1000,"},{"line_number":66,"context_line":"               help\u003d\u0027Total amount of storage, in gigabytes, allowed \u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_1cf472f0","line":63,"range":{"start_line":63,"start_character":64,"end_line":63,"end_character":65},"updated":"2016-08-22 09:29:32.000000000","message":"add tail period.","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":60,"context_line":"               help\u003d\u0027Default driver to use for quota checks.\u0027),"},{"line_number":61,"context_line":"    cfg.IntOpt(\u0027quota_backups\u0027,"},{"line_number":62,"context_line":"               default\u003d10,"},{"line_number":63,"context_line":"               help\u003d\u0027Number of share backups allowed per project\u0027),"},{"line_number":64,"context_line":"    cfg.IntOpt(\u0027quota_backup_gigabytes\u0027,"},{"line_number":65,"context_line":"               default\u003d1000,"},{"line_number":66,"context_line":"               help\u003d\u0027Total amount of storage, in gigabytes, allowed \u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_a69d0468","line":63,"range":{"start_line":63,"start_character":64,"end_line":63,"end_character":65},"in_reply_to":"1ac06dbe_1cf472f0","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    cfg.IntOpt(\u0027quota_backup_gigabytes\u0027,"},{"line_number":65,"context_line":"               default\u003d1000,"},{"line_number":66,"context_line":"               help\u003d\u0027Total amount of storage, in gigabytes, allowed \u0027"},{"line_number":67,"context_line":"                    \u0027for backups per project\u0027), ]"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"CONF \u003d cfg.CONF"},{"line_number":70,"context_line":"CONF.register_opts(quota_opts)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_bcd39e5e","line":67,"range":{"start_line":67,"start_character":44,"end_line":67,"end_character":45},"updated":"2016-08-22 09:29:32.000000000","message":"ditto","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    cfg.IntOpt(\u0027quota_backup_gigabytes\u0027,"},{"line_number":65,"context_line":"               default\u003d1000,"},{"line_number":66,"context_line":"               help\u003d\u0027Total amount of storage, in gigabytes, allowed \u0027"},{"line_number":67,"context_line":"                    \u0027for backups per project\u0027), ]"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"CONF \u003d cfg.CONF"},{"line_number":70,"context_line":"CONF.register_opts(quota_opts)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_e689bc27","line":67,"range":{"start_line":67,"start_character":44,"end_line":67,"end_character":45},"in_reply_to":"1ac06dbe_bcd39e5e","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"}],"manila/share/api.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"    def create_share_backup(self, context, backup, preserve_metadata\u003dTrue):"},{"line_number":1479,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":1480,"context_line":"        share \u003d self.get(context, share_id)"},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"        self._check_is_share_busy(share)"},{"line_number":1483,"context_line":"        # Ensure share status is \u0027available\u0027."}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_0862a3d8","line":1480,"range":{"start_line":1480,"start_character":8,"end_line":1480,"end_character":43},"updated":"2016-07-22 21:54:24.000000000","message":"what if share is not found? I suggest validating this in the API layer in your controller","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"    def create_share_backup(self, context, backup, preserve_metadata\u003dTrue):"},{"line_number":1479,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":1480,"context_line":"        share \u003d self.get(context, share_id)"},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"        self._check_is_share_busy(share)"},{"line_number":1483,"context_line":"        # Ensure share status is \u0027available\u0027."}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_86d0ad20","line":1480,"range":{"start_line":1480,"start_character":8,"end_line":1480,"end_character":43},"in_reply_to":"dada55a8_0862a3d8","updated":"2016-08-01 11:46:16.000000000","message":"Done, It will be checked in api/v2/share_backup.py.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"c4e33b2cb4f673fff6fbb283fdf7589ea9c8c5eb","unresolved":false,"context_lines":[{"line_number":1489,"context_line":""},{"line_number":1490,"context_line":"        snaps \u003d self.db.share_snapshot_get_all_for_share(context, share[\u0027id\u0027])"},{"line_number":1491,"context_line":"        if snaps:"},{"line_number":1492,"context_line":"            msg \u003d _(\"Share %s must not have snapshots.\") % share[\u0027id\u0027]"},{"line_number":1493,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":1494,"context_line":""},{"line_number":1495,"context_line":"        # Reserve a quota before setting share status and backup status"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_13fa7443","line":1492,"range":{"start_line":1492,"start_character":53,"end_line":1492,"end_character":54},"updated":"2016-07-26 06:29:07.000000000","message":"to create backup.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1489,"context_line":""},{"line_number":1490,"context_line":"        snaps \u003d self.db.share_snapshot_get_all_for_share(context, share[\u0027id\u0027])"},{"line_number":1491,"context_line":"        if snaps:"},{"line_number":1492,"context_line":"            msg \u003d _(\"Share %s must not have snapshots.\") % share[\u0027id\u0027]"},{"line_number":1493,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":1494,"context_line":""},{"line_number":1495,"context_line":"        # Reserve a quota before setting share status and backup status"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_a6d691ee","line":1492,"range":{"start_line":1492,"start_character":53,"end_line":1492,"end_character":54},"in_reply_to":"dada55a8_13fa7443","updated":"2016-08-01 11:46:16.000000000","message":"Well, it\u0027s a bit redundant.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"c4e33b2cb4f673fff6fbb283fdf7589ea9c8c5eb","unresolved":false,"context_lines":[{"line_number":1508,"context_line":"            for over in overs:"},{"line_number":1509,"context_line":"                if \u0027gigabytes\u0027 in over:"},{"line_number":1510,"context_line":"                    msg \u003d _LW(\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":1511,"context_line":"                              \"%(s_size)sG backup (%(d_consumed)dG of \""},{"line_number":1512,"context_line":"                              \"%(d_quota)dG already consumed)\")"},{"line_number":1513,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":1514,"context_line":"                                      \u0027s_size\u0027: share[\u0027size\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_6e430314","line":1511,"range":{"start_line":1511,"start_character":49,"end_line":1511,"end_character":50},"updated":"2016-07-26 06:29:07.000000000","message":",but","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1508,"context_line":"            for over in overs:"},{"line_number":1509,"context_line":"                if \u0027gigabytes\u0027 in over:"},{"line_number":1510,"context_line":"                    msg \u003d _LW(\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":1511,"context_line":"                              \"%(s_size)sG backup (%(d_consumed)dG of \""},{"line_number":1512,"context_line":"                              \"%(d_quota)dG already consumed)\")"},{"line_number":1513,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":1514,"context_line":"                                      \u0027s_size\u0027: share[\u0027size\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e6d6c94d","line":1511,"range":{"start_line":1511,"start_character":49,"end_line":1511,"end_character":50},"in_reply_to":"dada55a8_6e430314","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1509,"context_line":"                if \u0027gigabytes\u0027 in over:"},{"line_number":1510,"context_line":"                    msg \u003d _LW(\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":1511,"context_line":"                              \"%(s_size)sG backup (%(d_consumed)dG of \""},{"line_number":1512,"context_line":"                              \"%(d_quota)dG already consumed)\")"},{"line_number":1513,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":1514,"context_line":"                                      \u0027s_size\u0027: share[\u0027size\u0027],"},{"line_number":1515,"context_line":"                                      \u0027d_consumed\u0027: _consumed(over),"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_62ced3b5","line":1512,"range":{"start_line":1512,"start_character":59,"end_line":1512,"end_character":61},"updated":"2016-07-22 21:54:24.000000000","message":"add period","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1509,"context_line":"                if \u0027gigabytes\u0027 in over:"},{"line_number":1510,"context_line":"                    msg \u003d _LW(\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":1511,"context_line":"                              \"%(s_size)sG backup (%(d_consumed)dG of \""},{"line_number":1512,"context_line":"                              \"%(d_quota)dG already consumed)\")"},{"line_number":1513,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":1514,"context_line":"                                      \u0027s_size\u0027: share[\u0027size\u0027],"},{"line_number":1515,"context_line":"                                      \u0027d_consumed\u0027: _consumed(over),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_46a35500","line":1512,"range":{"start_line":1512,"start_character":59,"end_line":1512,"end_character":61},"in_reply_to":"dada55a8_62ced3b5","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"c4e33b2cb4f673fff6fbb283fdf7589ea9c8c5eb","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"                        quota\u003dquotas[\u0027backup_gigabytes\u0027])"},{"line_number":1521,"context_line":"                elif \u0027backups\u0027 in over:"},{"line_number":1522,"context_line":"                    msg \u003d _LW(\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":1523,"context_line":"                              \"backups (%(d_consumed)d backups \""},{"line_number":1524,"context_line":"                              \"already consumed)\")"},{"line_number":1525,"context_line":""},{"line_number":1526,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_8efbd77a","line":1523,"range":{"start_line":1523,"start_character":31,"end_line":1523,"end_character":38},"updated":"2016-07-26 06:29:07.000000000","message":"I think here is just trying to create one backup.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"                        quota\u003dquotas[\u0027backup_gigabytes\u0027])"},{"line_number":1521,"context_line":"                elif \u0027backups\u0027 in over:"},{"line_number":1522,"context_line":"                    msg \u003d _LW(\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":1523,"context_line":"                              \"backups (%(d_consumed)d backups \""},{"line_number":1524,"context_line":"                              \"already consumed)\")"},{"line_number":1525,"context_line":""},{"line_number":1526,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_c64745ba","line":1523,"range":{"start_line":1523,"start_character":31,"end_line":1523,"end_character":38},"in_reply_to":"dada55a8_8efbd77a","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1521,"context_line":"                elif \u0027backups\u0027 in over:"},{"line_number":1522,"context_line":"                    msg \u003d _LW(\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":1523,"context_line":"                              \"backups (%(d_consumed)d backups \""},{"line_number":1524,"context_line":"                              \"already consumed)\")"},{"line_number":1525,"context_line":""},{"line_number":1526,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":1527,"context_line":"                                      \u0027d_consumed\u0027: _consumed(over)})"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_c2c33f89","line":1524,"range":{"start_line":1524,"start_character":46,"end_line":1524,"end_character":49},"updated":"2016-07-22 21:54:24.000000000","message":"add period","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1521,"context_line":"                elif \u0027backups\u0027 in over:"},{"line_number":1522,"context_line":"                    msg \u003d _LW(\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":1523,"context_line":"                              \"backups (%(d_consumed)d backups \""},{"line_number":1524,"context_line":"                              \"already consumed)\")"},{"line_number":1525,"context_line":""},{"line_number":1526,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":1527,"context_line":"                                      \u0027d_consumed\u0027: _consumed(over)})"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e60a4989","line":1524,"range":{"start_line":1524,"start_character":46,"end_line":1524,"end_character":49},"in_reply_to":"dada55a8_c2c33f89","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1534,"context_line":"                {"},{"line_number":1535,"context_line":"                    \u0027user_id\u0027: context.user_id,"},{"line_number":1536,"context_line":"                    \u0027project_id\u0027: context.project_id,"},{"line_number":1537,"context_line":"                    \u0027status\u0027: \u0027creating\u0027,"},{"line_number":1538,"context_line":"                    \u0027store\u0027: backup.get(\u0027store\u0027),"},{"line_number":1539,"context_line":"                    \u0027description\u0027: backup.get(\u0027description\u0027),"},{"line_number":1540,"context_line":"                    \u0027name\u0027: backup.get(\u0027name\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_e2bac309","line":1537,"range":{"start_line":1537,"start_character":30,"end_line":1537,"end_character":40},"updated":"2016-07-22 21:54:24.000000000","message":"use constants.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1534,"context_line":"                {"},{"line_number":1535,"context_line":"                    \u0027user_id\u0027: context.user_id,"},{"line_number":1536,"context_line":"                    \u0027project_id\u0027: context.project_id,"},{"line_number":1537,"context_line":"                    \u0027status\u0027: \u0027creating\u0027,"},{"line_number":1538,"context_line":"                    \u0027store\u0027: backup.get(\u0027store\u0027),"},{"line_number":1539,"context_line":"                    \u0027description\u0027: backup.get(\u0027description\u0027),"},{"line_number":1540,"context_line":"                    \u0027name\u0027: backup.get(\u0027name\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_66dad9e9","line":1537,"range":{"start_line":1537,"start_character":30,"end_line":1537,"end_character":40},"in_reply_to":"dada55a8_e2bac309","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1555,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_BACKINGUP})"},{"line_number":1556,"context_line":""},{"line_number":1557,"context_line":"        try:"},{"line_number":1558,"context_line":"            if strutils.bool_from_string(preserve_metadata):"},{"line_number":1559,"context_line":"                backup_ref[\u0027driver_option\u0027] \u003d backup.get(\u0027driver_option\u0027)"},{"line_number":1560,"context_line":"                backup_ref[\u0027host\u0027] \u003d share[\u0027host\u0027]"},{"line_number":1561,"context_line":"                self.db.share_backup_update("}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_e2ff63a8","line":1558,"range":{"start_line":1558,"start_character":12,"end_line":1558,"end_character":60},"updated":"2016-07-22 21:54:24.000000000","message":"you are ensuring it is boolean here, but you are passing forward the parameter. I recommend validating in the previous layer and using only booleans from there.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1555,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_BACKINGUP})"},{"line_number":1556,"context_line":""},{"line_number":1557,"context_line":"        try:"},{"line_number":1558,"context_line":"            if strutils.bool_from_string(preserve_metadata):"},{"line_number":1559,"context_line":"                backup_ref[\u0027driver_option\u0027] \u003d backup.get(\u0027driver_option\u0027)"},{"line_number":1560,"context_line":"                backup_ref[\u0027host\u0027] \u003d share[\u0027host\u0027]"},{"line_number":1561,"context_line":"                self.db.share_backup_update("}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e3935459","line":1558,"range":{"start_line":1558,"start_character":12,"end_line":1558,"end_character":60},"in_reply_to":"dada55a8_e2ff63a8","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"c4e33b2cb4f673fff6fbb283fdf7589ea9c8c5eb","unresolved":false,"context_lines":[{"line_number":1567,"context_line":"                self.db.share_backup_update("},{"line_number":1568,"context_line":"                    context, backup_ref[\u0027id\u0027], {\u0027topic\u0027: CONF.data_topic})"},{"line_number":1569,"context_line":"                data_rpc \u003d data_rpcapi.DataAPI()"},{"line_number":1570,"context_line":"                data_rpc.create_backup(context, backup_ref, preserve_metadata)"},{"line_number":1571,"context_line":"        except Exception:"},{"line_number":1572,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1573,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_c2c2c384","line":1570,"range":{"start_line":1570,"start_character":60,"end_line":1570,"end_character":77},"updated":"2016-07-26 06:29:07.000000000","message":"preserve_metadata here must be False, cause it\u0027s in the \u0027else\u0027 section. Why use preserve_metadata as the flag to distinguish share_rpcapi and data_rpcapi?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1567,"context_line":"                self.db.share_backup_update("},{"line_number":1568,"context_line":"                    context, backup_ref[\u0027id\u0027], {\u0027topic\u0027: CONF.data_topic})"},{"line_number":1569,"context_line":"                data_rpc \u003d data_rpcapi.DataAPI()"},{"line_number":1570,"context_line":"                data_rpc.create_backup(context, backup_ref, preserve_metadata)"},{"line_number":1571,"context_line":"        except Exception:"},{"line_number":1572,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1573,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_06fcb66e","line":1570,"range":{"start_line":1570,"start_character":60,"end_line":1570,"end_character":77},"in_reply_to":"dada55a8_c2c2c384","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1578,"context_line":"        \"\"\"Make the RPC call to delete a share backup."},{"line_number":1579,"context_line":""},{"line_number":1580,"context_line":"        :param context: running context"},{"line_number":1581,"context_line":"        :param backup: the dict of backup that is got from DB."},{"line_number":1582,"context_line":"        :raises: InvalidBackup"},{"line_number":1583,"context_line":"        :raises: BackupDriverException"},{"line_number":1584,"context_line":"        :raises: ServiceNotFound"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_1d513a0f","line":1581,"range":{"start_line":1581,"start_character":27,"end_line":1581,"end_character":31},"updated":"2016-07-22 21:54:24.000000000","message":"isn\u0027t it a model?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1578,"context_line":"        \"\"\"Make the RPC call to delete a share backup."},{"line_number":1579,"context_line":""},{"line_number":1580,"context_line":"        :param context: running context"},{"line_number":1581,"context_line":"        :param backup: the dict of backup that is got from DB."},{"line_number":1582,"context_line":"        :raises: InvalidBackup"},{"line_number":1583,"context_line":"        :raises: BackupDriverException"},{"line_number":1584,"context_line":"        :raises: ServiceNotFound"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_3d4cfe75","line":1581,"range":{"start_line":1581,"start_character":50,"end_line":1581,"end_character":53},"updated":"2016-07-22 21:54:24.000000000","message":"retrieved","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1578,"context_line":"        \"\"\"Make the RPC call to delete a share backup."},{"line_number":1579,"context_line":""},{"line_number":1580,"context_line":"        :param context: running context"},{"line_number":1581,"context_line":"        :param backup: the dict of backup that is got from DB."},{"line_number":1582,"context_line":"        :raises: InvalidBackup"},{"line_number":1583,"context_line":"        :raises: BackupDriverException"},{"line_number":1584,"context_line":"        :raises: ServiceNotFound"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_46b4f580","line":1581,"range":{"start_line":1581,"start_character":27,"end_line":1581,"end_character":31},"in_reply_to":"dada55a8_1d513a0f","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1578,"context_line":"        \"\"\"Make the RPC call to delete a share backup."},{"line_number":1579,"context_line":""},{"line_number":1580,"context_line":"        :param context: running context"},{"line_number":1581,"context_line":"        :param backup: the dict of backup that is got from DB."},{"line_number":1582,"context_line":"        :raises: InvalidBackup"},{"line_number":1583,"context_line":"        :raises: BackupDriverException"},{"line_number":1584,"context_line":"        :raises: ServiceNotFound"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_26b9017a","line":1581,"range":{"start_line":1581,"start_character":50,"end_line":1581,"end_character":53},"in_reply_to":"dada55a8_3d4cfe75","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"        \"\"\""},{"line_number":1586,"context_line":"        if backup.status not in [constants.STATUS_AVAILABLE,"},{"line_number":1587,"context_line":"                                 constants.STATUS_ERROR]:"},{"line_number":1588,"context_line":"            msg \u003d _(\u0027Backup status must be available or error\u0027)"},{"line_number":1589,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1590,"context_line":""},{"line_number":1591,"context_line":"        self.db.share_backup_update("}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_5db8d2e5","line":1588,"range":{"start_line":1588,"start_character":27,"end_line":1588,"end_character":40},"updated":"2016-07-22 21:54:24.000000000","message":"include the ID","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"        \"\"\""},{"line_number":1586,"context_line":"        if backup.status not in [constants.STATUS_AVAILABLE,"},{"line_number":1587,"context_line":"                                 constants.STATUS_ERROR]:"},{"line_number":1588,"context_line":"            msg \u003d _(\u0027Backup status must be available or error\u0027)"},{"line_number":1589,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1590,"context_line":""},{"line_number":1591,"context_line":"        self.db.share_backup_update("}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e669a9fa","line":1588,"range":{"start_line":1588,"start_character":27,"end_line":1588,"end_character":40},"in_reply_to":"dada55a8_5db8d2e5","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1590,"context_line":""},{"line_number":1591,"context_line":"        self.db.share_backup_update("},{"line_number":1592,"context_line":"            context, backup[\u0027id\u0027],"},{"line_number":1593,"context_line":"            {"},{"line_number":1594,"context_line":"                \u0027status\u0027: constants.STATUS_DELETING,"},{"line_number":1595,"context_line":"            }"},{"line_number":1596,"context_line":"        )"},{"line_number":1597,"context_line":""},{"line_number":1598,"context_line":"        if backup[\u0027topic\u0027] \u003d\u003d CONF.share_topic:"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_7d6dd6cb","line":1595,"range":{"start_line":1593,"start_character":12,"end_line":1595,"end_character":13},"updated":"2016-07-22 21:54:24.000000000","message":"fits one line\n\n{\u0027status\u0027:constants.STATUS_DELETING}","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1590,"context_line":""},{"line_number":1591,"context_line":"        self.db.share_backup_update("},{"line_number":1592,"context_line":"            context, backup[\u0027id\u0027],"},{"line_number":1593,"context_line":"            {"},{"line_number":1594,"context_line":"                \u0027status\u0027: constants.STATUS_DELETING,"},{"line_number":1595,"context_line":"            }"},{"line_number":1596,"context_line":"        )"},{"line_number":1597,"context_line":""},{"line_number":1598,"context_line":"        if backup[\u0027topic\u0027] \u003d\u003d CONF.share_topic:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_46107559","line":1595,"range":{"start_line":1593,"start_character":12,"end_line":1595,"end_character":13},"in_reply_to":"dada55a8_7d6dd6cb","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1609,"context_line":"        \"\"\"Make the RPC call to restore a backup.\"\"\""},{"line_number":1610,"context_line":"        backup \u003d self.db.share_backup_get(context, backup_id)"},{"line_number":1611,"context_line":"        if backup[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":1612,"context_line":"            msg \u003d _(\u0027Backup status must be available\u0027)"},{"line_number":1613,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1614,"context_line":""},{"line_number":1615,"context_line":"        size \u003d backup[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_7db3160b","line":1612,"range":{"start_line":1612,"start_character":28,"end_line":1612,"end_character":42},"updated":"2016-07-22 21:54:24.000000000","message":"include the ID","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1609,"context_line":"        \"\"\"Make the RPC call to restore a backup.\"\"\""},{"line_number":1610,"context_line":"        backup \u003d self.db.share_backup_get(context, backup_id)"},{"line_number":1611,"context_line":"        if backup[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":1612,"context_line":"            msg \u003d _(\u0027Backup status must be available\u0027)"},{"line_number":1613,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1614,"context_line":""},{"line_number":1615,"context_line":"        size \u003d backup[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_a12f9b86","line":1612,"range":{"start_line":1612,"start_character":28,"end_line":1612,"end_character":42},"in_reply_to":"dada55a8_7db3160b","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1614,"context_line":""},{"line_number":1615,"context_line":"        size \u003d backup[\u0027size\u0027]"},{"line_number":1616,"context_line":"        if size is None:"},{"line_number":1617,"context_line":"            msg \u003d _(\u0027Backup to be restored has invalid size.\u0027)"},{"line_number":1618,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1619,"context_line":""},{"line_number":1620,"context_line":"        if (strutils.bool_from_string(preserve_metadata) and"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_ddede2f0","line":1617,"range":{"start_line":1617,"start_character":31,"end_line":1617,"end_character":50},"updated":"2016-07-22 21:54:24.000000000","message":"include the ID","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1614,"context_line":""},{"line_number":1615,"context_line":"        size \u003d backup[\u0027size\u0027]"},{"line_number":1616,"context_line":"        if size is None:"},{"line_number":1617,"context_line":"            msg \u003d _(\u0027Backup to be restored has invalid size.\u0027)"},{"line_number":1618,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1619,"context_line":""},{"line_number":1620,"context_line":"        if (strutils.bool_from_string(preserve_metadata) and"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_014f876b","line":1617,"range":{"start_line":1617,"start_character":31,"end_line":1617,"end_character":50},"in_reply_to":"dada55a8_ddede2f0","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"            msg \u003d _(\u0027Backup to be restored has invalid size.\u0027)"},{"line_number":1618,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1619,"context_line":""},{"line_number":1620,"context_line":"        if (strutils.bool_from_string(preserve_metadata) and"},{"line_number":1621,"context_line":"                backup[\u0027topic\u0027] \u003d\u003d CONF.data_topic):"},{"line_number":1622,"context_line":"            msg \u003d _(\u0027General restore could not save metadata.\u0027)"},{"line_number":1623,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_5daf3294","line":1620,"range":{"start_line":1620,"start_character":11,"end_line":1620,"end_character":56},"updated":"2016-07-22 21:54:24.000000000","message":"validate boolean in previous layer","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"            msg \u003d _(\u0027Backup to be restored has invalid size.\u0027)"},{"line_number":1618,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1619,"context_line":""},{"line_number":1620,"context_line":"        if (strutils.bool_from_string(preserve_metadata) and"},{"line_number":1621,"context_line":"                backup[\u0027topic\u0027] \u003d\u003d CONF.data_topic):"},{"line_number":1622,"context_line":"            msg \u003d _(\u0027General restore could not save metadata.\u0027)"},{"line_number":1623,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_636924f9","line":1620,"range":{"start_line":1620,"start_character":11,"end_line":1620,"end_character":56},"in_reply_to":"dada55a8_5daf3294","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1619,"context_line":""},{"line_number":1620,"context_line":"        if (strutils.bool_from_string(preserve_metadata) and"},{"line_number":1621,"context_line":"                backup[\u0027topic\u0027] \u003d\u003d CONF.data_topic):"},{"line_number":1622,"context_line":"            msg \u003d _(\u0027General restore could not save metadata.\u0027)"},{"line_number":1623,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1624,"context_line":""},{"line_number":1625,"context_line":"        # Create a share if none specified. If a share is specified check"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_ddc4c260","line":1622,"range":{"start_line":1622,"start_character":37,"end_line":1622,"end_character":46},"updated":"2016-07-22 21:54:24.000000000","message":"cannot","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1619,"context_line":""},{"line_number":1620,"context_line":"        if (strutils.bool_from_string(preserve_metadata) and"},{"line_number":1621,"context_line":"                backup[\u0027topic\u0027] \u003d\u003d CONF.data_topic):"},{"line_number":1622,"context_line":"            msg \u003d _(\u0027General restore could not save metadata.\u0027)"},{"line_number":1623,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1624,"context_line":""},{"line_number":1625,"context_line":"        # Create a share if none specified. If a share is specified check"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e17a3387","line":1622,"range":{"start_line":1622,"start_character":37,"end_line":1622,"end_character":46},"in_reply_to":"dada55a8_ddc4c260","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1623,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1624,"context_line":""},{"line_number":1625,"context_line":"        # Create a share if none specified. If a share is specified check"},{"line_number":1626,"context_line":"        # it is large enough for the backup"},{"line_number":1627,"context_line":"        if share_id is None:"},{"line_number":1628,"context_line":"            name \u003d \u0027restore_backup_%s\u0027 % backup_id"},{"line_number":1629,"context_line":"            description \u003d \u0027auto-created_from_restore_from_backup\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_7daf967d","line":1626,"range":{"start_line":1626,"start_character":10,"end_line":1626,"end_character":15},"updated":"2016-07-22 21:54:24.000000000","message":"if it is","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1623,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1624,"context_line":""},{"line_number":1625,"context_line":"        # Create a share if none specified. If a share is specified check"},{"line_number":1626,"context_line":"        # it is large enough for the backup"},{"line_number":1627,"context_line":"        if share_id is None:"},{"line_number":1628,"context_line":"            name \u003d \u0027restore_backup_%s\u0027 % backup_id"},{"line_number":1629,"context_line":"            description \u003d \u0027auto-created_from_restore_from_backup\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_c160cfd1","line":1626,"range":{"start_line":1626,"start_character":10,"end_line":1626,"end_character":15},"in_reply_to":"dada55a8_7daf967d","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1636,"context_line":"                                name, description)"},{"line_number":1637,"context_line":"            share_id \u003d share[\u0027id\u0027]"},{"line_number":1638,"context_line":""},{"line_number":1639,"context_line":"            tries \u003d 0"},{"line_number":1640,"context_line":"            while True:"},{"line_number":1641,"context_line":"                tries +\u003d 1"},{"line_number":1642,"context_line":"                share \u003d self.get(context, share_id)"},{"line_number":1643,"context_line":"                if share[\u0027status\u0027] !\u003d constants.STATUS_CREATING:"},{"line_number":1644,"context_line":"                    break"},{"line_number":1645,"context_line":"                time.sleep(tries ** 2)"},{"line_number":1646,"context_line":"        else:"},{"line_number":1647,"context_line":"            share \u003d self.get(context, share_id)"},{"line_number":1648,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_bd3e2e27","line":1645,"range":{"start_line":1639,"start_character":11,"end_line":1645,"end_character":38},"updated":"2016-07-22 21:54:24.000000000","message":"use manila.utils.retry","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1636,"context_line":"                                name, description)"},{"line_number":1637,"context_line":"            share_id \u003d share[\u0027id\u0027]"},{"line_number":1638,"context_line":""},{"line_number":1639,"context_line":"            tries \u003d 0"},{"line_number":1640,"context_line":"            while True:"},{"line_number":1641,"context_line":"                tries +\u003d 1"},{"line_number":1642,"context_line":"                share \u003d self.get(context, share_id)"},{"line_number":1643,"context_line":"                if share[\u0027status\u0027] !\u003d constants.STATUS_CREATING:"},{"line_number":1644,"context_line":"                    break"},{"line_number":1645,"context_line":"                time.sleep(tries ** 2)"},{"line_number":1646,"context_line":"        else:"},{"line_number":1647,"context_line":"            share \u003d self.get(context, share_id)"},{"line_number":1648,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_40aa161a","line":1645,"range":{"start_line":1639,"start_character":11,"end_line":1645,"end_character":38},"in_reply_to":"dada55a8_bd3e2e27","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1647,"context_line":"            share \u003d self.get(context, share_id)"},{"line_number":1648,"context_line":""},{"line_number":1649,"context_line":"        if share[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":1650,"context_line":"            msg \u003d _(\u0027share to be restored to must be available\u0027)"},{"line_number":1651,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":1652,"context_line":""},{"line_number":1653,"context_line":"        LOG.debug(\u0027Checking backup size %(backup_size)s against share size \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_dd1cc2c3","line":1650,"range":{"start_line":1650,"start_character":21,"end_line":1650,"end_character":22},"updated":"2016-07-22 21:54:24.000000000","message":"S","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1647,"context_line":"            share \u003d self.get(context, share_id)"},{"line_number":1648,"context_line":""},{"line_number":1649,"context_line":"        if share[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":1650,"context_line":"            msg \u003d _(\u0027share to be restored to must be available\u0027)"},{"line_number":1651,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":1652,"context_line":""},{"line_number":1653,"context_line":"        LOG.debug(\u0027Checking backup size %(backup_size)s against share size \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_3d787ef8","line":1650,"range":{"start_line":1650,"start_character":61,"end_line":1650,"end_character":63},"updated":"2016-07-22 21:54:24.000000000","message":"period","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1647,"context_line":"            share \u003d self.get(context, share_id)"},{"line_number":1648,"context_line":""},{"line_number":1649,"context_line":"        if share[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":1650,"context_line":"            msg \u003d _(\u0027share to be restored to must be available\u0027)"},{"line_number":1651,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":1652,"context_line":""},{"line_number":1653,"context_line":"        LOG.debug(\u0027Checking backup size %(backup_size)s against share size \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_0184a75b","line":1650,"range":{"start_line":1650,"start_character":61,"end_line":1650,"end_character":63},"in_reply_to":"dada55a8_3d787ef8","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1647,"context_line":"            share \u003d self.get(context, share_id)"},{"line_number":1648,"context_line":""},{"line_number":1649,"context_line":"        if share[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":1650,"context_line":"            msg \u003d _(\u0027share to be restored to must be available\u0027)"},{"line_number":1651,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":1652,"context_line":""},{"line_number":1653,"context_line":"        LOG.debug(\u0027Checking backup size %(backup_size)s against share size \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e1887373","line":1650,"range":{"start_line":1650,"start_character":21,"end_line":1650,"end_character":22},"in_reply_to":"dada55a8_dd1cc2c3","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1654,"context_line":"                  \u0027%(share_size)s\u0027, {\u0027backup_size\u0027: size,"},{"line_number":1655,"context_line":"                                     \u0027share_size\u0027: share[\u0027size\u0027]})"},{"line_number":1656,"context_line":"        if size \u003e share[\u0027size\u0027]:"},{"line_number":1657,"context_line":"            msg \u003d (_(\u0027share size %(share_size)d is too small to restore \u0027"},{"line_number":1658,"context_line":"                     \u0027backup of size %(size)d.\u0027) %"},{"line_number":1659,"context_line":"                   {\u0027share_size\u0027: share[\u0027size\u0027], \u0027size\u0027: size})"},{"line_number":1660,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_fd76e604","line":1657,"range":{"start_line":1657,"start_character":22,"end_line":1657,"end_character":23},"updated":"2016-07-22 21:54:24.000000000","message":"S","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1654,"context_line":"                  \u0027%(share_size)s\u0027, {\u0027backup_size\u0027: size,"},{"line_number":1655,"context_line":"                                     \u0027share_size\u0027: share[\u0027size\u0027]})"},{"line_number":1656,"context_line":"        if size \u003e share[\u0027size\u0027]:"},{"line_number":1657,"context_line":"            msg \u003d (_(\u0027share size %(share_size)d is too small to restore \u0027"},{"line_number":1658,"context_line":"                     \u0027backup of size %(size)d.\u0027) %"},{"line_number":1659,"context_line":"                   {\u0027share_size\u0027: share[\u0027size\u0027], \u0027size\u0027: size})"},{"line_number":1660,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_a1b4bb34","line":1657,"range":{"start_line":1657,"start_character":22,"end_line":1657,"end_character":23},"in_reply_to":"dada55a8_fd76e604","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1667,"context_line":"        self.db.share_backup_update("},{"line_number":1668,"context_line":"            context, backup[\u0027id\u0027],"},{"line_number":1669,"context_line":"            {"},{"line_number":1670,"context_line":"                \u0027status\u0027: constants.STATUS_RESTORING,"},{"line_number":1671,"context_line":"                \u0027restore_share_id\u0027: share[\u0027id\u0027],"},{"line_number":1672,"context_line":"            }"},{"line_number":1673,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_f89274f5","line":1670,"range":{"start_line":1670,"start_character":17,"end_line":1670,"end_character":53},"updated":"2016-07-22 21:54:24.000000000","message":"isn\u0027t it possible that you could restore more than one backup at the same time? Like, restore backup_1 to share_1 and share_2","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1667,"context_line":"        self.db.share_backup_update("},{"line_number":1668,"context_line":"            context, backup[\u0027id\u0027],"},{"line_number":1669,"context_line":"            {"},{"line_number":1670,"context_line":"                \u0027status\u0027: constants.STATUS_RESTORING,"},{"line_number":1671,"context_line":"                \u0027restore_share_id\u0027: share[\u0027id\u0027],"},{"line_number":1672,"context_line":"            }"},{"line_number":1673,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_2050c2d3","line":1670,"range":{"start_line":1670,"start_character":17,"end_line":1670,"end_character":53},"in_reply_to":"dada55a8_f89274f5","updated":"2016-08-01 11:46:16.000000000","message":"It could not restore more than one backup at the same time.\nDone","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1668,"context_line":"            context, backup[\u0027id\u0027],"},{"line_number":1669,"context_line":"            {"},{"line_number":1670,"context_line":"                \u0027status\u0027: constants.STATUS_RESTORING,"},{"line_number":1671,"context_line":"                \u0027restore_share_id\u0027: share[\u0027id\u0027],"},{"line_number":1672,"context_line":"            }"},{"line_number":1673,"context_line":"        )"},{"line_number":1674,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_3dbb5e77","line":1671,"range":{"start_line":1671,"start_character":16,"end_line":1671,"end_character":34},"updated":"2016-07-22 21:54:24.000000000","message":"where is this field in the table?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1668,"context_line":"            context, backup[\u0027id\u0027],"},{"line_number":1669,"context_line":"            {"},{"line_number":1670,"context_line":"                \u0027status\u0027: constants.STATUS_RESTORING,"},{"line_number":1671,"context_line":"                \u0027restore_share_id\u0027: share[\u0027id\u0027],"},{"line_number":1672,"context_line":"            }"},{"line_number":1673,"context_line":"        )"},{"line_number":1674,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_a07e7267","line":1671,"range":{"start_line":1671,"start_character":16,"end_line":1671,"end_character":34},"in_reply_to":"dada55a8_3dbb5e77","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1682,"context_line":"            data_rpc \u003d data_rpcapi.DataAPI()"},{"line_number":1683,"context_line":"            data_rpc.restore_backup(context, backup, share, preserve_metadata)"},{"line_number":1684,"context_line":"        else:"},{"line_number":1685,"context_line":"            msg \u003d _(\u0027Backup topic must be share topic or data topic\u0027)"},{"line_number":1686,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1687,"context_line":""},{"line_number":1688,"context_line":"        d \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_fd570624","line":1685,"range":{"start_line":1685,"start_character":62,"end_line":1685,"end_character":67},"updated":"2016-07-22 21:54:24.000000000","message":"period","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1682,"context_line":"            data_rpc \u003d data_rpcapi.DataAPI()"},{"line_number":1683,"context_line":"            data_rpc.restore_backup(context, backup, share, preserve_metadata)"},{"line_number":1684,"context_line":"        else:"},{"line_number":1685,"context_line":"            msg \u003d _(\u0027Backup topic must be share topic or data topic\u0027)"},{"line_number":1686,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1687,"context_line":""},{"line_number":1688,"context_line":"        d \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_21cd6bb7","line":1685,"range":{"start_line":1685,"start_character":62,"end_line":1685,"end_character":67},"in_reply_to":"dada55a8_fd570624","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1685,"context_line":"            msg \u003d _(\u0027Backup topic must be share topic or data topic\u0027)"},{"line_number":1686,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1687,"context_line":""},{"line_number":1688,"context_line":"        d \u003d {"},{"line_number":1689,"context_line":"            \u0027backup_id\u0027: backup_id,"},{"line_number":1690,"context_line":"            \u0027share_id\u0027: share_id,"},{"line_number":1691,"context_line":"        }"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"        return d"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_dd2b2293","line":1691,"range":{"start_line":1688,"start_character":8,"end_line":1691,"end_character":9},"updated":"2016-07-22 21:54:24.000000000","message":"what is d? please use a more descritive variable name. Also, that dict fits one line.","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1685,"context_line":"            msg \u003d _(\u0027Backup topic must be share topic or data topic\u0027)"},{"line_number":1686,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1687,"context_line":""},{"line_number":1688,"context_line":"        d \u003d {"},{"line_number":1689,"context_line":"            \u0027backup_id\u0027: backup_id,"},{"line_number":1690,"context_line":"            \u0027share_id\u0027: share_id,"},{"line_number":1691,"context_line":"        }"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"        return d"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_81741768","line":1691,"range":{"start_line":1688,"start_character":8,"end_line":1691,"end_character":9},"in_reply_to":"dada55a8_dd2b2293","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1690,"context_line":"            \u0027share_id\u0027: share_id,"},{"line_number":1691,"context_line":"        }"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"        return d"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_3d17de55","line":1693,"range":{"start_line":1693,"start_character":8,"end_line":1693,"end_character":16},"updated":"2016-07-22 21:54:24.000000000","message":"what is d?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1690,"context_line":"            \u0027share_id\u0027: share_id,"},{"line_number":1691,"context_line":"        }"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"        return d"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_c16a8f80","line":1693,"range":{"start_line":1693,"start_character":8,"end_line":1693,"end_character":16},"in_reply_to":"dada55a8_3d17de55","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"    def create_share_backup(self, context, backup, preserve_metadata\u003dTrue):"},{"line_number":1479,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":1480,"context_line":"        share \u003d self.get(context, share_id)"},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"        self._check_is_share_busy(share)"},{"line_number":1483,"context_line":"        # Ensure share status is \u0027available\u0027."}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_2fd6edf0","line":1480,"range":{"start_line":1480,"start_character":8,"end_line":1480,"end_character":43},"updated":"2016-08-01 16:08:40.000000000","message":"you are getting it twice, in the API layer and here, I suggesting receiving it in this method. This will also allow you to use @policy.wrap_check_policy(\u0027share\u0027), which is missing","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"    def create_share_backup(self, context, backup, preserve_metadata\u003dTrue):"},{"line_number":1479,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":1480,"context_line":"        share \u003d self.get(context, share_id)"},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"        self._check_is_share_busy(share)"},{"line_number":1483,"context_line":"        # Ensure share status is \u0027available\u0027."}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_2e7b532b","line":1480,"range":{"start_line":1480,"start_character":8,"end_line":1480,"end_character":43},"in_reply_to":"bacf61ea_2fd6edf0","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":1560,"context_line":"            self.db.share_backup_update("},{"line_number":1561,"context_line":"                context, backup_ref[\u0027id\u0027],"},{"line_number":1562,"context_line":"                {\u0027host\u0027: backup_ref[\u0027host\u0027], \u0027topic\u0027: CONF.share_topic})"},{"line_number":1563,"context_line":"            self.share_rpcapi.create_backup(context, backup_ref,"},{"line_number":1564,"context_line":"                                            preserve_metadata)"},{"line_number":1565,"context_line":"        except Exception as e:"},{"line_number":1566,"context_line":"            msg \u003d six.text_type(e)"},{"line_number":1567,"context_line":"            LOG.exception(msg)"},{"line_number":1568,"context_line":"            LOG.warning(_LW(\"Driver did not backup share %s. Proceeding \""},{"line_number":1569,"context_line":"                            \"with generic backup approach.\") % share_id)"},{"line_number":1570,"context_line":""},{"line_number":1571,"context_line":"        try:"},{"line_number":1572,"context_line":"            self.db.share_backup_update("}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_6f9bc518","line":1569,"range":{"start_line":1563,"start_character":12,"end_line":1569,"end_character":72},"updated":"2016-08-01 16:08:40.000000000","message":"this is asynchronous, once you send the RPC, it will not throw any exception if the code in share/manager.py throws one. This section \"use driver approach, if fails use generic\" should be in share/manager.py","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":1560,"context_line":"            self.db.share_backup_update("},{"line_number":1561,"context_line":"                context, backup_ref[\u0027id\u0027],"},{"line_number":1562,"context_line":"                {\u0027host\u0027: backup_ref[\u0027host\u0027], \u0027topic\u0027: CONF.share_topic})"},{"line_number":1563,"context_line":"            self.share_rpcapi.create_backup(context, backup_ref,"},{"line_number":1564,"context_line":"                                            preserve_metadata)"},{"line_number":1565,"context_line":"        except Exception as e:"},{"line_number":1566,"context_line":"            msg \u003d six.text_type(e)"},{"line_number":1567,"context_line":"            LOG.exception(msg)"},{"line_number":1568,"context_line":"            LOG.warning(_LW(\"Driver did not backup share %s. Proceeding \""},{"line_number":1569,"context_line":"                            \"with generic backup approach.\") % share_id)"},{"line_number":1570,"context_line":""},{"line_number":1571,"context_line":"        try:"},{"line_number":1572,"context_line":"            self.db.share_backup_update("}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_6e570b27","line":1569,"range":{"start_line":1563,"start_character":12,"end_line":1569,"end_character":72},"in_reply_to":"bacf61ea_6f9bc518","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":1590,"context_line":"        \"\"\""},{"line_number":1591,"context_line":"        if backup.status not in [constants.STATUS_AVAILABLE,"},{"line_number":1592,"context_line":"                                 constants.STATUS_ERROR]:"},{"line_number":1593,"context_line":"            msg \u003d (_(\u0027Backup %s status must be available or error\u0027)"},{"line_number":1594,"context_line":"                   % backup)"},{"line_number":1595,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1596,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_2f8eedcf","line":1593,"range":{"start_line":1593,"start_character":64,"end_line":1593,"end_character":66},"updated":"2016-08-01 16:08:40.000000000","message":"period","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":1590,"context_line":"        \"\"\""},{"line_number":1591,"context_line":"        if backup.status not in [constants.STATUS_AVAILABLE,"},{"line_number":1592,"context_line":"                                 constants.STATUS_ERROR]:"},{"line_number":1593,"context_line":"            msg \u003d (_(\u0027Backup %s status must be available or error\u0027)"},{"line_number":1594,"context_line":"                   % backup)"},{"line_number":1595,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1596,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_ceb397e8","line":1593,"range":{"start_line":1593,"start_character":64,"end_line":1593,"end_character":66},"in_reply_to":"bacf61ea_2f8eedcf","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":1611,"context_line":"        \"\"\"Make the RPC call to restore a backup.\"\"\""},{"line_number":1612,"context_line":"        backup \u003d self.db.share_backup_get(context, backup_id)"},{"line_number":1613,"context_line":"        if backup[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":1614,"context_line":"            msg \u003d (_(\u0027Backup %s status must be available\u0027) % backup[\u0027id\u0027])"},{"line_number":1615,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1616,"context_line":""},{"line_number":1617,"context_line":"        size \u003d backup[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_0fb4c97d","line":1614,"range":{"start_line":1614,"start_character":55,"end_line":1614,"end_character":57},"updated":"2016-08-01 16:08:40.000000000","message":"period","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":1611,"context_line":"        \"\"\"Make the RPC call to restore a backup.\"\"\""},{"line_number":1612,"context_line":"        backup \u003d self.db.share_backup_get(context, backup_id)"},{"line_number":1613,"context_line":"        if backup[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":1614,"context_line":"            msg \u003d (_(\u0027Backup %s status must be available\u0027) % backup[\u0027id\u0027])"},{"line_number":1615,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1616,"context_line":""},{"line_number":1617,"context_line":"        size \u003d backup[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_0ec64f49","line":1614,"range":{"start_line":1614,"start_character":55,"end_line":1614,"end_character":57},"in_reply_to":"bacf61ea_0fb4c97d","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":1646,"context_line":"            share \u003d self.create(context, share[\u0027share_proto\u0027], size,"},{"line_number":1647,"context_line":"                                name, description)"},{"line_number":1648,"context_line":"            share_id \u003d share[\u0027id\u0027]"},{"line_number":1649,"context_line":"            _excute(context, share_id)"},{"line_number":1650,"context_line":"            "},{"line_number":1651,"context_line":"        else:"},{"line_number":1652,"context_line":"            share \u003d self.get(context, share_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_cf43d16a","line":1649,"range":{"start_line":1649,"start_character":12,"end_line":1649,"end_character":19},"updated":"2016-08-01 16:08:40.000000000","message":"should be \"_execute\"","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":1646,"context_line":"            share \u003d self.create(context, share[\u0027share_proto\u0027], size,"},{"line_number":1647,"context_line":"                                name, description)"},{"line_number":1648,"context_line":"            share_id \u003d share[\u0027id\u0027]"},{"line_number":1649,"context_line":"            _excute(context, share_id)"},{"line_number":1650,"context_line":"            "},{"line_number":1651,"context_line":"        else:"},{"line_number":1652,"context_line":"            share \u003d self.get(context, share_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_4ed7a7ed","line":1649,"range":{"start_line":1649,"start_character":12,"end_line":1649,"end_character":19},"in_reply_to":"bacf61ea_cf43d16a","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"40ecce1d4de34f518818319ba9d3b6e04d78ba42","unresolved":false,"context_lines":[{"line_number":1647,"context_line":"                                name, description)"},{"line_number":1648,"context_line":"            share_id \u003d share[\u0027id\u0027]"},{"line_number":1649,"context_line":"            _excute(context, share_id)"},{"line_number":1650,"context_line":"            "},{"line_number":1651,"context_line":"        else:"},{"line_number":1652,"context_line":"            share \u003d self.get(context, share_id)"},{"line_number":1653,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_ef75f5ca","line":1650,"range":{"start_line":1650,"start_character":3,"end_line":1650,"end_character":7},"updated":"2016-08-01 16:08:40.000000000","message":"trailing space","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"656e4b9532c6180473e4cf9e72d806aee30117f5","unresolved":false,"context_lines":[{"line_number":1647,"context_line":"                                name, description)"},{"line_number":1648,"context_line":"            share_id \u003d share[\u0027id\u0027]"},{"line_number":1649,"context_line":"            _excute(context, share_id)"},{"line_number":1650,"context_line":"            "},{"line_number":1651,"context_line":"        else:"},{"line_number":1652,"context_line":"            share \u003d self.get(context, share_id)"},{"line_number":1653,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_ce01d76c","line":1650,"range":{"start_line":1650,"start_character":3,"end_line":1650,"end_character":7},"in_reply_to":"bacf61ea_ef75f5ca","updated":"2016-08-02 14:29:53.000000000","message":"Done","commit_id":"d410a25e4a1c0e6ad92e1ce50bc5f0f6d4072054"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"480f0eecf87d0bc6f1801962cbe108d4b87d9b3e","unresolved":false,"context_lines":[{"line_number":1554,"context_line":"        self.db.share_update("},{"line_number":1555,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_BACKINGUP})"},{"line_number":1556,"context_line":""},{"line_number":1557,"context_line":"        try:"},{"line_number":1558,"context_line":"            backup_ref[\u0027driver_option\u0027] \u003d backup.get(\u0027driver_option\u0027)"},{"line_number":1559,"context_line":"            backup_ref[\u0027host\u0027] \u003d share[\u0027host\u0027]"},{"line_number":1560,"context_line":"            self.db.share_backup_update("},{"line_number":1561,"context_line":"                context, backup_ref[\u0027id\u0027],"},{"line_number":1562,"context_line":"                {\u0027host\u0027: backup_ref[\u0027host\u0027], \u0027topic\u0027: CONF.share_topic})"},{"line_number":1563,"context_line":"        except Exception as e:"},{"line_number":1564,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1565,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_1e617da9","line":1562,"range":{"start_line":1557,"start_character":7,"end_line":1562,"end_character":72},"updated":"2016-08-11 19:02:27.000000000","message":"why is this in a try except block?","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a9eda54ce1d3de4ab5a1fd260bc29dcc131b8377","unresolved":false,"context_lines":[{"line_number":1554,"context_line":"        self.db.share_update("},{"line_number":1555,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_BACKINGUP})"},{"line_number":1556,"context_line":""},{"line_number":1557,"context_line":"        try:"},{"line_number":1558,"context_line":"            backup_ref[\u0027driver_option\u0027] \u003d backup.get(\u0027driver_option\u0027)"},{"line_number":1559,"context_line":"            backup_ref[\u0027host\u0027] \u003d share[\u0027host\u0027]"},{"line_number":1560,"context_line":"            self.db.share_backup_update("},{"line_number":1561,"context_line":"                context, backup_ref[\u0027id\u0027],"},{"line_number":1562,"context_line":"                {\u0027host\u0027: backup_ref[\u0027host\u0027], \u0027topic\u0027: CONF.share_topic})"},{"line_number":1563,"context_line":"        except Exception as e:"},{"line_number":1564,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1565,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_d0c042e3","line":1562,"range":{"start_line":1557,"start_character":7,"end_line":1562,"end_character":72},"in_reply_to":"9ad45d7e_1e617da9","updated":"2016-08-15 09:11:39.000000000","message":"Done","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"480f0eecf87d0bc6f1801962cbe108d4b87d9b3e","unresolved":false,"context_lines":[{"line_number":1601,"context_line":"        \"\"\"Make the RPC call to restore a backup.\"\"\""},{"line_number":1602,"context_line":"        backup \u003d self.db.share_backup_get(context, backup_id)"},{"line_number":1603,"context_line":"        if backup[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":1604,"context_line":"            msg \u003d (_(\u0027Backup %s status must be available\u0027) % backup[\u0027id\u0027])"},{"line_number":1605,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"        size \u003d backup[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_9e756d65","line":1604,"range":{"start_line":1604,"start_character":55,"end_line":1604,"end_character":56},"updated":"2016-08-11 19:02:27.000000000","message":"period","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a9eda54ce1d3de4ab5a1fd260bc29dcc131b8377","unresolved":false,"context_lines":[{"line_number":1601,"context_line":"        \"\"\"Make the RPC call to restore a backup.\"\"\""},{"line_number":1602,"context_line":"        backup \u003d self.db.share_backup_get(context, backup_id)"},{"line_number":1603,"context_line":"        if backup[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":1604,"context_line":"            msg \u003d (_(\u0027Backup %s status must be available\u0027) % backup[\u0027id\u0027])"},{"line_number":1605,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"        size \u003d backup[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_907ecaac","line":1604,"range":{"start_line":1604,"start_character":55,"end_line":1604,"end_character":56},"in_reply_to":"9ad45d7e_9e756d65","updated":"2016-08-15 09:11:39.000000000","message":"Done","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"                        quota\u003dquotas[\u0027backup_gigabytes\u0027])"},{"line_number":1521,"context_line":"                elif \u0027backups\u0027 in over:"},{"line_number":1522,"context_line":"                    msg \u003d _LW(\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":1523,"context_line":"                              \"backup (%(d_consumed)d backups \""},{"line_number":1524,"context_line":"                              \"already consumed.)\")"},{"line_number":1525,"context_line":""},{"line_number":1526,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_dcddba15","line":1523,"range":{"start_line":1523,"start_character":37,"end_line":1523,"end_character":38},"updated":"2016-08-22 09:29:32.000000000","message":", but","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":1520,"context_line":"                        quota\u003dquotas[\u0027backup_gigabytes\u0027])"},{"line_number":1521,"context_line":"                elif \u0027backups\u0027 in over:"},{"line_number":1522,"context_line":"                    msg \u003d _LW(\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":1523,"context_line":"                              \"backup (%(d_consumed)d backups \""},{"line_number":1524,"context_line":"                              \"already consumed.)\")"},{"line_number":1525,"context_line":""},{"line_number":1526,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_f1833454","line":1523,"range":{"start_line":1523,"start_character":37,"end_line":1523,"end_character":38},"in_reply_to":"1ac06dbe_dcddba15","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1546,"context_line":"        except Exception:"},{"line_number":1547,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1548,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":1549,"context_line":"                return"},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"        self.db.share_backup_update("},{"line_number":1552,"context_line":"            context, backup_ref[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_CREATING})"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_9ce6a2b2","line":1549,"updated":"2016-08-22 09:29:32.000000000","message":"this return is not necessary, will raise exception anyway.","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":1546,"context_line":"        except Exception:"},{"line_number":1547,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1548,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":1549,"context_line":"                return"},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"        self.db.share_backup_update("},{"line_number":1552,"context_line":"            context, backup_ref[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_CREATING})"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_1171b0a8","line":1549,"in_reply_to":"1ac06dbe_9ce6a2b2","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1558,"context_line":"        backup_ref[\u0027host\u0027] \u003d share[\u0027host\u0027]"},{"line_number":1559,"context_line":"        self.db.share_backup_update("},{"line_number":1560,"context_line":"            context, backup_ref[\u0027id\u0027],"},{"line_number":1561,"context_line":"            {\u0027host\u0027: backup_ref[\u0027host\u0027], \u0027topic\u0027: CONF.share_topic})"},{"line_number":1562,"context_line":""},{"line_number":1563,"context_line":"        self.share_rpcapi.create_backup(context, backup_ref,"},{"line_number":1564,"context_line":"                                        preserve_metadata)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_3f1cc012","line":1561,"range":{"start_line":1561,"start_character":55,"end_line":1561,"end_character":66},"updated":"2016-08-22 09:29:32.000000000","message":"How to tell that a backup uses data_topic?","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":1558,"context_line":"        backup_ref[\u0027host\u0027] \u003d share[\u0027host\u0027]"},{"line_number":1559,"context_line":"        self.db.share_backup_update("},{"line_number":1560,"context_line":"            context, backup_ref[\u0027id\u0027],"},{"line_number":1561,"context_line":"            {\u0027host\u0027: backup_ref[\u0027host\u0027], \u0027topic\u0027: CONF.share_topic})"},{"line_number":1562,"context_line":""},{"line_number":1563,"context_line":"        self.share_rpcapi.create_backup(context, backup_ref,"},{"line_number":1564,"context_line":"                                        preserve_metadata)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_a604e417","line":1561,"range":{"start_line":1561,"start_character":55,"end_line":1561,"end_character":66},"in_reply_to":"1ac06dbe_3f1cc012","updated":"2016-08-23 09:29:07.000000000","message":"If create a share backup error in share service, it will go  to data service.","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1603,"context_line":"        size \u003d backup[\u0027size\u0027]"},{"line_number":1604,"context_line":"        if size is None:"},{"line_number":1605,"context_line":"            msg \u003d (_(\u0027Backup %s to be restored has invalid size.\u0027)"},{"line_number":1606,"context_line":"                   % backup[\u0027id\u0027])"},{"line_number":1607,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1608,"context_line":""},{"line_number":1609,"context_line":"        if (preserve_metadata and"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_75d779ed","line":1606,"range":{"start_line":1606,"start_character":21,"end_line":1606,"end_character":33},"updated":"2016-08-22 09:29:32.000000000","message":"backup_id","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":1603,"context_line":"        size \u003d backup[\u0027size\u0027]"},{"line_number":1604,"context_line":"        if size is None:"},{"line_number":1605,"context_line":"            msg \u003d (_(\u0027Backup %s to be restored has invalid size.\u0027)"},{"line_number":1606,"context_line":"                   % backup[\u0027id\u0027])"},{"line_number":1607,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1608,"context_line":""},{"line_number":1609,"context_line":"        if (preserve_metadata and"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_e67a5cf0","line":1606,"range":{"start_line":1606,"start_character":21,"end_line":1606,"end_character":33},"in_reply_to":"1ac06dbe_75d779ed","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1608,"context_line":""},{"line_number":1609,"context_line":"        if (preserve_metadata and"},{"line_number":1610,"context_line":"                backup[\u0027topic\u0027] \u003d\u003d CONF.data_topic):"},{"line_number":1611,"context_line":"            msg \u003d _(\u0027General restore cannot save metadata.\u0027)"},{"line_number":1612,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1613,"context_line":""},{"line_number":1614,"context_line":"        @utils.retry(exception.ProcessExecutionError,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_ff5d087a","line":1611,"range":{"start_line":1611,"start_character":29,"end_line":1611,"end_character":36},"updated":"2016-08-22 09:29:32.000000000","message":"share backup","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1623,"context_line":"        # if it is large enough for the backup"},{"line_number":1624,"context_line":"        if share_id is None:"},{"line_number":1625,"context_line":"            name \u003d \u0027restore_backup_%s\u0027 % backup_id"},{"line_number":1626,"context_line":"            description \u003d \u0027auto-created_from_restore_from_backup\u0027"},{"line_number":1627,"context_line":""},{"line_number":1628,"context_line":"            LOG.info(_LI(\"Creating share of %(size)s GB for restore of \""},{"line_number":1629,"context_line":"                         \"backup %(backup_id)s.\"),"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_5f789cc4","line":1626,"range":{"start_line":1626,"start_character":27,"end_line":1626,"end_character":64},"updated":"2016-08-22 09:29:32.000000000","message":"why the words of description sentence need to be separated by -/_?","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":1623,"context_line":"        # if it is large enough for the backup"},{"line_number":1624,"context_line":"        if share_id is None:"},{"line_number":1625,"context_line":"            name \u003d \u0027restore_backup_%s\u0027 % backup_id"},{"line_number":1626,"context_line":"            description \u003d \u0027auto-created_from_restore_from_backup\u0027"},{"line_number":1627,"context_line":""},{"line_number":1628,"context_line":"            LOG.info(_LI(\"Creating share of %(size)s GB for restore of \""},{"line_number":1629,"context_line":"                         \"backup %(backup_id)s.\"),"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_f19cd4c1","line":1626,"range":{"start_line":1626,"start_character":27,"end_line":1626,"end_character":64},"in_reply_to":"1ac06dbe_5f789cc4","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1628,"context_line":"            LOG.info(_LI(\"Creating share of %(size)s GB for restore of \""},{"line_number":1629,"context_line":"                         \"backup %(backup_id)s.\"),"},{"line_number":1630,"context_line":"                     {\u0027size\u0027: size, \u0027backup_id\u0027: backup_id})"},{"line_number":1631,"context_line":"            share \u003d self.get(context, backup[\u0027share_id\u0027])"},{"line_number":1632,"context_line":"            share \u003d self.create(context, share[\u0027share_proto\u0027], size,"},{"line_number":1633,"context_line":"                                name, description)"},{"line_number":1634,"context_line":"            share_id \u003d share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_b508d1da","line":1631,"updated":"2016-08-22 09:29:32.000000000","message":"this line is no use.","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":1628,"context_line":"            LOG.info(_LI(\"Creating share of %(size)s GB for restore of \""},{"line_number":1629,"context_line":"                         \"backup %(backup_id)s.\"),"},{"line_number":1630,"context_line":"                     {\u0027size\u0027: size, \u0027backup_id\u0027: backup_id})"},{"line_number":1631,"context_line":"            share \u003d self.get(context, backup[\u0027share_id\u0027])"},{"line_number":1632,"context_line":"            share \u003d self.create(context, share[\u0027share_proto\u0027], size,"},{"line_number":1633,"context_line":"                                name, description)"},{"line_number":1634,"context_line":"            share_id \u003d share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_a6fa2441","line":1631,"in_reply_to":"1ac06dbe_b508d1da","updated":"2016-08-23 09:29:07.000000000","message":"We need to use this line to get share protocol.","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1632,"context_line":"            share \u003d self.create(context, share[\u0027share_proto\u0027], size,"},{"line_number":1633,"context_line":"                                name, description)"},{"line_number":1634,"context_line":"            share_id \u003d share[\u0027id\u0027]"},{"line_number":1635,"context_line":"            _execute(context, share_id)"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"        else:"},{"line_number":1638,"context_line":"            share \u003d self.get(context, share_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_55d23d01","line":1635,"updated":"2016-08-22 09:29:32.000000000","message":"Will here wait until new share creation is done?","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":1632,"context_line":"            share \u003d self.create(context, share[\u0027share_proto\u0027], size,"},{"line_number":1633,"context_line":"                                name, description)"},{"line_number":1634,"context_line":"            share_id \u003d share[\u0027id\u0027]"},{"line_number":1635,"context_line":"            _execute(context, share_id)"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"        else:"},{"line_number":1638,"context_line":"            share \u003d self.get(context, share_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_a69184f3","line":1635,"in_reply_to":"1ac06dbe_55d23d01","updated":"2016-08-23 09:29:07.000000000","message":"yes","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1653,"context_line":"        LOG.info(_LI(\"Overwriting share %(share_id)s with restore of \""},{"line_number":1654,"context_line":"                     \"backup %(backup_id)s.\"),"},{"line_number":1655,"context_line":"                 {\u0027share_id\u0027: share_id, \u0027backup_id\u0027: backup_id},"},{"line_number":1656,"context_line":"                 context\u003dcontext)"},{"line_number":1657,"context_line":""},{"line_number":1658,"context_line":"        self.db.share_backup_update("},{"line_number":1659,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_RESTORING})"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_1fac649f","line":1656,"range":{"start_line":1656,"start_character":17,"end_line":1656,"end_character":32},"updated":"2016-08-22 09:29:32.000000000","message":"what\u0027s this?","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":1653,"context_line":"        LOG.info(_LI(\"Overwriting share %(share_id)s with restore of \""},{"line_number":1654,"context_line":"                     \"backup %(backup_id)s.\"),"},{"line_number":1655,"context_line":"                 {\u0027share_id\u0027: share_id, \u0027backup_id\u0027: backup_id},"},{"line_number":1656,"context_line":"                 context\u003dcontext)"},{"line_number":1657,"context_line":""},{"line_number":1658,"context_line":"        self.db.share_backup_update("},{"line_number":1659,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_RESTORING})"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_26b47480","line":1656,"range":{"start_line":1656,"start_character":17,"end_line":1656,"end_character":32},"in_reply_to":"1ac06dbe_1fac649f","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1656,"context_line":"                 context\u003dcontext)"},{"line_number":1657,"context_line":""},{"line_number":1658,"context_line":"        self.db.share_backup_update("},{"line_number":1659,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_RESTORING})"},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        self.db.share_update("},{"line_number":1662,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_RESTORING})"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_f501a96b","line":1659,"range":{"start_line":1659,"start_character":21,"end_line":1659,"end_character":33},"updated":"2016-08-22 09:29:32.000000000","message":"backup_id","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":1656,"context_line":"                 context\u003dcontext)"},{"line_number":1657,"context_line":""},{"line_number":1658,"context_line":"        self.db.share_backup_update("},{"line_number":1659,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_RESTORING})"},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        self.db.share_update("},{"line_number":1662,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_RESTORING})"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_266bd4f2","line":1659,"range":{"start_line":1659,"start_character":21,"end_line":1659,"end_character":33},"in_reply_to":"1ac06dbe_f501a96b","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e49992460caaa564bd6c2b0d3c9b78faad849cf8","unresolved":false,"context_lines":[{"line_number":1671,"context_line":"            msg \u003d _(\u0027Backup topic must be share topic or data topic.\u0027)"},{"line_number":1672,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1673,"context_line":""},{"line_number":1674,"context_line":"        delete_info \u003d {"},{"line_number":1675,"context_line":"            \u0027backup_id\u0027: backup_id,"},{"line_number":1676,"context_line":"            \u0027share_id\u0027: share_id,"},{"line_number":1677,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_7fa9187b","line":1674,"range":{"start_line":1674,"start_character":8,"end_line":1674,"end_character":19},"updated":"2016-08-22 09:29:32.000000000","message":"restore_info","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f57338dda53d1516dd7d18a60e8a5cdb7275abfc","unresolved":false,"context_lines":[{"line_number":1671,"context_line":"            msg \u003d _(\u0027Backup topic must be share topic or data topic.\u0027)"},{"line_number":1672,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":1673,"context_line":""},{"line_number":1674,"context_line":"        delete_info \u003d {"},{"line_number":1675,"context_line":"            \u0027backup_id\u0027: backup_id,"},{"line_number":1676,"context_line":"            \u0027share_id\u0027: share_id,"},{"line_number":1677,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":23,"id":"1ac06dbe_862a888e","line":1674,"range":{"start_line":1674,"start_character":8,"end_line":1674,"end_character":19},"in_reply_to":"1ac06dbe_7fa9187b","updated":"2016-08-23 09:29:07.000000000","message":"Done","commit_id":"7d44cd4036cc1fefa2aeb8383ae8afadc13743e8"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7240ff622673bc9419471533e919cb81e01404aa","unresolved":true,"context_lines":[{"line_number":3578,"context_line":"                     \"be in \u0027available\u0027 state to create backup.\") % msg_args)"},{"line_number":3579,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3580,"context_line":""},{"line_number":3581,"context_line":"        snaps \u003d self.db.share_snapshot_get_all_for_share(context, share[\u0027id\u0027])"},{"line_number":3582,"context_line":"        if snaps:"},{"line_number":3583,"context_line":"            msg \u003d _(\"Share %s must not have snapshots.\") % share[\u0027id\u0027]"},{"line_number":3584,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3585,"context_line":""},{"line_number":3586,"context_line":"        # Reserve a quota before setting share status and backup status"},{"line_number":3587,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":26,"id":"e93af535_fbaf5612","line":3584,"range":{"start_line":3581,"start_character":8,"end_line":3584,"end_character":53},"updated":"2022-05-10 11:09:51.000000000","message":"why can not do backup if share has snapshot?","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1b3d9ce5a0ecaa96bd2b4b781fc41d4b5bf9d669","unresolved":false,"context_lines":[{"line_number":3578,"context_line":"                     \"be in \u0027available\u0027 state to create backup.\") % msg_args)"},{"line_number":3579,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3580,"context_line":""},{"line_number":3581,"context_line":"        snaps \u003d self.db.share_snapshot_get_all_for_share(context, share[\u0027id\u0027])"},{"line_number":3582,"context_line":"        if snaps:"},{"line_number":3583,"context_line":"            msg \u003d _(\"Share %s must not have snapshots.\") % share[\u0027id\u0027]"},{"line_number":3584,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3585,"context_line":""},{"line_number":3586,"context_line":"        # Reserve a quota before setting share status and backup status"},{"line_number":3587,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":26,"id":"341634f5_791e32d5","line":3584,"range":{"start_line":3581,"start_character":8,"end_line":3584,"end_character":53},"in_reply_to":"61b27eab_7a7d555e","updated":"2022-07-15 02:55:20.000000000","message":"In my opinion, even if the share has a snapshot, it does not affect the normal reading of data for backup.","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"65c8a1ca22008e22f9a5df8c0b5cf3b862291236","unresolved":true,"context_lines":[{"line_number":3578,"context_line":"                     \"be in \u0027available\u0027 state to create backup.\") % msg_args)"},{"line_number":3579,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3580,"context_line":""},{"line_number":3581,"context_line":"        snaps \u003d self.db.share_snapshot_get_all_for_share(context, share[\u0027id\u0027])"},{"line_number":3582,"context_line":"        if snaps:"},{"line_number":3583,"context_line":"            msg \u003d _(\"Share %s must not have snapshots.\") % share[\u0027id\u0027]"},{"line_number":3584,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3585,"context_line":""},{"line_number":3586,"context_line":"        # Reserve a quota before setting share status and backup status"},{"line_number":3587,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":26,"id":"ed9b17a7_b2d8577c","line":3584,"range":{"start_line":3581,"start_character":8,"end_line":3584,"end_character":53},"in_reply_to":"e93af535_fbaf5612","updated":"2022-05-31 05:34:40.000000000","message":"This was part of original change. I am ok with removing this if others think the same.","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"dda7b4ae30a0329ea528993115a69588bc1cc0d9","unresolved":false,"context_lines":[{"line_number":3578,"context_line":"                     \"be in \u0027available\u0027 state to create backup.\") % msg_args)"},{"line_number":3579,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3580,"context_line":""},{"line_number":3581,"context_line":"        snaps \u003d self.db.share_snapshot_get_all_for_share(context, share[\u0027id\u0027])"},{"line_number":3582,"context_line":"        if snaps:"},{"line_number":3583,"context_line":"            msg \u003d _(\"Share %s must not have snapshots.\") % share[\u0027id\u0027]"},{"line_number":3584,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3585,"context_line":""},{"line_number":3586,"context_line":"        # Reserve a quota before setting share status and backup status"},{"line_number":3587,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":26,"id":"61b27eab_7a7d555e","line":3584,"range":{"start_line":3581,"start_character":8,"end_line":3584,"end_character":53},"in_reply_to":"ed9b17a7_b2d8577c","updated":"2022-05-31 05:35:04.000000000","message":"Done","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7240ff622673bc9419471533e919cb81e01404aa","unresolved":true,"context_lines":[{"line_number":3638,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3639,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":3640,"context_line":""},{"line_number":3641,"context_line":"        self.db.share_backup_update("},{"line_number":3642,"context_line":"            context, backup_ref[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_CREATING})"},{"line_number":3643,"context_line":""},{"line_number":3644,"context_line":"        self.db.share_update("},{"line_number":3645,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_BACKINGUP})"}],"source_content_type":"text/x-python","patch_set":26,"id":"43fcaf7b_3d4bfbe6","line":3642,"range":{"start_line":3641,"start_character":8,"end_line":3642,"end_character":77},"updated":"2022-05-10 11:09:51.000000000","message":"in line 3628. status of backup has been creating after it created.\nso this is no need to update again.","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"65c8a1ca22008e22f9a5df8c0b5cf3b862291236","unresolved":true,"context_lines":[{"line_number":3638,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3639,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":3640,"context_line":""},{"line_number":3641,"context_line":"        self.db.share_backup_update("},{"line_number":3642,"context_line":"            context, backup_ref[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_CREATING})"},{"line_number":3643,"context_line":""},{"line_number":3644,"context_line":"        self.db.share_update("},{"line_number":3645,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_BACKINGUP})"}],"source_content_type":"text/x-python","patch_set":26,"id":"d0c7a5c5_25f9fcdf","line":3642,"range":{"start_line":3641,"start_character":8,"end_line":3642,"end_character":77},"in_reply_to":"43fcaf7b_3d4bfbe6","updated":"2022-05-31 05:34:40.000000000","message":"The backup is not created yet, its db that was updated before actual backup creation call at line 3654","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"f11a1b18f4bef73fcdb51ce8260a6fd2209b650f","unresolved":false,"context_lines":[{"line_number":3638,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3639,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":3640,"context_line":""},{"line_number":3641,"context_line":"        self.db.share_backup_update("},{"line_number":3642,"context_line":"            context, backup_ref[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_CREATING})"},{"line_number":3643,"context_line":""},{"line_number":3644,"context_line":"        self.db.share_update("},{"line_number":3645,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_BACKINGUP})"}],"source_content_type":"text/x-python","patch_set":26,"id":"4de7875b_04391e6b","line":3642,"range":{"start_line":3641,"start_character":8,"end_line":3642,"end_character":77},"in_reply_to":"bff4ff8e_8695daf6","updated":"2022-09-26 15:18:59.000000000","message":"removed","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1b3d9ce5a0ecaa96bd2b4b781fc41d4b5bf9d669","unresolved":true,"context_lines":[{"line_number":3638,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":3639,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":3640,"context_line":""},{"line_number":3641,"context_line":"        self.db.share_backup_update("},{"line_number":3642,"context_line":"            context, backup_ref[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_CREATING})"},{"line_number":3643,"context_line":""},{"line_number":3644,"context_line":"        self.db.share_update("},{"line_number":3645,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_BACKINGUP})"}],"source_content_type":"text/x-python","patch_set":26,"id":"bff4ff8e_8695daf6","line":3642,"range":{"start_line":3641,"start_character":8,"end_line":3642,"end_character":77},"in_reply_to":"d0c7a5c5_25f9fcdf","updated":"2022-07-15 02:55:20.000000000","message":"yes, i know, but in line 3628, after exec self.db.share_backup_create(). the suatus of share backup in db already be creating. here we really need to update status in db again?","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":51,"id":"e211c6f9_ec4ecd71","updated":"2023-07-06 13:59:43.000000000","message":"In this file, in the def soft_delete function, you should add an additional check to see if the share currently has backups, before soft deleting it. Same for shares deletion.","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":51,"id":"981d3d89_1208aa12","in_reply_to":"741522e2_dd5c94bd","updated":"2023-08-07 10:17:56.000000000","message":"unmanage does not seem to handle share replica, share snapshot. Why should it consider share backup ?","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"289d9348f260e07d6a06c14c5f9d62539a91c837","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":51,"id":"e6671c22_06faf033","in_reply_to":"981d3d89_1208aa12","updated":"2023-08-10 17:00:33.000000000","message":"unsure what you mean; unmanage op does check for these preconditions: https://github.com/openstack/manila/blob/364000c140d6e12d59a8e04fb0398aef1d6badaf/manila/api/v1/share_unmanage.py#L45-L71","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":51,"id":"741522e2_dd5c94bd","in_reply_to":"dc5bbdf1_43145285","updated":"2023-08-01 02:23:01.000000000","message":"and while \"unmanaging\" too?","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"dc5bbdf1_43145285","in_reply_to":"e211c6f9_ec4ecd71","updated":"2023-07-07 13:35:25.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"68a53753936e82d6ca5a48c230f4488baf0a2854","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"cf7c36c3_b537606e","in_reply_to":"e6671c22_06faf033","updated":"2024-02-06 14:09:24.000000000","message":"Done","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e1989c2bf14c9ed021d9a0b14d46be9fdbb883d9","unresolved":true,"context_lines":[{"line_number":3731,"context_line":"        if snaps:"},{"line_number":3732,"context_line":"            msg \u003d _(\"Share %s must not have snapshots.\") % share[\u0027id\u0027]"},{"line_number":3733,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3734,"context_line":""},{"line_number":3735,"context_line":"        # Reserve a quota before setting share status and backup status"},{"line_number":3736,"context_line":"        try:"},{"line_number":3737,"context_line":"            reservations \u003d QUOTAS.reserve("}],"source_content_type":"text/x-python","patch_set":51,"id":"3eb2c41f_39bf619b","line":3734,"updated":"2023-07-06 13:59:43.000000000","message":"should we also check for replicas in the share?","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"26b1e434331c7f318733c3afb369c06a8384fe9b","unresolved":false,"context_lines":[{"line_number":3731,"context_line":"        if snaps:"},{"line_number":3732,"context_line":"            msg \u003d _(\"Share %s must not have snapshots.\") % share[\u0027id\u0027]"},{"line_number":3733,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3734,"context_line":""},{"line_number":3735,"context_line":"        # Reserve a quota before setting share status and backup status"},{"line_number":3736,"context_line":"        try:"},{"line_number":3737,"context_line":"            reservations \u003d QUOTAS.reserve("}],"source_content_type":"text/x-python","patch_set":51,"id":"b6b342ed_e27fe8df","line":3734,"in_reply_to":"3eb2c41f_39bf619b","updated":"2023-07-07 13:35:25.000000000","message":"added","commit_id":"3627e31864eb4dcb89f13e225fc186e75014f150"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":3764,"context_line":"        if share[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":3765,"context_line":"            msg_args \u003d {\u0027share_id\u0027: share_id, \u0027state\u0027: share[\u0027status\u0027]}"},{"line_number":3766,"context_line":"            msg \u003d (_(\"Share %(share_id)s is in \u0027%(state)s\u0027 state, but it must \""},{"line_number":3767,"context_line":"                     \"be in \u0027available\u0027 state to create backup.\") % msg_args)"},{"line_number":3768,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3769,"context_line":""},{"line_number":3770,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"}],"source_content_type":"text/x-python","patch_set":57,"id":"5fd0cb66_cfb70082","line":3767,"range":{"start_line":3767,"start_character":56,"end_line":3767,"end_character":62},"updated":"2023-08-01 02:23:01.000000000","message":"nit: \"create a backup\"","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":3764,"context_line":"        if share[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE:"},{"line_number":3765,"context_line":"            msg_args \u003d {\u0027share_id\u0027: share_id, \u0027state\u0027: share[\u0027status\u0027]}"},{"line_number":3766,"context_line":"            msg \u003d (_(\"Share %(share_id)s is in \u0027%(state)s\u0027 state, but it must \""},{"line_number":3767,"context_line":"                     \"be in \u0027available\u0027 state to create backup.\") % msg_args)"},{"line_number":3768,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3769,"context_line":""},{"line_number":3770,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"}],"source_content_type":"text/x-python","patch_set":57,"id":"f338168e_510dc7b2","line":3767,"range":{"start_line":3767,"start_character":56,"end_line":3767,"end_character":62},"in_reply_to":"5fd0cb66_cfb70082","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":3769,"context_line":""},{"line_number":3770,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":3771,"context_line":"        if snapshots:"},{"line_number":3772,"context_line":"            msg \u003d _(\"Share %s must not have snapshots.\") % share_id"},{"line_number":3773,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3774,"context_line":""},{"line_number":3775,"context_line":"        if share.has_replicas:"}],"source_content_type":"text/x-python","patch_set":57,"id":"0515219d_d4544778","line":3772,"range":{"start_line":3772,"start_character":21,"end_line":3772,"end_character":53},"updated":"2023-08-01 02:23:01.000000000","message":"nit: Cannot backup share %s while it has snapshots","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":3769,"context_line":""},{"line_number":3770,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":3771,"context_line":"        if snapshots:"},{"line_number":3772,"context_line":"            msg \u003d _(\"Share %s must not have snapshots.\") % share_id"},{"line_number":3773,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3774,"context_line":""},{"line_number":3775,"context_line":"        if share.has_replicas:"}],"source_content_type":"text/x-python","patch_set":57,"id":"74a16601_68cf45a1","line":3772,"range":{"start_line":3772,"start_character":21,"end_line":3772,"end_character":53},"in_reply_to":"0515219d_d4544778","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":3773,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3774,"context_line":""},{"line_number":3775,"context_line":"        if share.has_replicas:"},{"line_number":3776,"context_line":"            msg \u003d _(\"Share %s must not have replicas\") % share_id"},{"line_number":3777,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3778,"context_line":""},{"line_number":3779,"context_line":"        # Reserve a quota before setting share status and backup status"}],"source_content_type":"text/x-python","patch_set":57,"id":"e5cb470d_432d160f","line":3776,"range":{"start_line":3776,"start_character":21,"end_line":3776,"end_character":52},"updated":"2023-08-01 02:23:01.000000000","message":"nit: Cannot backup share %s while it has replicas","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":3773,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3774,"context_line":""},{"line_number":3775,"context_line":"        if share.has_replicas:"},{"line_number":3776,"context_line":"            msg \u003d _(\"Share %s must not have replicas\") % share_id"},{"line_number":3777,"context_line":"            raise exception.InvalidShare(message\u003dmsg)"},{"line_number":3778,"context_line":""},{"line_number":3779,"context_line":"        # Reserve a quota before setting share status and backup status"}],"source_content_type":"text/x-python","patch_set":57,"id":"89f56409_40cb99ea","line":3776,"range":{"start_line":3776,"start_character":21,"end_line":3776,"end_character":52},"in_reply_to":"e5cb470d_432d160f","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":3803,"context_line":"                        consumed\u003d_consumed(\u0027backup_gigabytes\u0027),"},{"line_number":3804,"context_line":"                        quota\u003dquotas[\u0027backup_gigabytes\u0027])"},{"line_number":3805,"context_line":"                elif \u0027backups\u0027 in over:"},{"line_number":3806,"context_line":"                    msg \u003d (\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":3807,"context_line":"                           \"backup (%(d_consumed)d, but backups \""},{"line_number":3808,"context_line":"                           \"already consumed.)\")"},{"line_number":3809,"context_line":""},{"line_number":3810,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":3811,"context_line":"                                      \u0027d_consumed\u0027: _consumed(over)})"}],"source_content_type":"text/x-python","patch_set":57,"id":"b12381a9_5fa1f1f5","line":3808,"range":{"start_line":3806,"start_character":28,"end_line":3808,"end_character":45},"updated":"2023-08-01 02:23:01.000000000","message":"Quota exceeded for %(s_pid)s, tried to create \na backup, but (%(d_consumed)d of %(d_quota)d backups \nalready consumed.","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":3803,"context_line":"                        consumed\u003d_consumed(\u0027backup_gigabytes\u0027),"},{"line_number":3804,"context_line":"                        quota\u003dquotas[\u0027backup_gigabytes\u0027])"},{"line_number":3805,"context_line":"                elif \u0027backups\u0027 in over:"},{"line_number":3806,"context_line":"                    msg \u003d (\"Quota exceeded for %(s_pid)s, tried to create \""},{"line_number":3807,"context_line":"                           \"backup (%(d_consumed)d, but backups \""},{"line_number":3808,"context_line":"                           \"already consumed.)\")"},{"line_number":3809,"context_line":""},{"line_number":3810,"context_line":"                    LOG.warning(msg, {\u0027s_pid\u0027: context.project_id,"},{"line_number":3811,"context_line":"                                      \u0027d_consumed\u0027: _consumed(over)})"}],"source_content_type":"text/x-python","patch_set":57,"id":"31281d06_3e8ad984","line":3808,"range":{"start_line":3806,"start_character":28,"end_line":3808,"end_character":45},"in_reply_to":"b12381a9_5fa1f1f5","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":3819,"context_line":"                    \u0027user_id\u0027: context.user_id,"},{"line_number":3820,"context_line":"                    \u0027project_id\u0027: context.project_id,"},{"line_number":3821,"context_line":"                    \u0027status\u0027: constants.STATUS_CREATING,"},{"line_number":3822,"context_line":"                    \u0027store\u0027: backup.get(\u0027store\u0027),"},{"line_number":3823,"context_line":"                    \u0027display_description\u0027: backup.get(\u0027description\u0027),"},{"line_number":3824,"context_line":"                    \u0027display_name\u0027: backup.get(\u0027name\u0027),"},{"line_number":3825,"context_line":"                    \u0027size\u0027: share[\u0027size\u0027],"}],"source_content_type":"text/x-python","patch_set":57,"id":"d8df706b_102f4ee9","line":3822,"range":{"start_line":3822,"start_character":20,"end_line":3822,"end_character":49},"updated":"2023-08-01 02:23:01.000000000","message":"what is this field for? i don\u0027t see this in the spec: https://specs.openstack.org/openstack/manila-specs/specs/antelope/backup_share.html#rest-api-impact","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":3819,"context_line":"                    \u0027user_id\u0027: context.user_id,"},{"line_number":3820,"context_line":"                    \u0027project_id\u0027: context.project_id,"},{"line_number":3821,"context_line":"                    \u0027status\u0027: constants.STATUS_CREATING,"},{"line_number":3822,"context_line":"                    \u0027store\u0027: backup.get(\u0027store\u0027),"},{"line_number":3823,"context_line":"                    \u0027display_description\u0027: backup.get(\u0027description\u0027),"},{"line_number":3824,"context_line":"                    \u0027display_name\u0027: backup.get(\u0027name\u0027),"},{"line_number":3825,"context_line":"                    \u0027size\u0027: share[\u0027size\u0027],"}],"source_content_type":"text/x-python","patch_set":57,"id":"cdb4bcf9_4988fbf2","line":3822,"range":{"start_line":3822,"start_character":20,"end_line":3822,"end_character":49},"in_reply_to":"b7e4ef72_29c152fb","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"77017ba4868ab3723319845e7e5bdc3cff9ba266","unresolved":true,"context_lines":[{"line_number":3819,"context_line":"                    \u0027user_id\u0027: context.user_id,"},{"line_number":3820,"context_line":"                    \u0027project_id\u0027: context.project_id,"},{"line_number":3821,"context_line":"                    \u0027status\u0027: constants.STATUS_CREATING,"},{"line_number":3822,"context_line":"                    \u0027store\u0027: backup.get(\u0027store\u0027),"},{"line_number":3823,"context_line":"                    \u0027display_description\u0027: backup.get(\u0027description\u0027),"},{"line_number":3824,"context_line":"                    \u0027display_name\u0027: backup.get(\u0027name\u0027),"},{"line_number":3825,"context_line":"                    \u0027size\u0027: share[\u0027size\u0027],"}],"source_content_type":"text/x-python","patch_set":57,"id":"b7e4ef72_29c152fb","line":3822,"range":{"start_line":3822,"start_character":20,"end_line":3822,"end_character":49},"in_reply_to":"d8df706b_102f4ee9","updated":"2023-08-01 17:00:29.000000000","message":"based on our discussion, maybe transform this into \"progress\"... so that a periodic task in the share manager can keep this field up to date, alongside the status.","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":3834,"context_line":"            context, share_id,"},{"line_number":3835,"context_line":"            {\u0027status\u0027: constants.STATUS_BACKUP_CREATING})"},{"line_number":3836,"context_line":""},{"line_number":3837,"context_line":"        backup_ref[\u0027driver_option\u0027] \u003d backup.get(\u0027driver_option\u0027)"},{"line_number":3838,"context_line":"        if backup_ref[\u0027driver_option\u0027]:"},{"line_number":3839,"context_line":"            topic \u003d CONF.share_topic"},{"line_number":3840,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":57,"id":"2e39d037_84da4288","line":3837,"range":{"start_line":3837,"start_character":50,"end_line":3837,"end_character":63},"updated":"2023-08-01 02:23:01.000000000","message":"what value can this take? \nIs this a boolean? or an object?\n\nlike \"driver_options\" for share manage? (https://docs.openstack.org/api-ref/shared-file-system/?expanded\u003dmanage-share-since-api-v2-7-detail#id56)","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1c094d8c356432f76d4473df8801e6ba1bf48bd5","unresolved":true,"context_lines":[{"line_number":3834,"context_line":"            context, share_id,"},{"line_number":3835,"context_line":"            {\u0027status\u0027: constants.STATUS_BACKUP_CREATING})"},{"line_number":3836,"context_line":""},{"line_number":3837,"context_line":"        backup_ref[\u0027driver_option\u0027] \u003d backup.get(\u0027driver_option\u0027)"},{"line_number":3838,"context_line":"        if backup_ref[\u0027driver_option\u0027]:"},{"line_number":3839,"context_line":"            topic \u003d CONF.share_topic"},{"line_number":3840,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":57,"id":"f0a10bea_d56447d2","line":3837,"range":{"start_line":3837,"start_character":50,"end_line":3837,"end_character":63},"in_reply_to":"2e39d037_84da4288","updated":"2023-08-01 17:03:56.000000000","message":"as we discussed elsewhere, we should probably call this \"backup_options\" and keep it as an object (dict/{}) that we can extend in the future","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":3834,"context_line":"            context, share_id,"},{"line_number":3835,"context_line":"            {\u0027status\u0027: constants.STATUS_BACKUP_CREATING})"},{"line_number":3836,"context_line":""},{"line_number":3837,"context_line":"        backup_ref[\u0027driver_option\u0027] \u003d backup.get(\u0027driver_option\u0027)"},{"line_number":3838,"context_line":"        if backup_ref[\u0027driver_option\u0027]:"},{"line_number":3839,"context_line":"            topic \u003d CONF.share_topic"},{"line_number":3840,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":57,"id":"852a1813_2ab7cae7","line":3837,"range":{"start_line":3837,"start_character":50,"end_line":3837,"end_character":63},"in_reply_to":"f0a10bea_d56447d2","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":3855,"context_line":"    def delete_share_backup(self, context, backup):"},{"line_number":3856,"context_line":"        \"\"\"Make the RPC call to delete a share backup."},{"line_number":3857,"context_line":""},{"line_number":3858,"context_line":"        :param context: running context"},{"line_number":3859,"context_line":"        :param backup: the model of backup that is retrieved from DB."},{"line_number":3860,"context_line":"        :raises: InvalidBackup"},{"line_number":3861,"context_line":"        :raises: BackupDriverException"}],"source_content_type":"text/x-python","patch_set":57,"id":"cc467fca_b339b0f3","line":3858,"range":{"start_line":3858,"start_character":24,"end_line":3858,"end_character":31},"updated":"2023-08-01 02:23:01.000000000","message":"request","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":3855,"context_line":"    def delete_share_backup(self, context, backup):"},{"line_number":3856,"context_line":"        \"\"\"Make the RPC call to delete a share backup."},{"line_number":3857,"context_line":""},{"line_number":3858,"context_line":"        :param context: running context"},{"line_number":3859,"context_line":"        :param backup: the model of backup that is retrieved from DB."},{"line_number":3860,"context_line":"        :raises: InvalidBackup"},{"line_number":3861,"context_line":"        :raises: BackupDriverException"}],"source_content_type":"text/x-python","patch_set":57,"id":"a0aa7731_381de6b2","line":3858,"range":{"start_line":3858,"start_character":24,"end_line":3858,"end_character":31},"in_reply_to":"cc467fca_b339b0f3","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":3876,"context_line":"            data_rpc \u003d data_rpcapi.DataAPI()"},{"line_number":3877,"context_line":"            data_rpc.delete_backup(context, backup)"},{"line_number":3878,"context_line":"        else:"},{"line_number":3879,"context_line":"            msg \u003d _(\u0027Backup topic must be share topic or data topic.\u0027)"},{"line_number":3880,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":3881,"context_line":""},{"line_number":3882,"context_line":"    def restore_share_backup(self, context, backup_id):"},{"line_number":3883,"context_line":"        \"\"\"Make the RPC call to restore a backup.\"\"\""}],"source_content_type":"text/x-python","patch_set":57,"id":"45e5b44e_6e5d1e61","line":3880,"range":{"start_line":3879,"start_character":0,"end_line":3880,"end_character":53},"updated":"2023-08-01 02:23:01.000000000","message":"this error must be raised before you set the status to \"deleting\". \n\nAlso why are we doing a check here, how could this field be anything else? There\u0027s no way to create a backup with an invalid topic","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":3876,"context_line":"            data_rpc \u003d data_rpcapi.DataAPI()"},{"line_number":3877,"context_line":"            data_rpc.delete_backup(context, backup)"},{"line_number":3878,"context_line":"        else:"},{"line_number":3879,"context_line":"            msg \u003d _(\u0027Backup topic must be share topic or data topic.\u0027)"},{"line_number":3880,"context_line":"            raise exception.InvalidBackup(reason\u003dmsg)"},{"line_number":3881,"context_line":""},{"line_number":3882,"context_line":"    def restore_share_backup(self, context, backup_id):"},{"line_number":3883,"context_line":"        \"\"\"Make the RPC call to restore a backup.\"\"\""}],"source_content_type":"text/x-python","patch_set":57,"id":"e8846913_59b2e4e9","line":3880,"range":{"start_line":3879,"start_character":0,"end_line":3880,"end_character":53},"in_reply_to":"45e5b44e_6e5d1e61","updated":"2023-08-07 10:17:56.000000000","message":"removed this check as it wont trigger in either case.","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"}],"manila/share/driver.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":3634,"context_line":"        \"\"\""},{"line_number":3635,"context_line":"        raise NotImplementedError()"},{"line_number":3636,"context_line":""},{"line_number":3637,"context_line":"    def create_backup(self, context, backup):"},{"line_number":3638,"context_line":"        raise NotImplementedError()"},{"line_number":3639,"context_line":""},{"line_number":3640,"context_line":"    def delete_backup(self, context, backup):"},{"line_number":3641,"context_line":"        raise NotImplementedError()"},{"line_number":3642,"context_line":""},{"line_number":3643,"context_line":"    def restore_backup(self, context, backup, share_id):"},{"line_number":3644,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":57,"id":"69f998cd_4c78b724","line":3644,"range":{"start_line":3637,"start_character":0,"end_line":3644,"end_character":35},"updated":"2023-08-01 02:23:01.000000000","message":"as we discussed in the collab review, create_backup and restore_backup cannot be synchronous calls - that would be very very hard for a driver to implement correctly; \n\ni\u0027m okay if we made changes to this in a different patch, but a better approach would be:\n\n- backup_start() -- async call to the driver to kick off a backup, and return immediately\n \n- backup_continue() -- async call to the driver to get status of the backup, or fix issues with an ongoing backup, or for it to tell the share manager service that a backup is complete/\"available\"\n \n- restore_start -- async call to the driver to kick off a backup restore, and return immediately\n \n- restore_continue() -- async call to the driver to get status of the restore operation, or fix issues with an ongoing restore, or for it to tell the share manager service that a restore is complete so we can set the share to \"available\"\n\n\nWithout making these async, i\u0027m unsure how we\u0027d have a stable implementation from drivers..","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":3634,"context_line":"        \"\"\""},{"line_number":3635,"context_line":"        raise NotImplementedError()"},{"line_number":3636,"context_line":""},{"line_number":3637,"context_line":"    def create_backup(self, context, backup):"},{"line_number":3638,"context_line":"        raise NotImplementedError()"},{"line_number":3639,"context_line":""},{"line_number":3640,"context_line":"    def delete_backup(self, context, backup):"},{"line_number":3641,"context_line":"        raise NotImplementedError()"},{"line_number":3642,"context_line":""},{"line_number":3643,"context_line":"    def restore_backup(self, context, backup, share_id):"},{"line_number":3644,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":57,"id":"79f09c55_7894f134","line":3644,"range":{"start_line":3637,"start_character":0,"end_line":3644,"end_character":35},"in_reply_to":"3e955325_7b032470","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1c094d8c356432f76d4473df8801e6ba1bf48bd5","unresolved":true,"context_lines":[{"line_number":3634,"context_line":"        \"\"\""},{"line_number":3635,"context_line":"        raise NotImplementedError()"},{"line_number":3636,"context_line":""},{"line_number":3637,"context_line":"    def create_backup(self, context, backup):"},{"line_number":3638,"context_line":"        raise NotImplementedError()"},{"line_number":3639,"context_line":""},{"line_number":3640,"context_line":"    def delete_backup(self, context, backup):"},{"line_number":3641,"context_line":"        raise NotImplementedError()"},{"line_number":3642,"context_line":""},{"line_number":3643,"context_line":"    def restore_backup(self, context, backup, share_id):"},{"line_number":3644,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":57,"id":"3e955325_7b032470","line":3644,"range":{"start_line":3637,"start_character":0,"end_line":3644,"end_character":35},"in_reply_to":"69f998cd_4c78b724","updated":"2023-08-01 17:03:56.000000000","message":"the backup_continue() and restore_continue() methods can record the \"progress\" field on the backup ref","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"}],"manila/share/manager.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":2927,"context_line":"        return snapshot_instance_ref"},{"line_number":2928,"context_line":""},{"line_number":2929,"context_line":"    @utils.require_driver_initialized"},{"line_number":2930,"context_line":"    def create_share_backup(self, context, backup, preserve_metadata):"},{"line_number":2931,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":2932,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":2933,"context_line":"        share_instance \u003d self._get_share_instance(context, share)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_18082891","line":2930,"range":{"start_line":2930,"start_character":51,"end_line":2930,"end_character":68},"updated":"2016-07-22 21:54:24.000000000","message":"if your condition to reach this code is to whether or not preserve metadata, you don\u0027t need it here. In my opinion, your condition (in share/api.py) should not be based on this capability, since some backends may not be able to preserve metadata","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":2927,"context_line":"        return snapshot_instance_ref"},{"line_number":2928,"context_line":""},{"line_number":2929,"context_line":"    @utils.require_driver_initialized"},{"line_number":2930,"context_line":"    def create_share_backup(self, context, backup, preserve_metadata):"},{"line_number":2931,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":2932,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":2933,"context_line":"        share_instance \u003d self._get_share_instance(context, share)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_83bff85f","line":2930,"range":{"start_line":2930,"start_character":51,"end_line":2930,"end_character":68},"in_reply_to":"dada55a8_18082891","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":2942,"context_line":"                    context,"},{"line_number":2943,"context_line":"                    backup[\u0027id\u0027],"},{"line_number":2944,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2945,"context_line":"                LOG.error(_LE(\"Share backup %s: delete failed\"),"},{"line_number":2946,"context_line":"                          backup[\u0027name\u0027])"},{"line_number":2947,"context_line":""},{"line_number":2948,"context_line":"        share_update \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_780b247e","line":2945,"range":{"start_line":2945,"start_character":31,"end_line":2945,"end_character":62},"updated":"2016-07-22 21:54:24.000000000","message":"actually, rephrase to \"Failed to create share backup %s.\"","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":2942,"context_line":"                    context,"},{"line_number":2943,"context_line":"                    backup[\u0027id\u0027],"},{"line_number":2944,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2945,"context_line":"                LOG.error(_LE(\"Share backup %s: delete failed\"),"},{"line_number":2946,"context_line":"                          backup[\u0027name\u0027])"},{"line_number":2947,"context_line":""},{"line_number":2948,"context_line":"        share_update \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_d845f0b3","line":2945,"range":{"start_line":2945,"start_character":48,"end_line":2945,"end_character":54},"updated":"2016-07-22 21:54:24.000000000","message":"create","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":2942,"context_line":"                    context,"},{"line_number":2943,"context_line":"                    backup[\u0027id\u0027],"},{"line_number":2944,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2945,"context_line":"                LOG.error(_LE(\"Share backup %s: delete failed\"),"},{"line_number":2946,"context_line":"                          backup[\u0027name\u0027])"},{"line_number":2947,"context_line":""},{"line_number":2948,"context_line":"        share_update \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_3811acb0","line":2945,"range":{"start_line":2945,"start_character":60,"end_line":2945,"end_character":62},"updated":"2016-07-22 21:54:24.000000000","message":"period","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":2942,"context_line":"                    context,"},{"line_number":2943,"context_line":"                    backup[\u0027id\u0027],"},{"line_number":2944,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2945,"context_line":"                LOG.error(_LE(\"Share backup %s: delete failed\"),"},{"line_number":2946,"context_line":"                          backup[\u0027name\u0027])"},{"line_number":2947,"context_line":""},{"line_number":2948,"context_line":"        share_update \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e1d99358","line":2945,"range":{"start_line":2945,"start_character":60,"end_line":2945,"end_character":62},"in_reply_to":"dada55a8_3811acb0","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":2942,"context_line":"                    context,"},{"line_number":2943,"context_line":"                    backup[\u0027id\u0027],"},{"line_number":2944,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2945,"context_line":"                LOG.error(_LE(\"Share backup %s: delete failed\"),"},{"line_number":2946,"context_line":"                          backup[\u0027name\u0027])"},{"line_number":2947,"context_line":""},{"line_number":2948,"context_line":"        share_update \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_c118cf20","line":2945,"range":{"start_line":2945,"start_character":31,"end_line":2945,"end_character":62},"in_reply_to":"dada55a8_780b247e","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":2942,"context_line":"                    context,"},{"line_number":2943,"context_line":"                    backup[\u0027id\u0027],"},{"line_number":2944,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2945,"context_line":"                LOG.error(_LE(\"Share backup %s: delete failed\"),"},{"line_number":2946,"context_line":"                          backup[\u0027name\u0027])"},{"line_number":2947,"context_line":""},{"line_number":2948,"context_line":"        share_update \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_01d5c71a","line":2945,"range":{"start_line":2945,"start_character":48,"end_line":2945,"end_character":54},"in_reply_to":"dada55a8_d845f0b3","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":2950,"context_line":"        }"},{"line_number":2951,"context_line":"        share \u003d self.db.share_update(context, share[\u0027id\u0027], share_update)"},{"line_number":2952,"context_line":"        LOG.info(_LI(\"Backup share completed successfully.\"), resource\u003dshare)"},{"line_number":2953,"context_line":"        return"},{"line_number":2954,"context_line":""},{"line_number":2955,"context_line":"    def _get_backup_info(self, share_instance, backup):"},{"line_number":2956,"context_line":"        backup_info \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_d81cd0c3","line":2953,"range":{"start_line":2953,"start_character":8,"end_line":2953,"end_character":14},"updated":"2016-07-22 21:54:24.000000000","message":"remove","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":2950,"context_line":"        }"},{"line_number":2951,"context_line":"        share \u003d self.db.share_update(context, share[\u0027id\u0027], share_update)"},{"line_number":2952,"context_line":"        LOG.info(_LI(\"Backup share completed successfully.\"), resource\u003dshare)"},{"line_number":2953,"context_line":"        return"},{"line_number":2954,"context_line":""},{"line_number":2955,"context_line":"    def _get_backup_info(self, share_instance, backup):"},{"line_number":2956,"context_line":"        backup_info \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_41db3f4f","line":2953,"range":{"start_line":2953,"start_character":8,"end_line":2953,"end_character":14},"in_reply_to":"dada55a8_d81cd0c3","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":2979,"context_line":"                    context,"},{"line_number":2980,"context_line":"                    backup[\u0027id\u0027],"},{"line_number":2981,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2982,"context_line":"                LOG.error(_LE(\"Share backup %s: delete failed\"),"},{"line_number":2983,"context_line":"                          backup[\u0027name\u0027])"},{"line_number":2984,"context_line":""},{"line_number":2985,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_b86c7c37","line":2982,"range":{"start_line":2982,"start_character":31,"end_line":2982,"end_character":61},"updated":"2016-07-22 21:54:24.000000000","message":"Rephrase to \"Failed to delete share backup %s.\"","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":2979,"context_line":"                    context,"},{"line_number":2980,"context_line":"                    backup[\u0027id\u0027],"},{"line_number":2981,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2982,"context_line":"                LOG.error(_LE(\"Share backup %s: delete failed\"),"},{"line_number":2983,"context_line":"                          backup[\u0027name\u0027])"},{"line_number":2984,"context_line":""},{"line_number":2985,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_81e9b7e8","line":2982,"range":{"start_line":2982,"start_character":31,"end_line":2982,"end_character":61},"in_reply_to":"dada55a8_b86c7c37","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":2991,"context_line":"                context, project_id\u003dbackup[\u0027project_id\u0027], **reserve_opts)"},{"line_number":2992,"context_line":"        except Exception:"},{"line_number":2993,"context_line":"            reservations \u003d None"},{"line_number":2994,"context_line":"            LOG.exception(_LE(\"Failed to update usages deleting backup\"))"},{"line_number":2995,"context_line":""},{"line_number":2996,"context_line":"        if reservations:"},{"line_number":2997,"context_line":"            QUOTAS.commit(context, reservations,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_d8733014","line":2994,"range":{"start_line":2994,"start_character":69,"end_line":2994,"end_character":71},"updated":"2016-07-22 21:54:24.000000000","message":"period","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":2991,"context_line":"                context, project_id\u003dbackup[\u0027project_id\u0027], **reserve_opts)"},{"line_number":2992,"context_line":"        except Exception:"},{"line_number":2993,"context_line":"            reservations \u003d None"},{"line_number":2994,"context_line":"            LOG.exception(_LE(\"Failed to update usages deleting backup\"))"},{"line_number":2995,"context_line":""},{"line_number":2996,"context_line":"        if reservations:"},{"line_number":2997,"context_line":"            QUOTAS.commit(context, reservations,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_61cda384","line":2994,"range":{"start_line":2994,"start_character":69,"end_line":2994,"end_character":71},"in_reply_to":"dada55a8_d8733014","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":3011,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":3012,"context_line":"        backup \u003d self.db.share_backup_get(context, backup[\u0027id\u0027])"},{"line_number":3013,"context_line":""},{"line_number":3014,"context_line":"        expected_status \u003d constants.STATUS_RESTORING"},{"line_number":3015,"context_line":"        actual_status \u003d share[\u0027status\u0027]"},{"line_number":3016,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":3017,"context_line":"            err \u003d (_(\u0027Restore backup aborted, expected share status \u0027"},{"line_number":3018,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027) %"},{"line_number":3019,"context_line":"                   {\u0027expected_status\u0027: expected_status,"},{"line_number":3020,"context_line":"                    \u0027actual_status\u0027: actual_status})"},{"line_number":3021,"context_line":""},{"line_number":3022,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":3023,"context_line":""},{"line_number":3024,"context_line":"        expected_status \u003d constants.STATUS_RESTORING"},{"line_number":3025,"context_line":"        actual_status \u003d backup[\u0027status\u0027]"},{"line_number":3026,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":3027,"context_line":"            err \u003d (_(\u0027Restore backup aborted: expected backup status \u0027"},{"line_number":3028,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027) %"},{"line_number":3029,"context_line":"                   {\u0027expected_status\u0027: expected_status,"},{"line_number":3030,"context_line":"                    \u0027actual_status\u0027: actual_status})"},{"line_number":3031,"context_line":""},{"line_number":3032,"context_line":"            backup \u003d self.db.share_backup_update("},{"line_number":3033,"context_line":"                context, backup[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_98fed836","line":3030,"range":{"start_line":3014,"start_character":8,"end_line":3030,"end_character":52},"updated":"2016-07-22 21:54:24.000000000","message":"double checking... why?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":3011,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":3012,"context_line":"        backup \u003d self.db.share_backup_get(context, backup[\u0027id\u0027])"},{"line_number":3013,"context_line":""},{"line_number":3014,"context_line":"        expected_status \u003d constants.STATUS_RESTORING"},{"line_number":3015,"context_line":"        actual_status \u003d share[\u0027status\u0027]"},{"line_number":3016,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":3017,"context_line":"            err \u003d (_(\u0027Restore backup aborted, expected share status \u0027"},{"line_number":3018,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027) %"},{"line_number":3019,"context_line":"                   {\u0027expected_status\u0027: expected_status,"},{"line_number":3020,"context_line":"                    \u0027actual_status\u0027: actual_status})"},{"line_number":3021,"context_line":""},{"line_number":3022,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":3023,"context_line":""},{"line_number":3024,"context_line":"        expected_status \u003d constants.STATUS_RESTORING"},{"line_number":3025,"context_line":"        actual_status \u003d backup[\u0027status\u0027]"},{"line_number":3026,"context_line":"        if actual_status !\u003d expected_status:"},{"line_number":3027,"context_line":"            err \u003d (_(\u0027Restore backup aborted: expected backup status \u0027"},{"line_number":3028,"context_line":"                     \u0027%(expected_status)s but got %(actual_status)s.\u0027) %"},{"line_number":3029,"context_line":"                   {\u0027expected_status\u0027: expected_status,"},{"line_number":3030,"context_line":"                    \u0027actual_status\u0027: actual_status})"},{"line_number":3031,"context_line":""},{"line_number":3032,"context_line":"            backup \u003d self.db.share_backup_update("},{"line_number":3033,"context_line":"                context, backup[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_205d6215","line":3030,"range":{"start_line":3014,"start_character":8,"end_line":3030,"end_character":52},"in_reply_to":"dada55a8_98fed836","updated":"2016-08-01 11:46:16.000000000","message":"Please see https://review.openstack.org/#/c/343980/9/manila/data/manager.py","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":3036,"context_line":"                context, share_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":3037,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":3038,"context_line":""},{"line_number":3039,"context_line":"        if share[\u0027size\u0027] \u003e backup[\u0027size\u0027]:"},{"line_number":3040,"context_line":"            LOG.info(_LI(\u0027Share: %(share_id)s, size: %(share_size)d is \u0027"},{"line_number":3041,"context_line":"                         \u0027larger than backup: %(backup_id)s, \u0027"},{"line_number":3042,"context_line":"                         \u0027size: %(backup_size)d, continuing with restore.\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_18994820","line":3039,"range":{"start_line":3039,"start_character":25,"end_line":3039,"end_character":26},"updated":"2016-07-22 21:54:24.000000000","message":"greater or equal?","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":3036,"context_line":"                context, share_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":3037,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":3038,"context_line":""},{"line_number":3039,"context_line":"        if share[\u0027size\u0027] \u003e backup[\u0027size\u0027]:"},{"line_number":3040,"context_line":"            LOG.info(_LI(\u0027Share: %(share_id)s, size: %(share_size)d is \u0027"},{"line_number":3041,"context_line":"                         \u0027larger than backup: %(backup_id)s, \u0027"},{"line_number":3042,"context_line":"                         \u0027size: %(backup_size)d, continuing with restore.\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_41a97f8f","line":3039,"range":{"start_line":3039,"start_character":25,"end_line":3039,"end_character":26},"in_reply_to":"dada55a8_18994820","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":3063,"context_line":"        backup \u003d self.db.share_backup_update("},{"line_number":3064,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":3065,"context_line":""},{"line_number":3066,"context_line":"        LOG.info(_LI(\"Share backup %s restore successfully.\"),"},{"line_number":3067,"context_line":"                 backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"dada55a8_b888fcc7","line":3066,"range":{"start_line":3066,"start_character":38,"end_line":3066,"end_character":45},"updated":"2016-07-22 21:54:24.000000000","message":"restored","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":3063,"context_line":"        backup \u003d self.db.share_backup_update("},{"line_number":3064,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":3065,"context_line":""},{"line_number":3066,"context_line":"        LOG.info(_LI(\"Share backup %s restore successfully.\"),"},{"line_number":3067,"context_line":"                 backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_21ae0b98","line":3066,"range":{"start_line":3066,"start_character":38,"end_line":3066,"end_character":45},"in_reply_to":"dada55a8_b888fcc7","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2b90161e2f6102d7bea46898d31be513681aba9e","unresolved":false,"context_lines":[{"line_number":2941,"context_line":"        except Exception:"},{"line_number":2942,"context_line":"            self.db.backup_update("},{"line_number":2943,"context_line":"                context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2944,"context_line":"            LOG.error(_LE(\"Failed to create share backup %s.\"),"},{"line_number":2945,"context_line":"                      backup[\u0027name\u0027])"},{"line_number":2946,"context_line":"            move \u003d True"},{"line_number":2947,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_370d74e8","line":2944,"range":{"start_line":2944,"start_character":59,"end_line":2944,"end_character":60},"updated":"2016-08-08 01:59:55.000000000","message":"by driver","commit_id":"e36484afbf40558849f4bfa00072123e0ad1c4ff"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2b90161e2f6102d7bea46898d31be513681aba9e","unresolved":false,"context_lines":[{"line_number":2943,"context_line":"                context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2944,"context_line":"            LOG.error(_LE(\"Failed to create share backup %s.\"),"},{"line_number":2945,"context_line":"                      backup[\u0027name\u0027])"},{"line_number":2946,"context_line":"            move \u003d True"},{"line_number":2947,"context_line":""},{"line_number":2948,"context_line":"        if move:"},{"line_number":2949,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_f713dcb5","line":2946,"updated":"2016-08-08 01:59:55.000000000","message":"I don\u0027t quite understand why we\u0027ll continue the backup by data API while we creating backup failed by driver.\nIf I missed something please kindly tell me, thanks.","commit_id":"e36484afbf40558849f4bfa00072123e0ad1c4ff"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2b90161e2f6102d7bea46898d31be513681aba9e","unresolved":false,"context_lines":[{"line_number":2952,"context_line":"                data_rpc \u003d data_rpcapi.DataAPI()"},{"line_number":2953,"context_line":"                data_rpc.create_backup(context, backup, preserve_metadata)"},{"line_number":2954,"context_line":"            except Exception:"},{"line_number":2955,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":2956,"context_line":"                    return"},{"line_number":2957,"context_line":""},{"line_number":2958,"context_line":"        share_update \u003d {"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_f72d9c46","line":2955,"updated":"2016-08-08 01:59:55.000000000","message":"this exception catching logic does nothing.","commit_id":"e36484afbf40558849f4bfa00072123e0ad1c4ff"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2b90161e2f6102d7bea46898d31be513681aba9e","unresolved":false,"context_lines":[{"line_number":2959,"context_line":"            \u0027status\u0027: constants.STATUS_AVAILABLE,"},{"line_number":2960,"context_line":"        }"},{"line_number":2961,"context_line":"        share \u003d self.db.share_update(context, share[\u0027id\u0027], share_update)"},{"line_number":2962,"context_line":"        LOG.info(_LI(\"Backup share completed successfully.\"), resource\u003dshare)"},{"line_number":2963,"context_line":""},{"line_number":2964,"context_line":"    def _get_backup_info(self, share_instance, backup):"},{"line_number":2965,"context_line":"        backup_info \u003d {"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_d7d7b820","line":2962,"range":{"start_line":2962,"start_character":34,"end_line":2962,"end_character":35},"updated":"2016-08-08 01:59:55.000000000","message":"%(resource)s","commit_id":"e36484afbf40558849f4bfa00072123e0ad1c4ff"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2b90161e2f6102d7bea46898d31be513681aba9e","unresolved":false,"context_lines":[{"line_number":2974,"context_line":""},{"line_number":2975,"context_line":"        return backup_info"},{"line_number":2976,"context_line":""},{"line_number":2977,"context_line":"    def delete_share_backup(self, backup):"},{"line_number":2978,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":2979,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":2980,"context_line":"        share_instance \u003d self._get_share_instance(context, share)"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_77cc0c6a","line":2977,"updated":"2016-08-08 01:59:55.000000000","message":"@utils.require_driver_initialized?","commit_id":"e36484afbf40558849f4bfa00072123e0ad1c4ff"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2b90161e2f6102d7bea46898d31be513681aba9e","unresolved":false,"context_lines":[{"line_number":3000,"context_line":"                context, project_id\u003dbackup[\u0027project_id\u0027], **reserve_opts)"},{"line_number":3001,"context_line":"        except Exception:"},{"line_number":3002,"context_line":"            reservations \u003d None"},{"line_number":3003,"context_line":"            LOG.exception(_LE(\"Failed to update usages deleting backup.\"))"},{"line_number":3004,"context_line":""},{"line_number":3005,"context_line":"        if reservations:"},{"line_number":3006,"context_line":"            QUOTAS.commit(context, reservations,"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_57cbc871","line":3003,"range":{"start_line":3003,"start_character":70,"end_line":3003,"end_character":71},"updated":"2016-08-08 01:59:55.000000000","message":"suggest indicating which backup","commit_id":"e36484afbf40558849f4bfa00072123e0ad1c4ff"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2b90161e2f6102d7bea46898d31be513681aba9e","unresolved":false,"context_lines":[{"line_number":3011,"context_line":"        LOG.info(_LI(\"Share backup %s deleted successfully.\"),"},{"line_number":3012,"context_line":"                 backup[\u0027id\u0027])"},{"line_number":3013,"context_line":""},{"line_number":3014,"context_line":"    def restore_backup(self, context, backup, share, preserve_metadata):"},{"line_number":3015,"context_line":"        share_id \u003d share[\u0027id\u0027]"},{"line_number":3016,"context_line":"        LOG.info(_LI(\u0027Restore backup started, backup: %(backup_id)s \u0027"},{"line_number":3017,"context_line":"                     \u0027share: %(share_id)s.\u0027),"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_57c74844","line":3014,"updated":"2016-08-08 01:59:55.000000000","message":"@utils.require_driver_initialized?","commit_id":"e36484afbf40558849f4bfa00072123e0ad1c4ff"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2b90161e2f6102d7bea46898d31be513681aba9e","unresolved":false,"context_lines":[{"line_number":3045,"context_line":"                context, share_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":3046,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":3047,"context_line":""},{"line_number":3048,"context_line":"        if share[\u0027size\u0027] \u003e\u003d backup[\u0027size\u0027]:"},{"line_number":3049,"context_line":"            LOG.info(_LI(\u0027Share: %(share_id)s, size: %(share_size)d is \u0027"},{"line_number":3050,"context_line":"                         \u0027larger than backup: %(backup_id)s, \u0027"},{"line_number":3051,"context_line":"                         \u0027size: %(backup_size)d, continuing with restore.\u0027),"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_37ae1481","line":3048,"updated":"2016-08-08 01:59:55.000000000","message":"I don\u0027t get what this check used for, just for log printing?","commit_id":"e36484afbf40558849f4bfa00072123e0ad1c4ff"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2b90161e2f6102d7bea46898d31be513681aba9e","unresolved":false,"context_lines":[{"line_number":3065,"context_line":"                context, share_id,"},{"line_number":3066,"context_line":"                {\u0027status\u0027: constants.STATUS_RESTORING_ERROR})"},{"line_number":3067,"context_line":"            backup \u003d self.db.share_backup_update("},{"line_number":3068,"context_line":"                context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":3069,"context_line":""},{"line_number":3070,"context_line":"        self.db.share_update("},{"line_number":3071,"context_line":"            context, share_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_b7d96424","line":3068,"updated":"2016-08-08 01:59:55.000000000","message":"re-raise the exception?","commit_id":"e36484afbf40558849f4bfa00072123e0ad1c4ff"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"2b90161e2f6102d7bea46898d31be513681aba9e","unresolved":false,"context_lines":[{"line_number":3072,"context_line":"        backup \u003d self.db.share_backup_update("},{"line_number":3073,"context_line":"            context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":3074,"context_line":""},{"line_number":3075,"context_line":"        LOG.info(_LI(\"Share backup %s restored successfully.\"),"},{"line_number":3076,"context_line":"                 backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_97d420e9","line":3075,"range":{"start_line":3075,"start_character":46,"end_line":3075,"end_character":47},"updated":"2016-08-08 01:59:55.000000000","message":"to share ***","commit_id":"e36484afbf40558849f4bfa00072123e0ad1c4ff"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"480f0eecf87d0bc6f1801962cbe108d4b87d9b3e","unresolved":false,"context_lines":[{"line_number":2933,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":2934,"context_line":"        share_instance \u003d self._get_share_instance(context, share)"},{"line_number":2935,"context_line":"        backup_info \u003d self._get_backup_info(share_instance, backup)"},{"line_number":2936,"context_line":"        move \u003d False"},{"line_number":2937,"context_line":""},{"line_number":2938,"context_line":"        try:"},{"line_number":2939,"context_line":"            self.driver.create_backup("}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_7ef7d9d2","line":2936,"range":{"start_line":2936,"start_character":8,"end_line":2936,"end_character":12},"updated":"2016-08-11 19:02:27.000000000","message":"move? where is data being \"moved\"? I thought it was beging copied/backed up... I suggest changing the name to something that represents what this is being used for. You use this variable in the except block, so it appears that it is somewhat related to the driver failing to backup. I would change this logic, name it to success, and set \"success \u003d True\" after driver.create_backup, not in except block, then reverse the condition below to \"if not success:\"","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a9eda54ce1d3de4ab5a1fd260bc29dcc131b8377","unresolved":false,"context_lines":[{"line_number":2933,"context_line":"        share \u003d self.db.share_get(context, share_id)"},{"line_number":2934,"context_line":"        share_instance \u003d self._get_share_instance(context, share)"},{"line_number":2935,"context_line":"        backup_info \u003d self._get_backup_info(share_instance, backup)"},{"line_number":2936,"context_line":"        move \u003d False"},{"line_number":2937,"context_line":""},{"line_number":2938,"context_line":"        try:"},{"line_number":2939,"context_line":"            self.driver.create_backup("}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_8b005fac","line":2936,"range":{"start_line":2936,"start_character":8,"end_line":2936,"end_character":12},"in_reply_to":"9ad45d7e_7ef7d9d2","updated":"2016-08-15 09:11:39.000000000","message":"Done","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"480f0eecf87d0bc6f1801962cbe108d4b87d9b3e","unresolved":false,"context_lines":[{"line_number":2953,"context_line":"                data_rpc.create_backup(context, backup, preserve_metadata)"},{"line_number":2954,"context_line":"            except Exception:"},{"line_number":2955,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":2956,"context_line":"                    return"},{"line_number":2957,"context_line":""},{"line_number":2958,"context_line":"        share_update \u003d {"},{"line_number":2959,"context_line":"            \u0027status\u0027: constants.STATUS_AVAILABLE,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_1ea4ddb7","line":2956,"range":{"start_line":2956,"start_character":20,"end_line":2956,"end_character":26},"updated":"2016-08-11 19:02:27.000000000","message":"no friendly message here? Also, async RPCs don\u0027t usually fail unless they are coded incorretly (incorrect parameters). You don\u0027t need a try/except block here.","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a9eda54ce1d3de4ab5a1fd260bc29dcc131b8377","unresolved":false,"context_lines":[{"line_number":2953,"context_line":"                data_rpc.create_backup(context, backup, preserve_metadata)"},{"line_number":2954,"context_line":"            except Exception:"},{"line_number":2955,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":2956,"context_line":"                    return"},{"line_number":2957,"context_line":""},{"line_number":2958,"context_line":"        share_update \u003d {"},{"line_number":2959,"context_line":"            \u0027status\u0027: constants.STATUS_AVAILABLE,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ac371cc_abb9db30","line":2956,"range":{"start_line":2956,"start_character":20,"end_line":2956,"end_character":26},"in_reply_to":"9ad45d7e_1ea4ddb7","updated":"2016-08-15 09:11:39.000000000","message":"Done","commit_id":"7d3749feb3ac37e471fc2ceb48abf266d428e5cc"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"05a9ef11daab3b1a9d939235c622ed2514ac9b98","unresolved":false,"context_lines":[{"line_number":2945,"context_line":"                context, backup[\u0027id\u0027], {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":2946,"context_line":"            LOG.error(_LE(\"Failed to create share backup %s by driver.\"),"},{"line_number":2947,"context_line":"                      backup[\u0027name\u0027])"},{"line_number":2948,"context_line":"            success \u003d False"},{"line_number":2949,"context_line":""},{"line_number":2950,"context_line":"        if not success:"},{"line_number":2951,"context_line":"            self.db.share_backup_update("}],"source_content_type":"text/x-python","patch_set":24,"id":"1ac06dbe_2eb66f8a","line":2948,"updated":"2016-08-26 06:21:19.000000000","message":"just for verification, why don\u0027t check the exception whether NotImplementedError here?\nI think if it is, then we could continue to use common data api instead, otherwise, it means something wrong with the driver, why don\u0027t we re-raise?","commit_id":"87e2c82c856a291858afc3430404c62a52b9d18d"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"05a9ef11daab3b1a9d939235c622ed2514ac9b98","unresolved":false,"context_lines":[{"line_number":3045,"context_line":"                context, share_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":3046,"context_line":"            raise exception.InvalidBackup(reason\u003derr)"},{"line_number":3047,"context_line":""},{"line_number":3048,"context_line":"        if share[\u0027size\u0027] \u003e\u003d backup[\u0027size\u0027]:"},{"line_number":3049,"context_line":"            LOG.info(_LI(\u0027Share: %(share_id)s, size: %(share_size)d is \u0027"},{"line_number":3050,"context_line":"                         \u0027larger than backup: %(backup_id)s, \u0027"},{"line_number":3051,"context_line":"                         \u0027size: %(backup_size)d, continuing with restore.\u0027),"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ac06dbe_b19f605e","line":3048,"updated":"2016-08-26 06:21:19.000000000","message":"Is this a duplicated check? cause there\u0027s already checked in API?","commit_id":"87e2c82c856a291858afc3430404c62a52b9d18d"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7240ff622673bc9419471533e919cb81e01404aa","unresolved":true,"context_lines":[{"line_number":4969,"context_line":"                self.db.share_backup_update("},{"line_number":4970,"context_line":"                    context,"},{"line_number":4971,"context_line":"                    backup[\u0027id\u0027],"},{"line_number":4972,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":4973,"context_line":"                LOG.error(\"Failed to delete share backup %s.\", backup[\u0027id\u0027])"},{"line_number":4974,"context_line":""},{"line_number":4975,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":26,"id":"1745c10b_98f10cc9","line":4972,"range":{"start_line":4972,"start_character":41,"end_line":4972,"end_character":53},"updated":"2022-05-10 11:09:51.000000000","message":"STATUS_ERROR_DELETING","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"65c8a1ca22008e22f9a5df8c0b5cf3b862291236","unresolved":false,"context_lines":[{"line_number":4969,"context_line":"                self.db.share_backup_update("},{"line_number":4970,"context_line":"                    context,"},{"line_number":4971,"context_line":"                    backup[\u0027id\u0027],"},{"line_number":4972,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR})"},{"line_number":4973,"context_line":"                LOG.error(\"Failed to delete share backup %s.\", backup[\u0027id\u0027])"},{"line_number":4974,"context_line":""},{"line_number":4975,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":26,"id":"6e1ee416_9ade94b8","line":4972,"range":{"start_line":4972,"start_character":41,"end_line":4972,"end_character":53},"in_reply_to":"1745c10b_98f10cc9","updated":"2022-05-31 05:34:40.000000000","message":"Done","commit_id":"5c7410da81485bce0cb68c998a21a22adcacd53c"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"4e7b3f34b306195e932e3847089ec889d051e309","unresolved":true,"context_lines":[{"line_number":5067,"context_line":"        return backup_info"},{"line_number":5068,"context_line":""},{"line_number":5069,"context_line":"    @utils.require_driver_initialized"},{"line_number":5070,"context_line":"    def create_backup(self, context, backup):"},{"line_number":5071,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":5072,"context_line":"        backup_id \u003d backup[\u0027id\u0027]"},{"line_number":5073,"context_line":"        share \u003d self.db.share_get(context, share_id)"}],"source_content_type":"text/x-python","patch_set":48,"id":"44d74809_d757d59d","line":5070,"updated":"2023-06-20 15:27:25.000000000","message":"I think it\u0027s important to have unit test in this method, as it seems to me to be part of the feature core and last CI execution shows it is not covered [0].\n\n[0] https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_cff/343980/48/check/openstack-tox-cover/cffa99b/cover/d_030f674440dfdd1c_manager_py.html#t5073","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":5067,"context_line":"        return backup_info"},{"line_number":5068,"context_line":""},{"line_number":5069,"context_line":"    @utils.require_driver_initialized"},{"line_number":5070,"context_line":"    def create_backup(self, context, backup):"},{"line_number":5071,"context_line":"        share_id \u003d backup[\u0027share_id\u0027]"},{"line_number":5072,"context_line":"        backup_id \u003d backup[\u0027id\u0027]"},{"line_number":5073,"context_line":"        share \u003d self.db.share_get(context, share_id)"}],"source_content_type":"text/x-python","patch_set":48,"id":"ae289730_cedd310e","line":5070,"in_reply_to":"44d74809_d757d59d","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"4e7b3f34b306195e932e3847089ec889d051e309","unresolved":true,"context_lines":[{"line_number":5097,"context_line":"            context, backup_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":5098,"context_line":"        LOG.info(\"Create share backup %s successfully.\", backup_id)"},{"line_number":5099,"context_line":""},{"line_number":5100,"context_line":"    def delete_backup(self, context, backup):"},{"line_number":5101,"context_line":"        backup_id \u003d backup[\u0027id\u0027]"},{"line_number":5102,"context_line":"        LOG.info(\u0027Delete backup started, backup: %s.\u0027, backup_id)"},{"line_number":5103,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"aa5bf2c9_4d9ae27a","line":5100,"updated":"2023-06-20 15:27:25.000000000","message":"I think it\u0027s important to have unit test in this method, as it seems to me to be part of the feature core and last CI execution shows it is not covered [0].\n\n[0] https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_cff/343980/48/check/openstack-tox-cover/cffa99b/cover/d_030f674440dfdd1c_manager_py.html#t5103","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":5097,"context_line":"            context, backup_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":5098,"context_line":"        LOG.info(\"Create share backup %s successfully.\", backup_id)"},{"line_number":5099,"context_line":""},{"line_number":5100,"context_line":"    def delete_backup(self, context, backup):"},{"line_number":5101,"context_line":"        backup_id \u003d backup[\u0027id\u0027]"},{"line_number":5102,"context_line":"        LOG.info(\u0027Delete backup started, backup: %s.\u0027, backup_id)"},{"line_number":5103,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"7a5374b1_6068abf2","line":5100,"in_reply_to":"aa5bf2c9_4d9ae27a","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"4e7b3f34b306195e932e3847089ec889d051e309","unresolved":true,"context_lines":[{"line_number":5132,"context_line":"        self.db.share_backup_delete(context, backup[\u0027id\u0027])"},{"line_number":5133,"context_line":"        LOG.info(\"Share backup %s deleted successfully.\", backup[\u0027id\u0027])"},{"line_number":5134,"context_line":""},{"line_number":5135,"context_line":"    def restore_backup(self, context, backup, share_id):"},{"line_number":5136,"context_line":"        LOG.info(\u0027Restore backup started, backup: %(backup_id)s \u0027"},{"line_number":5137,"context_line":"                 \u0027share: %(share_id)s.\u0027,"},{"line_number":5138,"context_line":"                 {\u0027backup_id\u0027: backup[\u0027id\u0027], \u0027share_id\u0027: share_id})"}],"source_content_type":"text/x-python","patch_set":48,"id":"7d5a6eae_ffbef6be","line":5135,"updated":"2023-06-20 15:27:25.000000000","message":"I think it\u0027s important to have unit test in this method, as it seems to me to be part of the feature core and last CI execution shows it is not covered [0].\n\n[0] https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_cff/343980/48/check/openstack-tox-cover/cffa99b/cover/d_030f674440dfdd1c_manager_py.html#t5138","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":5132,"context_line":"        self.db.share_backup_delete(context, backup[\u0027id\u0027])"},{"line_number":5133,"context_line":"        LOG.info(\"Share backup %s deleted successfully.\", backup[\u0027id\u0027])"},{"line_number":5134,"context_line":""},{"line_number":5135,"context_line":"    def restore_backup(self, context, backup, share_id):"},{"line_number":5136,"context_line":"        LOG.info(\u0027Restore backup started, backup: %(backup_id)s \u0027"},{"line_number":5137,"context_line":"                 \u0027share: %(share_id)s.\u0027,"},{"line_number":5138,"context_line":"                 {\u0027backup_id\u0027: backup[\u0027id\u0027], \u0027share_id\u0027: share_id})"}],"source_content_type":"text/x-python","patch_set":48,"id":"eaa6379c_3e65c228","line":5135,"in_reply_to":"7d5a6eae_ffbef6be","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"bccce842f5a8ddc5725dad280ca7e057e4c041c4"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":5105,"context_line":"        try:"},{"line_number":5106,"context_line":"            self.driver.create_backup(context, backup_info)"},{"line_number":5107,"context_line":"        except Exception as err:"},{"line_number":5108,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":5109,"context_line":"                LOG.error(\"Failed to create share backup %s by driver.\","},{"line_number":5110,"context_line":"                          backup[\u0027id\u0027])"},{"line_number":5111,"context_line":"                self.db.share_update("}],"source_content_type":"text/x-python","patch_set":57,"id":"d07fcad4_fe62a418","line":5108,"range":{"start_line":5108,"start_character":11,"end_line":5108,"end_character":55},"updated":"2023-08-01 02:23:01.000000000","message":"shouldn\u0027t we rollback quotas as well?","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":false,"context_lines":[{"line_number":5105,"context_line":"        try:"},{"line_number":5106,"context_line":"            self.driver.create_backup(context, backup_info)"},{"line_number":5107,"context_line":"        except Exception as err:"},{"line_number":5108,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":5109,"context_line":"                LOG.error(\"Failed to create share backup %s by driver.\","},{"line_number":5110,"context_line":"                          backup[\u0027id\u0027])"},{"line_number":5111,"context_line":"                self.db.share_update("}],"source_content_type":"text/x-python","patch_set":57,"id":"9730be11_c65c310b","line":5108,"range":{"start_line":5108,"start_character":11,"end_line":5108,"end_character":55},"in_reply_to":"a351ab48_e59ee539","updated":"2023-08-10 01:59:23.000000000","message":"ack","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":5105,"context_line":"        try:"},{"line_number":5106,"context_line":"            self.driver.create_backup(context, backup_info)"},{"line_number":5107,"context_line":"        except Exception as err:"},{"line_number":5108,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":5109,"context_line":"                LOG.error(\"Failed to create share backup %s by driver.\","},{"line_number":5110,"context_line":"                          backup[\u0027id\u0027])"},{"line_number":5111,"context_line":"                self.db.share_update("}],"source_content_type":"text/x-python","patch_set":57,"id":"a351ab48_e59ee539","line":5108,"range":{"start_line":5108,"start_character":11,"end_line":5108,"end_character":55},"in_reply_to":"d07fcad4_fe62a418","updated":"2023-08-07 10:17:56.000000000","message":"that backup will exist in db and in ERROR state. User can then delete it where quota will be rolled back.","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":5147,"context_line":"                context, project_id\u003dbackup[\u0027project_id\u0027], **reserve_opts)"},{"line_number":5148,"context_line":"        except Exception:"},{"line_number":5149,"context_line":"            reservations \u003d None"},{"line_number":5150,"context_line":"            LOG.exception(\"Failed to update usages deleting backup.\")"},{"line_number":5151,"context_line":""},{"line_number":5152,"context_line":"        if reservations:"},{"line_number":5153,"context_line":"            QUOTAS.commit(context, reservations,"}],"source_content_type":"text/x-python","patch_set":57,"id":"c8b47bb9_55a4877b","line":5150,"range":{"start_line":5150,"start_character":50,"end_line":5150,"end_character":51},"updated":"2023-08-01 02:23:01.000000000","message":"while deleting backup\n\nplease also log the quotas you were trying to adjust.. i.e., project_id, reserve_opts","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":5147,"context_line":"                context, project_id\u003dbackup[\u0027project_id\u0027], **reserve_opts)"},{"line_number":5148,"context_line":"        except Exception:"},{"line_number":5149,"context_line":"            reservations \u003d None"},{"line_number":5150,"context_line":"            LOG.exception(\"Failed to update usages deleting backup.\")"},{"line_number":5151,"context_line":""},{"line_number":5152,"context_line":"        if reservations:"},{"line_number":5153,"context_line":"            QUOTAS.commit(context, reservations,"}],"source_content_type":"text/x-python","patch_set":57,"id":"937be699_d74b220a","line":5150,"range":{"start_line":5150,"start_character":50,"end_line":5150,"end_character":51},"in_reply_to":"c8b47bb9_55a4877b","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d40fc35036c5b32bea269698e2d2550f4bb0b05","unresolved":true,"context_lines":[{"line_number":5133,"context_line":"                LOG.warning(\"Failed to get progress of share %(share)s \""},{"line_number":5134,"context_line":"                            \"backing up in share_backup %(backup).\","},{"line_number":5135,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":5136,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":5137,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":5138,"context_line":"                                        {\u0027progress\u0027: progress})"},{"line_number":5139,"context_line":"            if progress \u003d\u003d \u0027100\u0027:"},{"line_number":5140,"context_line":"                self.db.share_update("},{"line_number":5141,"context_line":"                    context, share_id,"},{"line_number":5142,"context_line":"                    {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":5143,"context_line":"                self.db.share_backup_update("},{"line_number":5144,"context_line":"                    context, backup_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":5145,"context_line":"                LOG.info(\"Created share backup %s successfully.\", backup_id)"},{"line_number":5146,"context_line":""},{"line_number":5147,"context_line":"    def delete_backup(self, context, backup):"},{"line_number":5148,"context_line":"        LOG.info(\u0027Delete backup started, backup: %s.\u0027, backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":58,"id":"3a6280ad_0dc55fc5","line":5145,"range":{"start_line":5136,"start_character":12,"end_line":5145,"end_character":76},"updated":"2023-08-08 07:04:18.000000000","message":"try:\n                result \u003d self.driver.create_backup_continue(\n                    context, share_instance, backup)\n            except Exception:\n                LOG.warning(\"Failed to get progress of share %(share)s \"\n                            \"backing up in share_backup %(backup).\",\n                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})\n            if result:\n                progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)\n                self.db.share_backup_update(context, backup_id,\n                                            {\u0027progress\u0027: progress})\n                if progress \u003d\u003d \u0027100\u0027:\n                    self.db.share_update(\n                        context, share_id,\n                        {\u0027status\u0027: constants.STATUS_AVAILABLE})\n                    self.db.share_backup_update(\n                        context, backup_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})\n                    LOG.info(\"Created share backup %s successfully.\", backup_id)","commit_id":"4c6394e479ce4ea0af8fda5a8b57ace4ad9e252b"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a498e3776b7c9d2a5e3033ccb02613451577caf2","unresolved":false,"context_lines":[{"line_number":5133,"context_line":"                LOG.warning(\"Failed to get progress of share %(share)s \""},{"line_number":5134,"context_line":"                            \"backing up in share_backup %(backup).\","},{"line_number":5135,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":5136,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":5137,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":5138,"context_line":"                                        {\u0027progress\u0027: progress})"},{"line_number":5139,"context_line":"            if progress \u003d\u003d \u0027100\u0027:"},{"line_number":5140,"context_line":"                self.db.share_update("},{"line_number":5141,"context_line":"                    context, share_id,"},{"line_number":5142,"context_line":"                    {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":5143,"context_line":"                self.db.share_backup_update("},{"line_number":5144,"context_line":"                    context, backup_id, {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":5145,"context_line":"                LOG.info(\"Created share backup %s successfully.\", backup_id)"},{"line_number":5146,"context_line":""},{"line_number":5147,"context_line":"    def delete_backup(self, context, backup):"},{"line_number":5148,"context_line":"        LOG.info(\u0027Delete backup started, backup: %s.\u0027, backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":58,"id":"32016bed_287b3795","line":5145,"range":{"start_line":5136,"start_character":12,"end_line":5145,"end_character":76},"in_reply_to":"3a6280ad_0dc55fc5","updated":"2023-08-08 10:46:37.000000000","message":"Done","commit_id":"4c6394e479ce4ea0af8fda5a8b57ace4ad9e252b"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d40fc35036c5b32bea269698e2d2550f4bb0b05","unresolved":true,"context_lines":[{"line_number":5228,"context_line":"                LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":5229,"context_line":"                            \"%(backup)s restoring in share %(share).\","},{"line_number":5230,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":5231,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":5232,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":5233,"context_line":"                                        {\u0027restore_progress\u0027: progress})"},{"line_number":5234,"context_line":""},{"line_number":5235,"context_line":"            if progress \u003d\u003d \u0027100\u0027:"},{"line_number":5236,"context_line":"                self.db.share_update("},{"line_number":5237,"context_line":"                    context, share_id,"},{"line_number":5238,"context_line":"                    {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":5239,"context_line":"                self.db.share_backup_update("},{"line_number":5240,"context_line":"                    context, backup_id,"},{"line_number":5241,"context_line":"                    {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":5242,"context_line":"                LOG.info(\"Share backup %s restored successfully.\", backup_id)"},{"line_number":5243,"context_line":""},{"line_number":5244,"context_line":"    @periodic_task.periodic_task("},{"line_number":5245,"context_line":"        spacing\u003dCONF.share_usage_size_update_interval,"}],"source_content_type":"text/x-python","patch_set":58,"id":"fce24ba7_754f191f","line":5242,"range":{"start_line":5231,"start_character":12,"end_line":5242,"end_character":77},"updated":"2023-08-08 07:04:18.000000000","message":"same above. if result \u003d self.driver.restore_backup_continue() raised.\nshould not update backup progress to 0. because data/manager will update the backup.","commit_id":"4c6394e479ce4ea0af8fda5a8b57ace4ad9e252b"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a498e3776b7c9d2a5e3033ccb02613451577caf2","unresolved":false,"context_lines":[{"line_number":5228,"context_line":"                LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":5229,"context_line":"                            \"%(backup)s restoring in share %(share).\","},{"line_number":5230,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":5231,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":5232,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":5233,"context_line":"                                        {\u0027restore_progress\u0027: progress})"},{"line_number":5234,"context_line":""},{"line_number":5235,"context_line":"            if progress \u003d\u003d \u0027100\u0027:"},{"line_number":5236,"context_line":"                self.db.share_update("},{"line_number":5237,"context_line":"                    context, share_id,"},{"line_number":5238,"context_line":"                    {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":5239,"context_line":"                self.db.share_backup_update("},{"line_number":5240,"context_line":"                    context, backup_id,"},{"line_number":5241,"context_line":"                    {\u0027status\u0027: constants.STATUS_AVAILABLE})"},{"line_number":5242,"context_line":"                LOG.info(\"Share backup %s restored successfully.\", backup_id)"},{"line_number":5243,"context_line":""},{"line_number":5244,"context_line":"    @periodic_task.periodic_task("},{"line_number":5245,"context_line":"        spacing\u003dCONF.share_usage_size_update_interval,"}],"source_content_type":"text/x-python","patch_set":58,"id":"3ea5ff14_7ff15f92","line":5242,"range":{"start_line":5231,"start_character":12,"end_line":5242,"end_character":77},"in_reply_to":"fce24ba7_754f191f","updated":"2023-08-08 10:46:37.000000000","message":"Done","commit_id":"4c6394e479ce4ea0af8fda5a8b57ace4ad9e252b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":5115,"context_line":"    @utils.require_driver_initialized"},{"line_number":5116,"context_line":"    def create_backup_continue(self, context):"},{"line_number":5117,"context_line":"        \"\"\"Invokes driver to continue backup of share.\"\"\""},{"line_number":5118,"context_line":"        backups \u003d self.db.share_backups_get_all(context)"},{"line_number":5119,"context_line":""},{"line_number":5120,"context_line":"        for backup in backups:"},{"line_number":5121,"context_line":"            if backup[\u0027status\u0027] !\u003d constants.STATUS_CREATING:"}],"source_content_type":"text/x-python","patch_set":59,"id":"21d22a07_37a37f31","line":5118,"range":{"start_line":5118,"start_character":26,"end_line":5118,"end_character":54},"updated":"2023-08-10 01:59:23.000000000","message":"You should limit this lookup by \"host\" (host\u003dself.host), status (status\u003d\"creating\")\n\n(\"share_topic\" lookup would be redundant since \"host\" will filter out anything that\u0027s not running on this host)","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e7032aa02d19d33f59de82abbdb71524ce17d5e0","unresolved":true,"context_lines":[{"line_number":5115,"context_line":"    @utils.require_driver_initialized"},{"line_number":5116,"context_line":"    def create_backup_continue(self, context):"},{"line_number":5117,"context_line":"        \"\"\"Invokes driver to continue backup of share.\"\"\""},{"line_number":5118,"context_line":"        backups \u003d self.db.share_backups_get_all(context)"},{"line_number":5119,"context_line":""},{"line_number":5120,"context_line":"        for backup in backups:"},{"line_number":5121,"context_line":"            if backup[\u0027status\u0027] !\u003d constants.STATUS_CREATING:"}],"source_content_type":"text/x-python","patch_set":59,"id":"4add4a3e_c01168c6","line":5118,"range":{"start_line":5118,"start_character":26,"end_line":5118,"end_character":54},"in_reply_to":"21d22a07_37a37f31","updated":"2023-08-10 07:20:56.000000000","message":"I support the addition of both host and status filters, but the share_topic filter is still necessary. Because the host of backup is defined by the host of the original share. If the share of a share backend supports the share_topic backup mode, it also supports the common data_topic backup mode. Assume that share1 and share2 on the back end of the share are backed up at the same time and backup1 and backup2 are obtained. backup1 is backed up using share_topic, and backup2 is backed up using data_topic. backup1[\u0027host\u0027]\u003d\u003dbackup2[\u0027host\u0027]. That is, using host without topic is indistinguishable.","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":5115,"context_line":"    @utils.require_driver_initialized"},{"line_number":5116,"context_line":"    def create_backup_continue(self, context):"},{"line_number":5117,"context_line":"        \"\"\"Invokes driver to continue backup of share.\"\"\""},{"line_number":5118,"context_line":"        backups \u003d self.db.share_backups_get_all(context)"},{"line_number":5119,"context_line":""},{"line_number":5120,"context_line":"        for backup in backups:"},{"line_number":5121,"context_line":"            if backup[\u0027status\u0027] !\u003d constants.STATUS_CREATING:"}],"source_content_type":"text/x-python","patch_set":59,"id":"53d52e3a_99835072","line":5118,"range":{"start_line":5118,"start_character":26,"end_line":5118,"end_character":54},"in_reply_to":"4add4a3e_c01168c6","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":5118,"context_line":"        backups \u003d self.db.share_backups_get_all(context)"},{"line_number":5119,"context_line":""},{"line_number":5120,"context_line":"        for backup in backups:"},{"line_number":5121,"context_line":"            if backup[\u0027status\u0027] !\u003d constants.STATUS_CREATING:"},{"line_number":5122,"context_line":"                continue"},{"line_number":5123,"context_line":"            if backup[\u0027topic\u0027] !\u003d CONF.share_topic:"},{"line_number":5124,"context_line":"                continue"},{"line_number":5125,"context_line":""},{"line_number":5126,"context_line":"            backup_id \u003d backup[\u0027id\u0027]"},{"line_number":5127,"context_line":"            share_id \u003d backup[\u0027share_id\u0027]"}],"source_content_type":"text/x-python","patch_set":59,"id":"d2c7bb35_70fd7803","line":5124,"range":{"start_line":5121,"start_character":12,"end_line":5124,"end_character":24},"updated":"2023-08-10 01:59:23.000000000","message":"see comment above","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":5118,"context_line":"        backups \u003d self.db.share_backups_get_all(context)"},{"line_number":5119,"context_line":""},{"line_number":5120,"context_line":"        for backup in backups:"},{"line_number":5121,"context_line":"            if backup[\u0027status\u0027] !\u003d constants.STATUS_CREATING:"},{"line_number":5122,"context_line":"                continue"},{"line_number":5123,"context_line":"            if backup[\u0027topic\u0027] !\u003d CONF.share_topic:"},{"line_number":5124,"context_line":"                continue"},{"line_number":5125,"context_line":""},{"line_number":5126,"context_line":"            backup_id \u003d backup[\u0027id\u0027]"},{"line_number":5127,"context_line":"            share_id \u003d backup[\u0027share_id\u0027]"}],"source_content_type":"text/x-python","patch_set":59,"id":"09b55d94_2f5d4247","line":5124,"range":{"start_line":5121,"start_character":12,"end_line":5124,"end_character":24},"in_reply_to":"d2c7bb35_70fd7803","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":5205,"context_line":"        spacing\u003dCONF.driver_restore_continue_update_interval)"},{"line_number":5206,"context_line":"    @utils.require_driver_initialized"},{"line_number":5207,"context_line":"    def restore_backup_continue(self, context):"},{"line_number":5208,"context_line":"        shares \u003d self.db.share_get_all(context)"},{"line_number":5209,"context_line":""},{"line_number":5210,"context_line":"        for share in shares:"},{"line_number":5211,"context_line":"            backup_id \u003d share.get(\u0027source_backup_id\u0027)"}],"source_content_type":"text/x-python","patch_set":59,"id":"4f8501e5_f0a5835b","line":5208,"range":{"start_line":5208,"start_character":7,"end_line":5208,"end_character":47},"updated":"2023-08-10 01:59:23.000000000","message":"please get only \"restoring\" shares (status\u003d\u0027restoring\u0027) belonging to this specific host (host\u003dself.host)\n\n-- you should push the filtering down to the db layer, or you\u0027ll be processing a potentially large number of shares if you don\u0027t filter!\n\nAlso, wouldn\u0027t it make sense to invert this filtering?\n\nGrab all the ongoing restores (lookup the backups table for \"restoring\" backups belongng to this specific host) instead of shares; for each backup, grab the associated share.. \n\nDoing this will be way more efficient, because there will always be less backups than there are shares; and you\u0027ll need backup data anyway, you can avoid doing the status and topic checks that you\u0027re doing on lines 5220-5223","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e7032aa02d19d33f59de82abbdb71524ce17d5e0","unresolved":true,"context_lines":[{"line_number":5205,"context_line":"        spacing\u003dCONF.driver_restore_continue_update_interval)"},{"line_number":5206,"context_line":"    @utils.require_driver_initialized"},{"line_number":5207,"context_line":"    def restore_backup_continue(self, context):"},{"line_number":5208,"context_line":"        shares \u003d self.db.share_get_all(context)"},{"line_number":5209,"context_line":""},{"line_number":5210,"context_line":"        for share in shares:"},{"line_number":5211,"context_line":"            backup_id \u003d share.get(\u0027source_backup_id\u0027)"}],"source_content_type":"text/x-python","patch_set":59,"id":"bd4e9460_3fe19506","line":5208,"range":{"start_line":5208,"start_character":7,"end_line":5208,"end_character":47},"in_reply_to":"4f8501e5_f0a5835b","updated":"2023-08-10 07:20:56.000000000","message":"same above, support status and host, but topic is also necessary.\n\n    filters \u003d {\u0027status\u0027: \u0027restoring\u0027, \u0027host\u0027: self.host,\u0027topic\u0027: CONF.share_topic}\n    backups \u003d self.db.share_backups_get_all(context, filters\u003dfilters)","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":5205,"context_line":"        spacing\u003dCONF.driver_restore_continue_update_interval)"},{"line_number":5206,"context_line":"    @utils.require_driver_initialized"},{"line_number":5207,"context_line":"    def restore_backup_continue(self, context):"},{"line_number":5208,"context_line":"        shares \u003d self.db.share_get_all(context)"},{"line_number":5209,"context_line":""},{"line_number":5210,"context_line":"        for share in shares:"},{"line_number":5211,"context_line":"            backup_id \u003d share.get(\u0027source_backup_id\u0027)"}],"source_content_type":"text/x-python","patch_set":59,"id":"bccddc69_53dc4c71","line":5208,"range":{"start_line":5208,"start_character":7,"end_line":5208,"end_character":47},"in_reply_to":"bd4e9460_3fe19506","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":5208,"context_line":"        shares \u003d self.db.share_get_all(context)"},{"line_number":5209,"context_line":""},{"line_number":5210,"context_line":"        for share in shares:"},{"line_number":5211,"context_line":"            backup_id \u003d share.get(\u0027source_backup_id\u0027)"},{"line_number":5212,"context_line":"            if not backup_id:"},{"line_number":5213,"context_line":"                continue"},{"line_number":5214,"context_line":"            try:"},{"line_number":5215,"context_line":"                backup \u003d self.db.share_backup_get(context, backup_id)"},{"line_number":5216,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":59,"id":"7a9adbf8_0e98af0b","line":5213,"range":{"start_line":5211,"start_character":12,"end_line":5213,"end_character":24},"updated":"2023-08-10 01:59:23.000000000","message":"this would be weird? a \"restoring\" share should always have this field populated","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":5208,"context_line":"        shares \u003d self.db.share_get_all(context)"},{"line_number":5209,"context_line":""},{"line_number":5210,"context_line":"        for share in shares:"},{"line_number":5211,"context_line":"            backup_id \u003d share.get(\u0027source_backup_id\u0027)"},{"line_number":5212,"context_line":"            if not backup_id:"},{"line_number":5213,"context_line":"                continue"},{"line_number":5214,"context_line":"            try:"},{"line_number":5215,"context_line":"                backup \u003d self.db.share_backup_get(context, backup_id)"},{"line_number":5216,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":59,"id":"ca67b7d0_8ef8b23d","line":5213,"range":{"start_line":5211,"start_character":12,"end_line":5213,"end_character":24},"in_reply_to":"7a9adbf8_0e98af0b","updated":"2023-08-10 11:13:30.000000000","message":"removed","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":5232,"context_line":"                LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":5233,"context_line":"                            \"%(backup)s restoring in share %(share).\","},{"line_number":5234,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":5235,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":5236,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":5237,"context_line":"                                        {\u0027restore_progress\u0027: progress})"},{"line_number":5238,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"50ed955e_29d6648d","line":5235,"range":{"start_line":5235,"start_character":12,"end_line":5235,"end_character":56},"updated":"2023-08-10 01:59:23.000000000","message":"wouldn\u0027t we want to process errors?\n\n\nmaybe also allow a \"status\" in the result dict.. \n\ndrivers can set the share\u0027s status to \"restoring_error\" (perhaps?) in case something goes wrong.. we can look for result[\u0027backup_status\u0027], else backup\u0027s status can be reset to \"available\" \n\nalternatively, if \"driver.restore_backup_continue\" raises an error, we can set the status to \"restoring_error\"; wdyt?","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e7032aa02d19d33f59de82abbdb71524ce17d5e0","unresolved":true,"context_lines":[{"line_number":5232,"context_line":"                LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":5233,"context_line":"                            \"%(backup)s restoring in share %(share).\","},{"line_number":5234,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":5235,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":5236,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":5237,"context_line":"                                        {\u0027restore_progress\u0027: progress})"},{"line_number":5238,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"6f770362_1aafcd82","line":5235,"range":{"start_line":5235,"start_character":12,"end_line":5235,"end_character":56},"in_reply_to":"50ed955e_29d6648d","updated":"2023-08-10 07:20:56.000000000","message":"+1","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":5232,"context_line":"                LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":5233,"context_line":"                            \"%(backup)s restoring in share %(share).\","},{"line_number":5234,"context_line":"                            {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":5235,"context_line":"            progress \u003d result.get(\u0027total_progress\u0027, \u00270\u0027)"},{"line_number":5236,"context_line":"            self.db.share_backup_update(context, backup_id,"},{"line_number":5237,"context_line":"                                        {\u0027restore_progress\u0027: progress})"},{"line_number":5238,"context_line":""}],"source_content_type":"text/x-python","patch_set":59,"id":"a97526bb_bc53bc81","line":5235,"range":{"start_line":5235,"start_character":12,"end_line":5235,"end_character":56},"in_reply_to":"6f770362_1aafcd82","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2d059f1d483f53cd84cc2272c2a8d0765cb59ee9","unresolved":true,"context_lines":[{"line_number":5217,"context_line":"        for backup in backups:"},{"line_number":5218,"context_line":"            backup_id \u003d backup[\u0027id\u0027]"},{"line_number":5219,"context_line":"            try:"},{"line_number":5220,"context_line":"                filters \u003d {\u0027source_backup_id\u0027: backup_id}"},{"line_number":5221,"context_line":"                shares \u003d self.db.share_get_all(context, filters)"},{"line_number":5222,"context_line":"            except Exception:"},{"line_number":5223,"context_line":"                LOG.warning(\u0027Failed to get shares for backup %s\u0027, backup_id)"}],"source_content_type":"text/x-python","patch_set":60,"id":"30a80c32_d9c3cc0f","line":5220,"range":{"start_line":5220,"start_character":26,"end_line":5220,"end_character":57},"updated":"2023-08-11 02:04:47.000000000","message":"also add \n\n\u0027status\u0027: constants.STATUS_BACKUP_RESTORING\n\nso you don\u0027t need the check on lines 5227-5228","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"68a53753936e82d6ca5a48c230f4488baf0a2854","unresolved":false,"context_lines":[{"line_number":5217,"context_line":"        for backup in backups:"},{"line_number":5218,"context_line":"            backup_id \u003d backup[\u0027id\u0027]"},{"line_number":5219,"context_line":"            try:"},{"line_number":5220,"context_line":"                filters \u003d {\u0027source_backup_id\u0027: backup_id}"},{"line_number":5221,"context_line":"                shares \u003d self.db.share_get_all(context, filters)"},{"line_number":5222,"context_line":"            except Exception:"},{"line_number":5223,"context_line":"                LOG.warning(\u0027Failed to get shares for backup %s\u0027, backup_id)"}],"source_content_type":"text/x-python","patch_set":60,"id":"b9a81f59_7dc08060","line":5220,"range":{"start_line":5220,"start_character":26,"end_line":5220,"end_character":57},"in_reply_to":"30a80c32_d9c3cc0f","updated":"2024-02-06 14:09:24.000000000","message":"Done","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2d059f1d483f53cd84cc2272c2a8d0765cb59ee9","unresolved":true,"context_lines":[{"line_number":5247,"context_line":"                        LOG.info(\"Share backup %s restored successfully.\","},{"line_number":5248,"context_line":"                                 backup_id)"},{"line_number":5249,"context_line":"                except Exception:"},{"line_number":5250,"context_line":"                    LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":5251,"context_line":"                                \"%(backup)s restoring in share %(share).\","},{"line_number":5252,"context_line":"                                {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":5253,"context_line":"                    self.db.share_update("}],"source_content_type":"text/x-python","patch_set":60,"id":"1a99a87c_d6bdc788","line":5250,"range":{"start_line":5250,"start_character":24,"end_line":5250,"end_character":31},"updated":"2023-08-11 02:04:47.000000000","message":"exception; not a warning - the problem may need troubleshooting from a cloud administrator\n\nLOG.exception will log the traceback in case the driver\u0027s logging some information","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"68a53753936e82d6ca5a48c230f4488baf0a2854","unresolved":false,"context_lines":[{"line_number":5247,"context_line":"                        LOG.info(\"Share backup %s restored successfully.\","},{"line_number":5248,"context_line":"                                 backup_id)"},{"line_number":5249,"context_line":"                except Exception:"},{"line_number":5250,"context_line":"                    LOG.warning(\"Failed to get progress of share_backup \""},{"line_number":5251,"context_line":"                                \"%(backup)s restoring in share %(share).\","},{"line_number":5252,"context_line":"                                {\u0027share\u0027: share_id, \u0027backup\u0027: backup_id})"},{"line_number":5253,"context_line":"                    self.db.share_update("}],"source_content_type":"text/x-python","patch_set":60,"id":"c17d504d_8be5cd10","line":5250,"range":{"start_line":5250,"start_character":24,"end_line":5250,"end_character":31},"in_reply_to":"1a99a87c_d6bdc788","updated":"2024-02-06 14:09:24.000000000","message":"Done","commit_id":"0b99fdaa9a6ee33244e4560ddf2cc767afb5bf80"}],"manila/tests/api/v2/test_share_backups.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"05a9ef11daab3b1a9d939235c622ed2514ac9b98","unresolved":false,"context_lines":[{"line_number":472,"context_line":"                exc.HTTPForbidden, method, self.backups_req, **arguments)"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"    @ddt.data(\u0027index\u0027, \u0027detail\u0027, \u0027show\u0027, \u0027create\u0027, \u0027delete\u0027)"},{"line_number":475,"context_line":"    def test_upsupported_microversion(self, method_name):"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"        unsupported_microversions \u003d (\u00271.0\u0027, \u00272.2\u0027, \u00272.18\u0027)"},{"line_number":478,"context_line":"        method \u003d getattr(self.controller, method_name)"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa7ab95a_90235605","line":475,"range":{"start_line":475,"start_character":13,"end_line":475,"end_character":15},"updated":"2016-08-26 06:21:19.000000000","message":"un","commit_id":"87e2c82c856a291858afc3430404c62a52b9d18d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f790d50ee822318c29fa2b4ef32531a7e2a50a51","unresolved":true,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import ddt"},{"line_number":14,"context_line":"from oslo_config import cfg"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from webob import exc"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from manila.api.v2 import share_backups"},{"line_number":20,"context_line":"from manila.common import constants"}],"source_content_type":"text/x-python","patch_set":57,"id":"7b9dbb83_c032d7ff","line":17,"range":{"start_line":13,"start_character":1,"end_line":17,"end_character":15},"updated":"2023-08-01 02:23:01.000000000","message":"one group for all third party libs","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a4b5498116628463ae3a127fee9da89d3d4766de","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import ddt"},{"line_number":14,"context_line":"from oslo_config import cfg"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from webob import exc"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from manila.api.v2 import share_backups"},{"line_number":20,"context_line":"from manila.common import constants"}],"source_content_type":"text/x-python","patch_set":57,"id":"6957c1dd_6552f65e","line":17,"range":{"start_line":13,"start_character":1,"end_line":17,"end_character":15},"in_reply_to":"7b9dbb83_c032d7ff","updated":"2023-08-07 10:17:56.000000000","message":"Done","commit_id":"6344f6792c264b210f6086fe4da71ea92176bea2"}],"manila/tests/data/test_manager.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import ddt"},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from unittest import mock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from manila.common import constants"},{"line_number":24,"context_line":"from manila import context"}],"source_content_type":"text/x-python","patch_set":59,"id":"9d9b10e1_05d70497","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":25},"updated":"2023-08-10 01:59:23.000000000","message":"unittest is part of stdlib. it belongs in a different group above this group","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import ddt"},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from unittest import mock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from manila.common import constants"},{"line_number":24,"context_line":"from manila import context"}],"source_content_type":"text/x-python","patch_set":59,"id":"f09c518b_1f63c3d3","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":25},"in_reply_to":"9d9b10e1_05d70497","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"16c643f8e51597d1b58dfe24a5be81160d08c405","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from manila.common import constants"},{"line_number":24,"context_line":"from manila import context"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from manila.data import helper"},{"line_number":27,"context_line":"from manila.data import manager"},{"line_number":28,"context_line":"from manila.data import utils as data_utils"}],"source_content_type":"text/x-python","patch_set":59,"id":"9b9435d7_e6b58a51","line":25,"updated":"2023-08-10 01:59:23.000000000","message":"can you remove this blank line?","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d192aef2aa0e88cee8bccaa278ffca5f8699b693","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from manila.common import constants"},{"line_number":24,"context_line":"from manila import context"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from manila.data import helper"},{"line_number":27,"context_line":"from manila.data import manager"},{"line_number":28,"context_line":"from manila.data import utils as data_utils"}],"source_content_type":"text/x-python","patch_set":59,"id":"022086bd_93171b53","line":25,"in_reply_to":"9b9435d7_e6b58a51","updated":"2023-08-10 11:13:30.000000000","message":"Done","commit_id":"3946f82241ef8243a97f30b2959ceba4f01911ab"}],"manila/tests/db_utils.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"05a9ef11daab3b1a9d939235c622ed2514ac9b98","unresolved":false,"context_lines":[{"line_number":212,"context_line":"def create_backup(share_id, **kwargs):"},{"line_number":213,"context_line":"    \"\"\"Create a share backup object.\"\"\""},{"line_number":214,"context_line":"    backup \u003d {"},{"line_number":215,"context_line":"        \u0027host\u0027: \"fake_host\","},{"line_number":216,"context_line":"        \u0027share_network_id\u0027: None,"},{"line_number":217,"context_line":"        \u0027share_server_id\u0027: None,"},{"line_number":218,"context_line":"        \u0027user_id\u0027: \u0027fake\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa7ab95a_84ceb458","line":215,"updated":"2016-08-26 06:21:19.000000000","message":"missing topic?","commit_id":"87e2c82c856a291858afc3430404c62a52b9d18d"}],"manila_tempest_tests/services/share/v2/json/shares_client.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"ac118e2383085f0ac26ec49a2cbdeb4dd6cd4863","unresolved":false,"context_lines":[{"line_number":1341,"context_line":"        return self._parse_resp(body)"},{"line_number":1342,"context_line":""},{"line_number":1343,"context_line":"    def delete_share_backup(self, backup_id, version\u003dLATEST_MICROVERSION):"},{"line_number":1344,"context_line":"        \"\"\"Delete share_replica.\"\"\""},{"line_number":1345,"context_line":"        uri \u003d \"share-backups/%s\" % backup_id"},{"line_number":1346,"context_line":"        resp, body \u003d self.delete(uri,"},{"line_number":1347,"context_line":"                                 headers\u003dEXPERIMENTAL,"}],"source_content_type":"text/x-python","patch_set":22,"id":"1ac06dbe_4fafa0e3","line":1344,"range":{"start_line":1344,"start_character":18,"end_line":1344,"end_character":31},"updated":"2016-08-19 12:27:06.000000000","message":"not a replica","commit_id":"2f9065ccb44a9aecd1b9fe1c5655e45c943d7471"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"ac118e2383085f0ac26ec49a2cbdeb4dd6cd4863","unresolved":false,"context_lines":[{"line_number":1352,"context_line":""},{"line_number":1353,"context_line":"    def wait_for_share_backup_status(self, backup_id, status,"},{"line_number":1354,"context_line":"                                     version\u003dLATEST_MICROVERSION):"},{"line_number":1355,"context_line":"        \"\"\"Waits for a share to migrate to a certain host.\"\"\""},{"line_number":1356,"context_line":"        backup \u003d self.get_backup(backup_id, version\u003dversion)"},{"line_number":1357,"context_line":"        share_backup_timeout \u003d CONF.share.share_backup_timeout"},{"line_number":1358,"context_line":"        start \u003d int(time.time())"}],"source_content_type":"text/x-python","patch_set":22,"id":"1ac06dbe_6fb6dc3e","line":1355,"range":{"start_line":1355,"start_character":32,"end_line":1355,"end_character":39},"updated":"2016-08-19 12:27:06.000000000","message":"not a migration","commit_id":"2f9065ccb44a9aecd1b9fe1c5655e45c943d7471"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"05a9ef11daab3b1a9d939235c622ed2514ac9b98","unresolved":false,"context_lines":[{"line_number":1352,"context_line":""},{"line_number":1353,"context_line":"    def wait_for_share_backup_status(self, backup_id, status,"},{"line_number":1354,"context_line":"                                     version\u003dLATEST_MICROVERSION):"},{"line_number":1355,"context_line":"        \"\"\"Waits for a share to backup to a certain host.\"\"\""},{"line_number":1356,"context_line":"        backup \u003d self.get_backup(backup_id, version\u003dversion)"},{"line_number":1357,"context_line":"        share_backup_timeout \u003d CONF.share.share_backup_timeout"},{"line_number":1358,"context_line":"        start \u003d int(time.time())"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ac06dbe_94a5f248","line":1355,"range":{"start_line":1355,"start_character":29,"end_line":1355,"end_character":56},"updated":"2016-08-26 06:21:19.000000000","message":"to reach a given status","commit_id":"87e2c82c856a291858afc3430404c62a52b9d18d"}],"manila_tempest_tests/tests/api/test_backup.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"ac118e2383085f0ac26ec49a2cbdeb4dd6cd4863","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Yogesh Kshirsagar"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":22,"id":"1ac06dbe_ec5e5a75","line":1,"range":{"start_line":1,"start_character":1,"end_line":1,"end_character":34},"updated":"2016-08-19 12:27:06.000000000","message":"I guess this is incorrect. And it also should be 2016","commit_id":"2f9065ccb44a9aecd1b9fe1c5655e45c943d7471"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"ac118e2383085f0ac26ec49a2cbdeb4dd6cd4863","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        actual_backup \u003d self.shares_v2_client.get_backup(backup[\u0027id\u0027])"},{"line_number":61,"context_line":"        self.assertEqual(backup[\u0027id\u0027], actual_backup[\u0027id\u0027])"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        self.shares_v2_client.delete_share_backup(backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":22,"id":"1ac06dbe_8f1d1869","line":63,"range":{"start_line":63,"start_character":28,"end_line":63,"end_character":52},"updated":"2016-08-19 12:27:06.000000000","message":"shouldn\u0027t you wait for it to be deleted?","commit_id":"2f9065ccb44a9aecd1b9fe1c5655e45c943d7471"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"05a9ef11daab3b1a9d939235c622ed2514ac9b98","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def resource_setup(cls):"},{"line_number":37,"context_line":"        super(ShareBackupTest, cls).resource_setup()"},{"line_number":38,"context_line":"        share \u003d cls.create_share(cls.protocol)"},{"line_number":39,"context_line":"        cls.share \u003d cls.shares_client.get_share(share[\u0027id\u0027])"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @test.attr(type\u003d[base.TAG_POSITIVE, base.TAG_BACKEND])"},{"line_number":42,"context_line":"    def test_create_delete_share_backup(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ac06dbe_1a12c909","line":39,"range":{"start_line":39,"start_character":8,"end_line":39,"end_character":17},"updated":"2016-08-26 06:21:19.000000000","message":"what\u0027s this used for?","commit_id":"87e2c82c856a291858afc3430404c62a52b9d18d"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"05a9ef11daab3b1a9d939235c622ed2514ac9b98","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @test.attr(type\u003d[base.TAG_POSITIVE, base.TAG_BACKEND])"},{"line_number":42,"context_line":"    def test_create_delete_share_backup(self):"},{"line_number":43,"context_line":"        backup_name \u003d data_utils.rand_name(\u0027Backup\u0027)"},{"line_number":44,"context_line":"        backup \u003d self.shares_v2_client.create_share_backup("},{"line_number":45,"context_line":"            self.share[\u0027id\u0027], name\u003dbackup_name)"},{"line_number":46,"context_line":"        self.shares_v2_client.wait_for_share_backup_status("}],"source_content_type":"text/x-python","patch_set":24,"id":"1ac06dbe_1a38093d","line":43,"range":{"start_line":43,"start_character":44,"end_line":43,"end_character":50},"updated":"2016-08-26 06:21:19.000000000","message":"tempest-created-share-backup would be better.\nOr just leave the name parameter default in follow create_share_backup.","commit_id":"87e2c82c856a291858afc3430404c62a52b9d18d"}],"releasenotes/notes/share-backup-24scd4a32a5cd59d.yaml":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5dc2296a4c286fbb648242033f199a5404207058","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Shares can be backuped. Backup can be created, deleted, listed,"},{"line_number":4,"context_line":"    queried for detail, restored to original share or new share."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"dada55a8_b8a2bc98","line":3,"range":{"start_line":3,"start_character":18,"end_line":3,"end_character":26},"updated":"2016-07-22 21:54:24.000000000","message":"backed up","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2ea18eb7b5d4e718039eb6a84eb2ac0a91373323","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Shares can be backuped. Backup can be created, deleted, listed,"},{"line_number":4,"context_line":"    queried for detail, restored to original share or new share."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bacf61ea_6353e417","line":3,"range":{"start_line":3,"start_character":18,"end_line":3,"end_character":26},"in_reply_to":"dada55a8_b8a2bc98","updated":"2016-08-01 11:46:16.000000000","message":"Done","commit_id":"067979eb546c5173144d2a1f545bbd7f3d7752a7"}],"releasenotes/notes/share-backup-d5f68ba6f9aef776.yaml":[{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"6bc2253ff16b9cd7352b23856c716cd218eacd01","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - With share-backu feature, backup of share can be created, deleted,"},{"line_number":4,"context_line":"    listed, queried for detail, updated its name/description and also"},{"line_number":5,"context_line":"    restored to original share. Sample NFS backupdriver is added."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":44,"id":"95c90255_f6eeb198","line":3,"updated":"2023-06-06 15:32:27.000000000","message":"nit: I think this text could start with something like: \n\n\"Added support to share-backup feature. From this release, a backup of a share can be...\"","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"6bc2253ff16b9cd7352b23856c716cd218eacd01","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - With share-backu feature, backup of share can be created, deleted,"},{"line_number":4,"context_line":"    listed, queried for detail, updated its name/description and also"},{"line_number":5,"context_line":"    restored to original share. Sample NFS backupdriver is added."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":44,"id":"13a614eb_2b3a9a85","line":3,"updated":"2023-06-06 15:32:27.000000000","message":"typo: backup","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"50b4c0d2ddc03a6c5434ee811ee997950765bb4f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - With share-backu feature, backup of share can be created, deleted,"},{"line_number":4,"context_line":"    listed, queried for detail, updated its name/description and also"},{"line_number":5,"context_line":"    restored to original share. Sample NFS backupdriver is added."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":44,"id":"5f72b25f_803a1ec0","line":3,"in_reply_to":"13a614eb_2b3a9a85","updated":"2023-06-07 13:00:50.000000000","message":"Done","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"50b4c0d2ddc03a6c5434ee811ee997950765bb4f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - With share-backu feature, backup of share can be created, deleted,"},{"line_number":4,"context_line":"    listed, queried for detail, updated its name/description and also"},{"line_number":5,"context_line":"    restored to original share. Sample NFS backupdriver is added."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":44,"id":"875b5925_c5cb76c5","line":3,"in_reply_to":"95c90255_f6eeb198","updated":"2023-06-07 13:00:50.000000000","message":"Done","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"6bc2253ff16b9cd7352b23856c716cd218eacd01","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - With share-backu feature, backup of share can be created, deleted,"},{"line_number":4,"context_line":"    listed, queried for detail, updated its name/description and also"},{"line_number":5,"context_line":"    restored to original share. Sample NFS backupdriver is added."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":44,"id":"acd72319_c7034fe8","line":5,"updated":"2023-06-06 15:32:27.000000000","message":"typo: backup driver","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"50b4c0d2ddc03a6c5434ee811ee997950765bb4f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - With share-backu feature, backup of share can be created, deleted,"},{"line_number":4,"context_line":"    listed, queried for detail, updated its name/description and also"},{"line_number":5,"context_line":"    restored to original share. Sample NFS backupdriver is added."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":44,"id":"12a2ca5c_68fc054f","line":5,"in_reply_to":"acd72319_c7034fe8","updated":"2023-06-07 13:00:50.000000000","message":"Done","commit_id":"a93d071370d34e2149f8a79bf0e4e204d2bd2cdc"}]}
