)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7fd8ca088177a0c162d4076ae8819d5ec30f54cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a8259914_536c7d37","updated":"2023-05-10 13:00:12.000000000","message":"Hi Goutham, thanks for this spec. It looks good to me as it looks to cover our need.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"645983b662aeeda912c2eb8db3ac16cdea667393","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"90451a81_a92851b4","updated":"2023-06-06 19:34:29.000000000","message":"Thank you for working on this spec, Goutham - I have some questions to you, could you please take a look?","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f81dff44965601cebc04b2ecdf2b0d08b83e009a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"017603e7_2313c528","updated":"2023-05-18 23:34:03.000000000","message":"Thanks for your comments Haixin, Rene and Sean!","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"72814306bfbcca5f413b2f65c039b1a8ace95370","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"da0268cb_22708ca5","updated":"2023-05-18 19:39:56.000000000","message":"i need to read this properly so ill loop back to this","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7a884048c344d6157ee0bf7513409c1f0090da49","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0c419740_3d51b8be","updated":"2023-05-05 07:59:05.000000000","message":"thanks for your change, Goutham Pacha Ravi,\nhere are some comments.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"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":"1da643c69a45ec79d4890408a39d7a9fc16a0a6c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1aa26bce_8eec9cd3","updated":"2023-06-27 20:27:58.000000000","message":"Hi Goutham, thanks for the patch. I have some questions and suggestions on comments inline. Let me know if you have any question.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"685aeb7f5232841573caeac5a4bfa77fc0e8dd86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"408ca262_d14b186e","updated":"2023-06-15 17:39:36.000000000","message":"Thank you very much for the feedback so far; i\u0027ve responded to several of the remarks; we could continue discussing any contentious items if necessary.. :)","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae5ac8b4d65d07bb48c4da8a3b6c5513e7f17078","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e0af6e40_26a3d788","updated":"2023-06-15 18:59:55.000000000","message":"i wont have time to review this porperly today but there are issue with the http status codes you have selected.\n\ni have not really looked at the rest but i see you ahve adapted some of the datastucutres so ill try and review with that in mind.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"a9631636e262fd7fb3c0b07cbf0641ec5ee350c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bc151d07_d8ab7ce3","updated":"2023-07-04 18:05:41.000000000","message":"LGTM - I think the remaining comments could be addressed in a follow-up change (and one if them in particular in the other spec)","commit_id":"415e52dacbcf6ee4bc3e5332f0fbbf000605acec"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0ea5d4ea_1852b541","updated":"2023-06-30 07:13:30.000000000","message":"Thank you for the further comments, Sean and Thiago. I\u0027ve responded inline and made some modifications.","commit_id":"415e52dacbcf6ee4bc3e5332f0fbbf000605acec"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7414e4f2240a08ce9576367d89d7a60894de90e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"59102c09_4728ee1c","updated":"2023-07-03 07:14:22.000000000","message":"now it is LGTM, thanks.","commit_id":"415e52dacbcf6ee4bc3e5332f0fbbf000605acec"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3ade87583b6ab4d194154fc9fc60d106c0aa4868","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5299b6bf_6e56f663","updated":"2023-07-06 13:32:59.000000000","message":"LGTM, thanks for working on this spec and addressing the comments from previous PS!","commit_id":"194021de433f609fb3e0867ca72ef84cf521b8f2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ac78555aa2daea9e7dd13d7cf9bd183b01fc20a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3e7e2cc5_76b6129e","updated":"2023-07-06 03:17:50.000000000","message":"LGTM.","commit_id":"194021de433f609fb3e0867ca72ef84cf521b8f2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fdfd86da37492766b1a3379e13aacfdb14de04c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6d38a5f5_3e0d4079","updated":"2023-07-05 14:46:36.000000000","message":"ty for the comments; had to resolve a merge conflict with this new PS.","commit_id":"194021de433f609fb3e0867ca72ef84cf521b8f2"}],"specs/bobcat/allow-locking-shares-against-deletion.rst":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7a884048c344d6157ee0bf7513409c1f0090da49","unresolved":true,"context_lines":[{"line_number":68,"context_line":"Users will have the ability to lock any share in the project. Multiple locks"},{"line_number":69,"context_line":"can be placed on the share. A share cannot be deleted unless all locks have"},{"line_number":70,"context_line":"been removed. Only the user that placed the lock, or the administrator user"},{"line_number":71,"context_line":"can remove a given lock. If a user attempts to lock a share that is previously"},{"line_number":72,"context_line":"locked by them, the API will not present an error. The lock record can be"},{"line_number":73,"context_line":"updated with a new lock reason or a different lock action."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The implementation of this feature will include generalizations for future"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d291255f_46331fe9","line":72,"range":{"start_line":71,"start_character":25,"end_line":72,"end_character":50},"updated":"2023-05-05 07:59:05.000000000","message":"if user U1 in project P1 already create a lock on share S1 with RESOURCE_ACTION is delete and LOCK_REASON is LR1.\nnow user U1 try to create another lock on the share S1 with same RESOURCE_ACTION and LOCK_REASON.\ni think api should return 409 conflict，and tell user the exist lock id.\n\ni think create a new lock, USER_ID, PROJECT_ID, RESOURCE_ACTION, RESOURCE_TYPE, RESOURCE_ID \nAt least one of the five values must be inconsistent with the existing lock.\n\nwdyt?","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"72814306bfbcca5f413b2f65c039b1a8ace95370","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Users will have the ability to lock any share in the project. Multiple locks"},{"line_number":69,"context_line":"can be placed on the share. A share cannot be deleted unless all locks have"},{"line_number":70,"context_line":"been removed. Only the user that placed the lock, or the administrator user"},{"line_number":71,"context_line":"can remove a given lock. If a user attempts to lock a share that is previously"},{"line_number":72,"context_line":"locked by them, the API will not present an error. The lock record can be"},{"line_number":73,"context_line":"updated with a new lock reason or a different lock action."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The implementation of this feature will include generalizations for future"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b5179b2a_18acdf6f","line":72,"range":{"start_line":70,"start_character":13,"end_line":72,"end_character":50},"updated":"2023-05-18 19:39:56.000000000","message":"iim not sure this need to be based on the user.\n\ni think it that could be problematic.\n\nemployee A creates a share and the teams uese it so they lock it to stop it being removed. time passes and employee A leave the company but the team still need the share so no worries they continue to use it.\nmore time passes and the company nolonger needs the share but emploee A is nologner in ldap and there account has been removed form keystone.\nnow they cannot delete the share with out fileing a support ticket\nto remvoe the lock.\n\ni would not assocate a lock with a user but with the reouce that is locked.\nwe coudl optionally assocate it with a service\n\ne.g. locked by nova, or heat\n\nto lock a share and set the service filed shoudl requrie the service role.\n\n\nit might also be good to be able to lock other resouce then just the share like an acess rule, share network or share snapshot?\n\nso i think i agree with haixin that a lock proably should be a top level resouce that takes a RESOURCE_TYPE, and  RESOURCE_UUID but also an optional OWNER_TYPE and OWNER_REF\n\nOWNER_TYPE would for the nova case be SERVICE\nand OWNER_REF woudl be a string i.e. nova\n\nif OWNER_TYPE\u003d\u003dserivce then the service role would be required\n\n\nif you wanted to supprot user or proejct locs you could hae\nOWNER_TYPE\u003duser or OWNER_TYPE\u003dproejct and the OWNER_REF could just be the uuid of the user/project.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2e461a0521baf3fbc9146c63eea746b447b2631c","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Users will have the ability to lock any share in the project. Multiple locks"},{"line_number":69,"context_line":"can be placed on the share. A share cannot be deleted unless all locks have"},{"line_number":70,"context_line":"been removed. Only the user that placed the lock, or the administrator user"},{"line_number":71,"context_line":"can remove a given lock. If a user attempts to lock a share that is previously"},{"line_number":72,"context_line":"locked by them, the API will not present an error. The lock record can be"},{"line_number":73,"context_line":"updated with a new lock reason or a different lock action."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The implementation of this feature will include generalizations for future"}],"source_content_type":"text/x-rst","patch_set":1,"id":"de85d754_4b9d113b","line":72,"range":{"start_line":70,"start_character":13,"end_line":72,"end_character":50},"in_reply_to":"4302d85d_4e13ee05","updated":"2023-06-15 17:38:54.000000000","message":"Done","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"645983b662aeeda912c2eb8db3ac16cdea667393","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Users will have the ability to lock any share in the project. Multiple locks"},{"line_number":69,"context_line":"can be placed on the share. A share cannot be deleted unless all locks have"},{"line_number":70,"context_line":"been removed. Only the user that placed the lock, or the administrator user"},{"line_number":71,"context_line":"can remove a given lock. If a user attempts to lock a share that is previously"},{"line_number":72,"context_line":"locked by them, the API will not present an error. The lock record can be"},{"line_number":73,"context_line":"updated with a new lock reason or a different lock action."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The implementation of this feature will include generalizations for future"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4302d85d_4e13ee05","line":72,"range":{"start_line":70,"start_character":13,"end_line":72,"end_character":50},"in_reply_to":"6e1b6710_1adac4b9","updated":"2023-06-06 19:34:29.000000000","message":"++ on the owner_type/lock_user_context + owner_ref approach","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6849d4bb3bda7fa9c0bea001d32b696ce8891a52","unresolved":false,"context_lines":[{"line_number":68,"context_line":"Users will have the ability to lock any share in the project. Multiple locks"},{"line_number":69,"context_line":"can be placed on the share. A share cannot be deleted unless all locks have"},{"line_number":70,"context_line":"been removed. Only the user that placed the lock, or the administrator user"},{"line_number":71,"context_line":"can remove a given lock. If a user attempts to lock a share that is previously"},{"line_number":72,"context_line":"locked by them, the API will not present an error. The lock record can be"},{"line_number":73,"context_line":"updated with a new lock reason or a different lock action."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The implementation of this feature will include generalizations for future"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3e87466e_9ae5027c","line":72,"range":{"start_line":71,"start_character":25,"end_line":72,"end_character":50},"in_reply_to":"7481b659_7e5d0fba","updated":"2023-05-30 02:22:47.000000000","message":"Done","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"214c3cd4aaebea67de94e9361fcb7320b8922db4","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Users will have the ability to lock any share in the project. Multiple locks"},{"line_number":69,"context_line":"can be placed on the share. A share cannot be deleted unless all locks have"},{"line_number":70,"context_line":"been removed. Only the user that placed the lock, or the administrator user"},{"line_number":71,"context_line":"can remove a given lock. If a user attempts to lock a share that is previously"},{"line_number":72,"context_line":"locked by them, the API will not present an error. The lock record can be"},{"line_number":73,"context_line":"updated with a new lock reason or a different lock action."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The implementation of this feature will include generalizations for future"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dbccdb00_4e151e17","line":72,"range":{"start_line":70,"start_character":13,"end_line":72,"end_character":50},"in_reply_to":"b5179b2a_18acdf6f","updated":"2023-05-18 23:33:39.000000000","message":"\u003e now they cannot delete the share with out fileing a support ticket\nto remvoe the lock.\n\nagreed; this is a good use case to allow a \"manager\" role in the project scope to delete locks on a project resource. That would still need us to identify the lock context, so we can prevent such a user from removing locks that are applied by a service role user. I think the \"OWNER_TYPE\" can help distinguish that for us. Instead of \"OWNER_TYPE\", can we call it \"lock_user_context\" - Enum(\u0027lock_user_context\u0027, [\u0027project\u0027, \u0027service\u0027])?","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"214c3cd4aaebea67de94e9361fcb7320b8922db4","unresolved":true,"context_lines":[{"line_number":68,"context_line":"Users will have the ability to lock any share in the project. Multiple locks"},{"line_number":69,"context_line":"can be placed on the share. A share cannot be deleted unless all locks have"},{"line_number":70,"context_line":"been removed. Only the user that placed the lock, or the administrator user"},{"line_number":71,"context_line":"can remove a given lock. If a user attempts to lock a share that is previously"},{"line_number":72,"context_line":"locked by them, the API will not present an error. The lock record can be"},{"line_number":73,"context_line":"updated with a new lock reason or a different lock action."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The implementation of this feature will include generalizations for future"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7481b659_7e5d0fba","line":72,"range":{"start_line":71,"start_character":25,"end_line":72,"end_character":50},"in_reply_to":"d291255f_46331fe9","updated":"2023-05-18 23:33:39.000000000","message":"I see; ack, we can query if the user already has a lock on the resource and return 409 if one exists.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6849d4bb3bda7fa9c0bea001d32b696ce8891a52","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Users will have the ability to lock any share in the project. Multiple locks"},{"line_number":69,"context_line":"can be placed on the share. A share cannot be deleted unless all locks have"},{"line_number":70,"context_line":"been removed. Only the user that placed the lock, or the administrator user"},{"line_number":71,"context_line":"can remove a given lock. If a user attempts to lock a share that is previously"},{"line_number":72,"context_line":"locked by them, the API will not present an error. The lock record can be"},{"line_number":73,"context_line":"updated with a new lock reason or a different lock action."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The implementation of this feature will include generalizations for future"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6e1b6710_1adac4b9","line":72,"range":{"start_line":70,"start_character":13,"end_line":72,"end_character":50},"in_reply_to":"dbccdb00_4e151e17","updated":"2023-05-30 02:22:47.000000000","message":"now they cannot delete the share with out fileing a support ticket\nto remvoe the lock.\n\nwhy not call the administrator user to remove the lock? Administrator user The user has the highest rights.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"645983b662aeeda912c2eb8db3ac16cdea667393","unresolved":true,"context_lines":[{"line_number":76,"context_line":"extensibility. The lock API will accept a resource ID, resource type, and"},{"line_number":77,"context_line":"a resource action that must be locked. In the 2023.2 Bobcat release cycle,"},{"line_number":78,"context_line":"we will only be implementing deletion locks for shares."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Alternatives"},{"line_number":81,"context_line":"------------"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"a1edd518_40aa13a1","line":79,"updated":"2023-06-06 19:34:29.000000000","message":"I was thinking about some actions that can be performed on shares, but it\u0027s more like a matter of connectivity to the share... In this case, I am referring to shares being unmanaged, migrated and promoted. \n\nThe share being unmanaged means that the share is no longer under manila management, but it does not mean that the share won\u0027t continue linked to an instance. Would a lock be a reason for us to do not allow the share to be unmanaged?\n\nThe share being migrated, most times mean that the export location for that share will likely change, and as soon as the migration phase 2 completes, the share would have a different export location and it would disrupt the mounts.\n\nAnd with replicated shares being promoted, it could end up in a situation like migration, where the export location for the share could change after the admin fails over.\n\nShare servers can also cause the disruption with share server migration.\n\nShould we block some of these operations for such shares entirely? I believe we could have some phrases talking about how we will deal with this situations in this spec. Could you please clarify?","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2e461a0521baf3fbc9146c63eea746b447b2631c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"extensibility. The lock API will accept a resource ID, resource type, and"},{"line_number":77,"context_line":"a resource action that must be locked. In the 2023.2 Bobcat release cycle,"},{"line_number":78,"context_line":"we will only be implementing deletion locks for shares."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Alternatives"},{"line_number":81,"context_line":"------------"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dc0c131b_f81548a8","line":79,"in_reply_to":"a1edd518_40aa13a1","updated":"2023-06-15 17:38:54.000000000","message":"unmanaging a share is expected to be non-disruptive to the data path, but i agree it would be a kind of \"deletion\". I was hoping we could deal with the rest of the cases over time.. but, atleast \"unmanage\" and \"soft-delete\" actions can be clubbed together and treated together. I\u0027ll clarify this.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7a884048c344d6157ee0bf7513409c1f0090da49","unresolved":true,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    {"},{"line_number":147,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":148,"context_line":"            \u0027resource_action\u0027: \u0027delete\u0027,"},{"line_number":149,"context_line":"            \u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":150,"context_line":"            \u0027resource_id\u0027: \u0027a448e0d2-7501-4b99-a447-1b89e3961e39\u0027,"},{"line_number":151,"context_line":"            \u0027lock_reason\u0027: \u0027share is used by audit team\u0027"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3143d6bf_801af520","line":148,"range":{"start_line":148,"start_character":32,"end_line":148,"end_character":38},"updated":"2023-05-05 07:59:05.000000000","message":"Are there any other actions besides delete. such as extend, shrink, migrate, soft-delete?","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"214c3cd4aaebea67de94e9361fcb7320b8922db4","unresolved":true,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    {"},{"line_number":147,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":148,"context_line":"            \u0027resource_action\u0027: \u0027delete\u0027,"},{"line_number":149,"context_line":"            \u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":150,"context_line":"            \u0027resource_id\u0027: \u0027a448e0d2-7501-4b99-a447-1b89e3961e39\u0027,"},{"line_number":151,"context_line":"            \u0027lock_reason\u0027: \u0027share is used by audit team\u0027"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8e9612_15a954bb","line":148,"range":{"start_line":148,"start_character":32,"end_line":148,"end_character":38},"in_reply_to":"3143d6bf_801af520","updated":"2023-05-18 23:33:39.000000000","message":"Not for this release; but that\u0027s the idea for extending this to other resource actions..","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6849d4bb3bda7fa9c0bea001d32b696ce8891a52","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    {"},{"line_number":147,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":148,"context_line":"            \u0027resource_action\u0027: \u0027delete\u0027,"},{"line_number":149,"context_line":"            \u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":150,"context_line":"            \u0027resource_id\u0027: \u0027a448e0d2-7501-4b99-a447-1b89e3961e39\u0027,"},{"line_number":151,"context_line":"            \u0027lock_reason\u0027: \u0027share is used by audit team\u0027"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ed930d0_decae7a1","line":148,"range":{"start_line":148,"start_character":32,"end_line":148,"end_character":38},"in_reply_to":"7a8e9612_15a954bb","updated":"2023-05-30 02:22:47.000000000","message":"Done","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7a884048c344d6157ee0bf7513409c1f0090da49","unresolved":true,"context_lines":[{"line_number":146,"context_line":"    {"},{"line_number":147,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":148,"context_line":"            \u0027resource_action\u0027: \u0027delete\u0027,"},{"line_number":149,"context_line":"            \u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":150,"context_line":"            \u0027resource_id\u0027: \u0027a448e0d2-7501-4b99-a447-1b89e3961e39\u0027,"},{"line_number":151,"context_line":"            \u0027lock_reason\u0027: \u0027share is used by audit team\u0027"},{"line_number":152,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0112b486_7c9785da","line":149,"range":{"start_line":149,"start_character":30,"end_line":149,"end_character":35},"updated":"2023-05-05 07:59:05.000000000","message":"do we also support share_snapshot? or other some resource type?\nshould we check resource type in api?","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"214c3cd4aaebea67de94e9361fcb7320b8922db4","unresolved":true,"context_lines":[{"line_number":146,"context_line":"    {"},{"line_number":147,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":148,"context_line":"            \u0027resource_action\u0027: \u0027delete\u0027,"},{"line_number":149,"context_line":"            \u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":150,"context_line":"            \u0027resource_id\u0027: \u0027a448e0d2-7501-4b99-a447-1b89e3961e39\u0027,"},{"line_number":151,"context_line":"            \u0027lock_reason\u0027: \u0027share is used by audit team\u0027"},{"line_number":152,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d005_038c8cca","line":149,"range":{"start_line":149,"start_character":30,"end_line":149,"end_character":35},"in_reply_to":"0112b486_7c9785da","updated":"2023-05-18 23:33:39.000000000","message":"Not for this release; but that\u0027s the idea for extending this to other resource types..","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6849d4bb3bda7fa9c0bea001d32b696ce8891a52","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    {"},{"line_number":147,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":148,"context_line":"            \u0027resource_action\u0027: \u0027delete\u0027,"},{"line_number":149,"context_line":"            \u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":150,"context_line":"            \u0027resource_id\u0027: \u0027a448e0d2-7501-4b99-a447-1b89e3961e39\u0027,"},{"line_number":151,"context_line":"            \u0027lock_reason\u0027: \u0027share is used by audit team\u0027"},{"line_number":152,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6fed6f11_70593f98","line":149,"range":{"start_line":149,"start_character":30,"end_line":149,"end_character":35},"in_reply_to":"3ae8d005_038c8cca","updated":"2023-05-30 02:22:47.000000000","message":"Done","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7a884048c344d6157ee0bf7513409c1f0090da49","unresolved":true,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    {"},{"line_number":200,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":201,"context_line":"            \u0027id\u0027: \u0027be0871e8-742e-4c19-8567-7016fa0e2235\u0027,"},{"line_number":202,"context_line":"            \u0027lock_reason\u0027: \u0027share will be used by audit team until 2024\u0027"},{"line_number":203,"context_line":"        }"},{"line_number":204,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"daa39a77_08a74f2e","line":201,"range":{"start_line":201,"start_character":12,"end_line":201,"end_character":57},"updated":"2023-05-05 07:59:05.000000000","message":"id has been specified in rest paramter. here the key may be\nresource_action.\n1: if no resource_action specified in body, means we will not update resource_action.\n2: if both resource_action and lock_reason not specified, will return 400.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6849d4bb3bda7fa9c0bea001d32b696ce8891a52","unresolved":true,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    {"},{"line_number":200,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":201,"context_line":"            \u0027id\u0027: \u0027be0871e8-742e-4c19-8567-7016fa0e2235\u0027,"},{"line_number":202,"context_line":"            \u0027lock_reason\u0027: \u0027share will be used by audit team until 2024\u0027"},{"line_number":203,"context_line":"        }"},{"line_number":204,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ebf7a08e_c7a4702d","line":201,"range":{"start_line":201,"start_character":12,"end_line":201,"end_character":57},"in_reply_to":"3ca04914_2a9f98b7","updated":"2023-05-30 02:22:47.000000000","message":"we need fix here.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"214c3cd4aaebea67de94e9361fcb7320b8922db4","unresolved":true,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    {"},{"line_number":200,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":201,"context_line":"            \u0027id\u0027: \u0027be0871e8-742e-4c19-8567-7016fa0e2235\u0027,"},{"line_number":202,"context_line":"            \u0027lock_reason\u0027: \u0027share will be used by audit team until 2024\u0027"},{"line_number":203,"context_line":"        }"},{"line_number":204,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ca04914_2a9f98b7","line":201,"range":{"start_line":201,"start_character":12,"end_line":201,"end_character":57},"in_reply_to":"daa39a77_08a74f2e","updated":"2023-05-18 23:33:39.000000000","message":"you\u0027re right! my bad. This has to be \"resource_action\" or nothing at all","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2e461a0521baf3fbc9146c63eea746b447b2631c","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    {"},{"line_number":200,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":201,"context_line":"            \u0027id\u0027: \u0027be0871e8-742e-4c19-8567-7016fa0e2235\u0027,"},{"line_number":202,"context_line":"            \u0027lock_reason\u0027: \u0027share will be used by audit team until 2024\u0027"},{"line_number":203,"context_line":"        }"},{"line_number":204,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c27caed7_4d9753c0","line":201,"range":{"start_line":201,"start_character":12,"end_line":201,"end_character":57},"in_reply_to":"ebf7a08e_c7a4702d","updated":"2023-06-15 17:38:54.000000000","message":"Done","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7a884048c344d6157ee0bf7513409c1f0090da49","unresolved":true,"context_lines":[{"line_number":320,"context_line":"    }"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"**Deleting a share that has locks**::"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    DELETE /v2/shares/{id}"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"073f7c2f_c3900247","line":323,"range":{"start_line":323,"start_character":2,"end_line":323,"end_character":10},"updated":"2023-05-05 07:59:05.000000000","message":"soft delete a share also need this lock check","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"214c3cd4aaebea67de94e9361fcb7320b8922db4","unresolved":true,"context_lines":[{"line_number":320,"context_line":"    }"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"**Deleting a share that has locks**::"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    DELETE /v2/shares/{id}"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bc51652f_99dc7745","line":323,"range":{"start_line":323,"start_character":2,"end_line":323,"end_character":10},"in_reply_to":"073f7c2f_c3900247","updated":"2023-05-18 23:33:39.000000000","message":"+1","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2e461a0521baf3fbc9146c63eea746b447b2631c","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    }"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"**Deleting a share that has locks**::"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    DELETE /v2/shares/{id}"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"4915a90a_c447d69b","line":323,"range":{"start_line":323,"start_character":2,"end_line":323,"end_character":10},"in_reply_to":"7483d108_8ee1baf8","updated":"2023-06-15 17:38:54.000000000","message":"Done","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6849d4bb3bda7fa9c0bea001d32b696ce8891a52","unresolved":true,"context_lines":[{"line_number":320,"context_line":"    }"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"**Deleting a share that has locks**::"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    DELETE /v2/shares/{id}"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7483d108_8ee1baf8","line":323,"range":{"start_line":323,"start_character":2,"end_line":323,"end_character":10},"in_reply_to":"bc51652f_99dc7745","updated":"2023-05-30 02:22:47.000000000","message":"need add this case here.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7a884048c344d6157ee0bf7513409c1f0090da49","unresolved":true,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":".. code-block:: bash"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"  openstack share lock create \u003cresource_id\u003e \u003cresource_action\u003e \\"},{"line_number":518,"context_line":"    [--resource-type \u003cresource_type\u003e] \\"},{"line_number":519,"context_line":"    [--reason \u003clock_reason\u003e}]"},{"line_number":520,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9291aece_57ea0555","line":517,"range":{"start_line":517,"start_character":45,"end_line":517,"end_character":60},"updated":"2023-05-05 07:59:05.000000000","message":"resource_action is not necessary paramter, if not specified, default is delete.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"214c3cd4aaebea67de94e9361fcb7320b8922db4","unresolved":true,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":".. code-block:: bash"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"  openstack share lock create \u003cresource_id\u003e \u003cresource_action\u003e \\"},{"line_number":518,"context_line":"    [--resource-type \u003cresource_type\u003e] \\"},{"line_number":519,"context_line":"    [--reason \u003clock_reason\u003e}]"},{"line_number":520,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"942096a8_d6c6e86b","line":517,"range":{"start_line":517,"start_character":45,"end_line":517,"end_character":60},"in_reply_to":"9291aece_57ea0555","updated":"2023-05-18 23:33:39.000000000","message":"okay; we can do that..","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2e461a0521baf3fbc9146c63eea746b447b2631c","unresolved":false,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":".. code-block:: bash"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"  openstack share lock create \u003cresource_id\u003e \u003cresource_action\u003e \\"},{"line_number":518,"context_line":"    [--resource-type \u003cresource_type\u003e] \\"},{"line_number":519,"context_line":"    [--reason \u003clock_reason\u003e}]"},{"line_number":520,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"88a9e723_a4508367","line":517,"range":{"start_line":517,"start_character":45,"end_line":517,"end_character":60},"in_reply_to":"942096a8_d6c6e86b","updated":"2023-06-15 17:38:54.000000000","message":"Done","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"7a884048c344d6157ee0bf7513409c1f0090da49","unresolved":true,"context_lines":[{"line_number":548,"context_line":"Performance Impact"},{"line_number":549,"context_line":"------------------"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"As we\u0027re introducing a new pre-condition on share deletion, the share delete"},{"line_number":552,"context_line":"API will suffer performance degradation due to the additional lookup. It\u0027s"},{"line_number":553,"context_line":"not possible to avoid this lookup even when locks are not used in the"},{"line_number":554,"context_line":"environment. We\u0027ll optimize the query by using appropriate indices. In the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f4c6ec6d_1f0354b5","line":551,"range":{"start_line":551,"start_character":44,"end_line":551,"end_character":58},"updated":"2023-05-05 07:59:05.000000000","message":"and share soft deletion.","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":548,"context_line":"Performance Impact"},{"line_number":549,"context_line":"------------------"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"As we\u0027re introducing a new pre-condition on share deletion, the share delete"},{"line_number":552,"context_line":"API will suffer performance degradation due to the additional lookup. It\u0027s"},{"line_number":553,"context_line":"not possible to avoid this lookup even when locks are not used in the"},{"line_number":554,"context_line":"environment. We\u0027ll optimize the query by using appropriate indices. In the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"61fff35e_e2b40c71","line":551,"range":{"start_line":551,"start_character":44,"end_line":551,"end_character":58},"in_reply_to":"e6768903_c207f295","updated":"2023-06-30 07:13:30.000000000","message":"Done","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"214c3cd4aaebea67de94e9361fcb7320b8922db4","unresolved":true,"context_lines":[{"line_number":548,"context_line":"Performance Impact"},{"line_number":549,"context_line":"------------------"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"As we\u0027re introducing a new pre-condition on share deletion, the share delete"},{"line_number":552,"context_line":"API will suffer performance degradation due to the additional lookup. It\u0027s"},{"line_number":553,"context_line":"not possible to avoid this lookup even when locks are not used in the"},{"line_number":554,"context_line":"environment. We\u0027ll optimize the query by using appropriate indices. In the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e6768903_c207f295","line":551,"range":{"start_line":551,"start_character":44,"end_line":551,"end_character":58},"in_reply_to":"f4c6ec6d_1f0354b5","updated":"2023-05-18 23:33:39.000000000","message":"+1","commit_id":"d469d5e4e2242618435add2e01ed7bd91b5a6f7e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"725b2c72f207a15f9f6e1494eccbfda6cdb14e17","unresolved":true,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"The implementation of this feature will include generalizations for future"},{"line_number":82,"context_line":"extensibility. The lock API will accept a resource ID, resource type, and"},{"line_number":83,"context_line":"a resource action that must be locked. In the 2023.2 Bobcat release cycle,"},{"line_number":84,"context_line":"we will only be implementing deletion locks for shares."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Alternatives"},{"line_number":87,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f4fd6f26_98df0d13","line":84,"range":{"start_line":83,"start_character":39,"end_line":84,"end_character":55},"updated":"2023-06-15 19:15:36.000000000","message":"for nova\u0027s usecase we need to be abel to lock two resouces.\n\nthe share and the grant assuming you cna delete a share if it has grants.\n\ndeleting the access grant that is used to export the share to a host or the share ite self would both be a security issue so we need the lock on the grant to either block the deletion of the share or we need to be able to lock both.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"The implementation of this feature will include generalizations for future"},{"line_number":82,"context_line":"extensibility. The lock API will accept a resource ID, resource type, and"},{"line_number":83,"context_line":"a resource action that must be locked. In the 2023.2 Bobcat release cycle,"},{"line_number":84,"context_line":"we will only be implementing deletion locks for shares."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Alternatives"},{"line_number":87,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"a87277dc_852d2306","line":84,"range":{"start_line":83,"start_character":39,"end_line":84,"end_character":55},"in_reply_to":"f4fd6f26_98df0d13","updated":"2023-06-30 07:13:30.000000000","message":"ack;","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"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":"1da643c69a45ec79d4890408a39d7a9fc16a0a6c","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        | ID                | varchar(36)                | NO       | NULL     |"},{"line_number":106,"context_line":"        | USER_ID           | varchar(36)                | YES      | NULL     |"},{"line_number":107,"context_line":"        | PROJECT_ID        | varchar(36)                | YES      | NULL     |"},{"line_number":108,"context_line":"        | RESOURCE_ACTION   | varchar(255)               | YES      | \u0027delete\u0027 |"},{"line_number":109,"context_line":"        | RESOURCE_TYPE     | varchar(255)               | YES      | NULL     |"},{"line_number":110,"context_line":"        | RESOURCE_ID       | varchar(36)                | NO       | NULL     |"},{"line_number":111,"context_line":"        | LOCK_USER_CONTEXT | Enum(\u0027project\u0027, \u0027service\u0027) | YES      | NULL     |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ce66924e_fd7e49a5","line":108,"range":{"start_line":108,"start_character":10,"end_line":108,"end_character":25},"updated":"2023-06-27 20:27:58.000000000","message":"Since this represents possible and pre-existing actions (create, delete, etc), would it be worth it to be an Enum, in order to avoid possible typing errors or even facilitate future queries?","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        | ID                | varchar(36)                | NO       | NULL     |"},{"line_number":106,"context_line":"        | USER_ID           | varchar(36)                | YES      | NULL     |"},{"line_number":107,"context_line":"        | PROJECT_ID        | varchar(36)                | YES      | NULL     |"},{"line_number":108,"context_line":"        | RESOURCE_ACTION   | varchar(255)               | YES      | \u0027delete\u0027 |"},{"line_number":109,"context_line":"        | RESOURCE_TYPE     | varchar(255)               | YES      | NULL     |"},{"line_number":110,"context_line":"        | RESOURCE_ID       | varchar(36)                | NO       | NULL     |"},{"line_number":111,"context_line":"        | LOCK_USER_CONTEXT | Enum(\u0027project\u0027, \u0027service\u0027) | YES      | NULL     |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e9c1ce34_4e692728","line":108,"range":{"start_line":108,"start_character":10,"end_line":108,"end_character":25},"in_reply_to":"ce66924e_fd7e49a5","updated":"2023-06-30 07:13:30.000000000","message":"Yes, it will be implemented as an enum; I clarified this below.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"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":"1da643c69a45ec79d4890408a39d7a9fc16a0a6c","unresolved":true,"context_lines":[{"line_number":110,"context_line":"        | RESOURCE_ID       | varchar(36)                | NO       | NULL     |"},{"line_number":111,"context_line":"        | LOCK_USER_CONTEXT | Enum(\u0027project\u0027, \u0027service\u0027) | YES      | NULL     |"},{"line_number":112,"context_line":"        | LOCK_REASON       | varchar(1023)              | YES      | NULL     |"},{"line_number":113,"context_line":"        | DELETED           | tinyint(1)                 | YES      | NULL     |"},{"line_number":114,"context_line":"        | CREATED_AT        | datetime(6)                | YES      | NULL     |"},{"line_number":115,"context_line":"        | DELETED_AT        | datetime(6)                | YES      | NULL     |"},{"line_number":116,"context_line":"        | UPDATED_AT        | datetime(6)                | YES      | NULL     |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fe139cd7_648bf743","line":113,"range":{"start_line":113,"start_character":10,"end_line":113,"end_character":17},"updated":"2023-06-27 20:27:58.000000000","message":"Maybe it could have a default value equivalent to false to avoid a \"boolean\" field with null value. It also can help on future queries filtering.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        | RESOURCE_ID       | varchar(36)                | NO       | NULL     |"},{"line_number":111,"context_line":"        | LOCK_USER_CONTEXT | Enum(\u0027project\u0027, \u0027service\u0027) | YES      | NULL     |"},{"line_number":112,"context_line":"        | LOCK_REASON       | varchar(1023)              | YES      | NULL     |"},{"line_number":113,"context_line":"        | DELETED           | tinyint(1)                 | YES      | NULL     |"},{"line_number":114,"context_line":"        | CREATED_AT        | datetime(6)                | YES      | NULL     |"},{"line_number":115,"context_line":"        | DELETED_AT        | datetime(6)                | YES      | NULL     |"},{"line_number":116,"context_line":"        | UPDATED_AT        | datetime(6)                | YES      | NULL     |"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e4e4c864_804aeb97","line":113,"range":{"start_line":113,"start_character":10,"end_line":113,"end_character":17},"in_reply_to":"fe139cd7_648bf743","updated":"2023-06-30 07:13:30.000000000","message":"i started implemehting this, and realized that we soft-delete database entries, so this had to be varchar(36) for that logic to work, the default will be \"false\"","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae5ac8b4d65d07bb48c4da8a3b6c5513e7f17078","unresolved":true,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Normal http response code(s):"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"- 204 - Lock created successfully"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Expected http error code(s):"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"b143ff9c_c276ae41","line":138,"range":{"start_line":138,"start_character":0,"end_line":138,"end_character":33},"updated":"2023-06-15 18:59:55.000000000","message":"204 \"no content\" means that the responce has no body.\nhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204#compatibility_notes","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Normal http response code(s):"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"- 204 - Lock created successfully"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Expected http error code(s):"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"0dc87423_00d8fddb","line":138,"range":{"start_line":138,"start_character":0,"end_line":138,"end_character":33},"in_reply_to":"b143ff9c_c276ae41","updated":"2023-06-30 07:13:30.000000000","message":"Thanks; 200 would be more appropriate since we\u0027re returning content","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"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":"1da643c69a45ec79d4890408a39d7a9fc16a0a6c","unresolved":true,"context_lines":[{"line_number":142,"context_line":"- 401 - Unauthorized; user has not authenticated"},{"line_number":143,"context_line":"- 400 - Bad Request"},{"line_number":144,"context_line":"- 400 - Unrecognized action on resource"},{"line_number":145,"context_line":"- 400 - Unrecognized resource (no such resource in project namespace)"},{"line_number":146,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":147,"context_line":"- 404 - API does not exist in micro version"},{"line_number":148,"context_line":"- 406 - API version not supported"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f90d970f_3ce5ea0f","line":145,"range":{"start_line":145,"start_character":2,"end_line":145,"end_character":29},"updated":"2023-06-27 20:27:58.000000000","message":"As Sean pointed on PUT, I think it is a 404 code when requested resource is not found [0]. Maybe it\u0027s better to separate unrecognized action item from unrecognized resource, so can use different status code. This can also be done in PUT endpoint. WDYT?\n\n[0] https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":142,"context_line":"- 401 - Unauthorized; user has not authenticated"},{"line_number":143,"context_line":"- 400 - Bad Request"},{"line_number":144,"context_line":"- 400 - Unrecognized action on resource"},{"line_number":145,"context_line":"- 400 - Unrecognized resource (no such resource in project namespace)"},{"line_number":146,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":147,"context_line":"- 404 - API does not exist in micro version"},{"line_number":148,"context_line":"- 406 - API version not supported"}],"source_content_type":"text/x-rst","patch_set":2,"id":"357d9a71_6a644675","line":145,"range":{"start_line":145,"start_character":2,"end_line":145,"end_character":29},"in_reply_to":"5daca88e_0c5b1c56","updated":"2023-06-30 07:13:30.000000000","message":"Thanks; The resource that is invalid/not-found is in the request body; 404 would be appropriate if it was in the URL","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"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":"e80e5439e596750f9f4d7a5e64040ef522b61096","unresolved":true,"context_lines":[{"line_number":142,"context_line":"- 401 - Unauthorized; user has not authenticated"},{"line_number":143,"context_line":"- 400 - Bad Request"},{"line_number":144,"context_line":"- 400 - Unrecognized action on resource"},{"line_number":145,"context_line":"- 400 - Unrecognized resource (no such resource in project namespace)"},{"line_number":146,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":147,"context_line":"- 404 - API does not exist in micro version"},{"line_number":148,"context_line":"- 406 - API version not supported"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5daca88e_0c5b1c56","line":145,"range":{"start_line":145,"start_character":2,"end_line":145,"end_character":29},"in_reply_to":"f90d970f_3ce5ea0f","updated":"2023-06-27 20:58:31.000000000","message":"I misread the \"Unrecognized action on resource\" item (I thought it was \"or\"), so ignore the second part of this comment.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae5ac8b4d65d07bb48c4da8a3b6c5513e7f17078","unresolved":true,"context_lines":[{"line_number":145,"context_line":"- 400 - Unrecognized resource (no such resource in project namespace)"},{"line_number":146,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":147,"context_line":"- 404 - API does not exist in micro version"},{"line_number":148,"context_line":"- 406 - API version not supported"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Request example::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"eb82d351_4a6efd71","line":148,"range":{"start_line":148,"start_character":0,"end_line":148,"end_character":33},"updated":"2023-06-15 18:59:55.000000000","message":"this is an incorrect use fo the 406 http code\n\nhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406\n\nthis is used when the client sends an accpet header specifying a format that the server cant support\n\ni.e. the cleint requests text/json but the server only support text/xml\n\nthis should just be a 400 bad request.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":145,"context_line":"- 400 - Unrecognized resource (no such resource in project namespace)"},{"line_number":146,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":147,"context_line":"- 404 - API does not exist in micro version"},{"line_number":148,"context_line":"- 406 - API version not supported"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Request example::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1bd97c65_566f3182","line":148,"range":{"start_line":148,"start_character":0,"end_line":148,"end_character":33},"in_reply_to":"eb82d351_4a6efd71","updated":"2023-06-30 07:13:30.000000000","message":"Done","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae5ac8b4d65d07bb48c4da8a3b6c5513e7f17078","unresolved":true,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Response example::"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    {"},{"line_number":166,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":167,"context_line":"            \u0027id\u0027: \u0027be0871e8-742e-4c19-8567-7016fa0e2235\u0027,"},{"line_number":168,"context_line":"            \u0027user_id\u0027: \u0027cec1dd3e297b45348228f4fc3f5dba38\u0027,"},{"line_number":169,"context_line":"            \u0027project_id\u0027: \u00272e47ac4e2cf04a5b8b8509de8177d65d\u0027,"},{"line_number":170,"context_line":"            \u0027resource_action\u0027: \u0027delete\u0027,"},{"line_number":171,"context_line":"            \u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":172,"context_line":"            \u0027resource_id\u0027: \u0027a448e0d2-7501-4b99-a447-1b89e3961e39\u0027,"},{"line_number":173,"context_line":"            \u0027lock_reason\u0027: \u0027share is used by audit team\u0027,"},{"line_number":174,"context_line":"            \u0027created_at\u0027: \u00272023-04-28T09:49:58-05:00\u0027,"},{"line_number":175,"context_line":"            \u0027updated_at\u0027: None"},{"line_number":176,"context_line":"        }"},{"line_number":177,"context_line":"    }"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"**Update a resource lock**::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9821bda4_c98bb7b7","line":177,"range":{"start_line":165,"start_character":0,"end_line":177,"end_character":5},"updated":"2023-06-15 18:59:55.000000000","message":"so if you want this to be the responce body you need to change the responce code form \n204 to 201 created\n\nhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201\nhttps://www.rfc-editor.org/rfc/rfc9110#status.201\nhttps://www.rfc-editor.org/rfc/rfc2616#section-10.2.2\n\naltehrnitivly you could use a 200\nhttps://www.rfc-editor.org/rfc/rfc9110#status.200\nhttps://www.rfc-editor.org/rfc/rfc2616#section-10.2.1\n\nPOST   an entity describing or containing the result of the action;\n\nbut 204 should never have a responce body.\nhttps://www.rfc-editor.org/rfc/rfc2616#section-10.2.5\n\n\"\"\"\nThe 204 response MUST NOT include a message-body, and thus is always\n   terminated by the first empty line after the header fields.\n\"\"\"","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Response example::"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    {"},{"line_number":166,"context_line":"        \u0027resource_lock\u0027: {"},{"line_number":167,"context_line":"            \u0027id\u0027: \u0027be0871e8-742e-4c19-8567-7016fa0e2235\u0027,"},{"line_number":168,"context_line":"            \u0027user_id\u0027: \u0027cec1dd3e297b45348228f4fc3f5dba38\u0027,"},{"line_number":169,"context_line":"            \u0027project_id\u0027: \u00272e47ac4e2cf04a5b8b8509de8177d65d\u0027,"},{"line_number":170,"context_line":"            \u0027resource_action\u0027: \u0027delete\u0027,"},{"line_number":171,"context_line":"            \u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":172,"context_line":"            \u0027resource_id\u0027: \u0027a448e0d2-7501-4b99-a447-1b89e3961e39\u0027,"},{"line_number":173,"context_line":"            \u0027lock_reason\u0027: \u0027share is used by audit team\u0027,"},{"line_number":174,"context_line":"            \u0027created_at\u0027: \u00272023-04-28T09:49:58-05:00\u0027,"},{"line_number":175,"context_line":"            \u0027updated_at\u0027: None"},{"line_number":176,"context_line":"        }"},{"line_number":177,"context_line":"    }"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"**Update a resource lock**::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dc8548cd_5bcb4558","line":177,"range":{"start_line":165,"start_character":0,"end_line":177,"end_character":5},"in_reply_to":"9821bda4_c98bb7b7","updated":"2023-06-30 07:13:30.000000000","message":"Done; thanks for the links and the explanation!","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae5ac8b4d65d07bb48c4da8a3b6c5513e7f17078","unresolved":true,"context_lines":[{"line_number":195,"context_line":"- 401 - Unauthorized; user has not authenticated"},{"line_number":196,"context_line":"- 400 - Bad Request"},{"line_number":197,"context_line":"- 400 - Unrecognized action on resource"},{"line_number":198,"context_line":"- 400 - Unrecognized resource (no such resource in project namespace)"},{"line_number":199,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":200,"context_line":"- 404 - API does not exist in micro version"},{"line_number":201,"context_line":"- 404 - lock does not exist in project namespace"}],"source_content_type":"text/x-rst","patch_set":2,"id":"4f639028_4fc90421","line":198,"range":{"start_line":198,"start_character":2,"end_line":198,"end_character":5},"updated":"2023-06-15 18:59:55.000000000","message":"that proably should be a 404","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":195,"context_line":"- 401 - Unauthorized; user has not authenticated"},{"line_number":196,"context_line":"- 400 - Bad Request"},{"line_number":197,"context_line":"- 400 - Unrecognized action on resource"},{"line_number":198,"context_line":"- 400 - Unrecognized resource (no such resource in project namespace)"},{"line_number":199,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":200,"context_line":"- 404 - API does not exist in micro version"},{"line_number":201,"context_line":"- 404 - lock does not exist in project namespace"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f109dd15_000a3dee","line":198,"range":{"start_line":198,"start_character":2,"end_line":198,"end_character":5},"in_reply_to":"4f639028_4fc90421","updated":"2023-06-30 07:13:30.000000000","message":"i need to remove this; the \"resource_id\" isn\u0027t permitted in the request body..","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae5ac8b4d65d07bb48c4da8a3b6c5513e7f17078","unresolved":true,"context_lines":[{"line_number":199,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":200,"context_line":"- 404 - API does not exist in micro version"},{"line_number":201,"context_line":"- 404 - lock does not exist in project namespace"},{"line_number":202,"context_line":"- 406 - API version not supported"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Request example::"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"b75e81b9_a8edda03","line":202,"updated":"2023-06-15 18:59:55.000000000","message":"as above this should be a 400 badd request or a 404 since that api virsion does not exist","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":199,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":200,"context_line":"- 404 - API does not exist in micro version"},{"line_number":201,"context_line":"- 404 - lock does not exist in project namespace"},{"line_number":202,"context_line":"- 406 - API version not supported"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Request example::"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"47afac1b_3e3cc18b","line":202,"in_reply_to":"b75e81b9_a8edda03","updated":"2023-06-30 07:13:30.000000000","message":"Done; dropping 406 everywhere","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"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":"1da643c69a45ec79d4890408a39d7a9fc16a0a6c","unresolved":true,"context_lines":[{"line_number":227,"context_line":"    }"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"**Delete a resource lock for a particular action**::"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    DELETE /v2/resource-locks/{id}"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fdff97ca_5e471930","line":230,"range":{"start_line":230,"start_character":2,"end_line":230,"end_character":48},"updated":"2023-06-27 20:27:58.000000000","message":"Perhaps there is some implicit specs pattern, and this is a silly/unnecessary suggestion, but I guess it could have described here the behavior (or what is accepted) in the database, as it was done in the PUT. I\u0027m assuming it is a logical deletion because of the DELETED field on table, so it is expected that only change this field.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":227,"context_line":"    }"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"**Delete a resource lock for a particular action**::"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    DELETE /v2/resource-locks/{id}"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"940f02c4_784a31e3","line":230,"range":{"start_line":230,"start_character":2,"end_line":230,"end_character":48},"in_reply_to":"fdff97ca_5e471930","updated":"2023-06-30 07:13:30.000000000","message":"You mean the request and response schema? If yes, this DELETE method doesn\u0027t permit any body nor does it return any response body.. its stated after the Expected http error code(s) below..","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae5ac8b4d65d07bb48c4da8a3b6c5513e7f17078","unresolved":true,"context_lines":[{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Normal http response code(s):"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"- 204 - Lock deleted successfully"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Expected http error code(s):"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5895c914_3b5aa467","line":239,"updated":"2023-06-15 18:59:55.000000000","message":"204 is accptable for a delete provided this is a blocking call and it does not return until after the lock is deleted.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Normal http response code(s):"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"- 204 - Lock deleted successfully"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Expected http error code(s):"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"d1566c0a_5314815b","line":239,"in_reply_to":"5895c914_3b5aa467","updated":"2023-06-30 07:13:30.000000000","message":"Done","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae5ac8b4d65d07bb48c4da8a3b6c5513e7f17078","unresolved":true,"context_lines":[{"line_number":245,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":246,"context_line":"- 404 - API does not exist in microversion"},{"line_number":247,"context_line":"- 404 - lock does not exist in project namespace"},{"line_number":248,"context_line":"- 406 - API version not supported"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Request and response do not contain any data"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"0170b7c3_e5d7d670","line":248,"updated":"2023-06-15 18:59:55.000000000","message":"again this is an abuse of the 406 code which is present in most of the endpoints.\n\nso I wont repeat this but we should not give semantic meaning to 406 response code in any OpenStack api.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":245,"context_line":"- 403 - Forbidden; user is forbidden by policy"},{"line_number":246,"context_line":"- 404 - API does not exist in microversion"},{"line_number":247,"context_line":"- 404 - lock does not exist in project namespace"},{"line_number":248,"context_line":"- 406 - API version not supported"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Request and response do not contain any data"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ee277231_07421593","line":248,"in_reply_to":"0170b7c3_e5d7d670","updated":"2023-06-30 07:13:30.000000000","message":"Done","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"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":"1da643c69a45ec79d4890408a39d7a9fc16a0a6c","unresolved":true,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    GET /v2/resource-locks?{queries}"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Queries will allow filtering with exact and inexact (\"created_since\","},{"line_number":257,"context_line":"\"created_before\") attributes. Querying with \"project_id\" or \"all_projects\""},{"line_number":258,"context_line":"will only be allowed for a user with \"admin\" role per default RBAC policy."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"Normal http response code(s):"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e6916a1c_a0a51b53","line":257,"range":{"start_line":256,"start_character":19,"end_line":257,"end_character":28},"updated":"2023-06-27 20:27:58.000000000","message":"As I said, I\u0027m assuming that lock delete endpoint is a logical delete. So, it could be filter by DELETED field too, since could be useful to get only the active locks.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    GET /v2/resource-locks?{queries}"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Queries will allow filtering with exact and inexact (\"created_since\","},{"line_number":257,"context_line":"\"created_before\") attributes. Querying with \"project_id\" or \"all_projects\""},{"line_number":258,"context_line":"will only be allowed for a user with \"admin\" role per default RBAC policy."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"Normal http response code(s):"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e11a2d19_b3ee179d","line":257,"range":{"start_line":256,"start_character":19,"end_line":257,"end_character":28},"in_reply_to":"e6916a1c_a0a51b53","updated":"2023-06-30 07:13:30.000000000","message":"Deleted records aren\u0027t accessible via the API.. these would only be viewable by performing a db dump; and one may do that for audit purposes..","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae5ac8b4d65d07bb48c4da8a3b6c5513e7f17078","unresolved":true,"context_lines":[{"line_number":333,"context_line":"Normal http response code(s):"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"- 202 - No locks exist and all other pre-conditions allow, accepted"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"Expected http error code(s):"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"- 401 - Unauthorized; user has not authenticated"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0d55a987_a9be181b","line":336,"updated":"2023-06-15 18:59:55.000000000","message":"so this is an aync operation correct.","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cf20651f8b6030d5045550c3a0ebd9c3afd49cf3","unresolved":false,"context_lines":[{"line_number":333,"context_line":"Normal http response code(s):"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"- 202 - No locks exist and all other pre-conditions allow, accepted"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"Expected http error code(s):"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"- 401 - Unauthorized; user has not authenticated"}],"source_content_type":"text/x-rst","patch_set":2,"id":"a1323978_5643b8bf","line":336,"in_reply_to":"0d55a987_a9be181b","updated":"2023-06-30 07:13:30.000000000","message":"yes, share deletion is async..","commit_id":"db6ae3f55811a8a338d974077a36a1b5bfa8dab3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4b7c5f3ef4bf1df5ae0cd4dfb4d1c33b90006f88","unresolved":true,"context_lines":[{"line_number":79,"context_line":"if a service token is provided, the lock created cannot be removed by the"},{"line_number":80,"context_line":"user. Only a service user, or a user with \"admin\" role can remove or update"},{"line_number":81,"context_line":"the lock."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The implementation of this feature will include generalizations for future"},{"line_number":84,"context_line":"extensibility. The lock API will accept a resource ID, resource type, and"},{"line_number":85,"context_line":"a resource action that must be locked. In the 2023.2 Bobcat release cycle,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"f2174dc8_974d9bac","line":82,"updated":"2023-07-03 08:29:07.000000000","message":"+1","commit_id":"415e52dacbcf6ee4bc3e5332f0fbbf000605acec"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bfea844724fadf039f4799a299d2df22956ac977","unresolved":false,"context_lines":[{"line_number":79,"context_line":"if a service token is provided, the lock created cannot be removed by the"},{"line_number":80,"context_line":"user. Only a service user, or a user with \"admin\" role can remove or update"},{"line_number":81,"context_line":"the lock."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The implementation of this feature will include generalizations for future"},{"line_number":84,"context_line":"extensibility. The lock API will accept a resource ID, resource type, and"},{"line_number":85,"context_line":"a resource action that must be locked. In the 2023.2 Bobcat release cycle,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"cc680392_fd892108","line":82,"in_reply_to":"f2174dc8_974d9bac","updated":"2023-07-05 14:45:57.000000000","message":"++","commit_id":"415e52dacbcf6ee4bc3e5332f0fbbf000605acec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4b7c5f3ef4bf1df5ae0cd4dfb4d1c33b90006f88","unresolved":true,"context_lines":[{"line_number":84,"context_line":"extensibility. The lock API will accept a resource ID, resource type, and"},{"line_number":85,"context_line":"a resource action that must be locked. In the 2023.2 Bobcat release cycle,"},{"line_number":86,"context_line":"we will only be implementing deletion locks for shares."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Alternatives"},{"line_number":89,"context_line":"------------"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"a4fa7849_a4813f31","line":87,"updated":"2023-07-03 08:29:07.000000000","message":"for the nova usecase again i think we need the share and the share access grant to be lockable.\n\nallowing deletion of either would be security issue.","commit_id":"415e52dacbcf6ee4bc3e5332f0fbbf000605acec"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bfea844724fadf039f4799a299d2df22956ac977","unresolved":false,"context_lines":[{"line_number":84,"context_line":"extensibility. The lock API will accept a resource ID, resource type, and"},{"line_number":85,"context_line":"a resource action that must be locked. In the 2023.2 Bobcat release cycle,"},{"line_number":86,"context_line":"we will only be implementing deletion locks for shares."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Alternatives"},{"line_number":89,"context_line":"------------"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"97728348_462a041d","line":87,"in_reply_to":"50757b0e_e87fd841","updated":"2023-07-05 14:45:57.000000000","message":"+1; i\u0027ll update the access rule restrictions spec (https://review.opendev.org/c/openstack/manila-specs/+/881934) - ended up simplifying the design with changes in this spec.","commit_id":"415e52dacbcf6ee4bc3e5332f0fbbf000605acec"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"a9631636e262fd7fb3c0b07cbf0641ec5ee350c6","unresolved":true,"context_lines":[{"line_number":84,"context_line":"extensibility. The lock API will accept a resource ID, resource type, and"},{"line_number":85,"context_line":"a resource action that must be locked. In the 2023.2 Bobcat release cycle,"},{"line_number":86,"context_line":"we will only be implementing deletion locks for shares."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Alternatives"},{"line_number":89,"context_line":"------------"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"50757b0e_e87fd841","line":87,"in_reply_to":"a4fa7849_a4813f31","updated":"2023-07-04 18:05:41.000000000","message":"+1 on it being a security issue, I think when we look at the whole requirement for VirtioFS (having locks for shares + access rules) this part can sound confusing:\n\u003e In the 2023.2 Bobcat release cycle, we will only be implementing deletion locks for shares.\n\nBut if I understand correctly, with this statement Goutham means that we are targeting only lock for shares, and not other resources (share snapshots, share replicas and so on).\nI just realized that we should mention we are targeting the lock for access rules for Bobcat in the other spec (Access rule visibility and deletion restrictions), but that\u0027s already our goal.","commit_id":"415e52dacbcf6ee4bc3e5332f0fbbf000605acec"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4b7c5f3ef4bf1df5ae0cd4dfb4d1c33b90006f88","unresolved":true,"context_lines":[{"line_number":122,"context_line":"The table will assist storing lock records and will be manipulated as locks"},{"line_number":123,"context_line":"are created, updated and removed. A database migration will create this table"},{"line_number":124,"context_line":"with no initial data. The `LOCK_USER_CONTEXT` field will permit \"user\","},{"line_number":125,"context_line":"\"service\" and \"admin\" via enum. `RESOURCE_TYPE` and `RESOURCE_ACTION` fields"},{"line_number":126,"context_line":"will also be limited by enum constants to supported resource types and"},{"line_number":127,"context_line":"resource actions."},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"0c2f9781_214fb953","line":125,"range":{"start_line":125,"start_character":9,"end_line":125,"end_character":30},"updated":"2023-07-03 08:29:07.000000000","message":"nit: i think you forgot to remove this or update the table","commit_id":"415e52dacbcf6ee4bc3e5332f0fbbf000605acec"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"a9631636e262fd7fb3c0b07cbf0641ec5ee350c6","unresolved":true,"context_lines":[{"line_number":122,"context_line":"The table will assist storing lock records and will be manipulated as locks"},{"line_number":123,"context_line":"are created, updated and removed. A database migration will create this table"},{"line_number":124,"context_line":"with no initial data. The `LOCK_USER_CONTEXT` field will permit \"user\","},{"line_number":125,"context_line":"\"service\" and \"admin\" via enum. `RESOURCE_TYPE` and `RESOURCE_ACTION` fields"},{"line_number":126,"context_line":"will also be limited by enum constants to supported resource types and"},{"line_number":127,"context_line":"resource actions."},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3cbd1bee_771e1bc9","line":125,"range":{"start_line":125,"start_character":9,"end_line":125,"end_character":30},"in_reply_to":"0c2f9781_214fb953","updated":"2023-07-04 18:05:41.000000000","message":"+1","commit_id":"415e52dacbcf6ee4bc3e5332f0fbbf000605acec"}]}
